feat: Add user deletion capability for admins, add WhiteNoise for Django admin static assets, and configure CSRF_TRUSTED_ORIGINS for production reverse proxies
This commit is contained in:
@@ -157,6 +157,22 @@ export default function AdminPage({ branding, onRefreshBranding, onRefreshEvents
|
||||
}
|
||||
};
|
||||
|
||||
const handleDeleteUser = async (userObj) => {
|
||||
if (!window.confirm(`Möchtest du das Benutzerkonto "${userObj.display_name || userObj.username}" (@${userObj.username}) wirklich dauerhaft löschen?`)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await apiFetch(`/users/manage-users/${userObj.id}/`, {
|
||||
method: 'DELETE'
|
||||
});
|
||||
setUsersList(usersList.filter(u => u.id !== userObj.id));
|
||||
showNotif(`Benutzerkonto ${userObj.username} wurde gelöscht.`);
|
||||
} catch (e) {
|
||||
setError(e.message || 'Fehler beim Löschen des Benutzers.');
|
||||
}
|
||||
};
|
||||
|
||||
const handleApprovePendingUser = async (userId) => {
|
||||
try {
|
||||
await apiFetch(`/users/${userId}/approve/`, { method: 'POST' });
|
||||
@@ -549,6 +565,13 @@ export default function AdminPage({ branding, onRefreshBranding, onRefreshEvents
|
||||
>
|
||||
{u.is_admin_user ? 'Admin entziehen' : 'Zu Admin machen'}
|
||||
</button>
|
||||
<button
|
||||
onClick={() => handleDeleteUser(u)}
|
||||
className="px-2 py-1 rounded-sm text-[10px] bg-red-500/10 hover:bg-red-500/20 border border-red-500/20 text-red-400 font-bold transition inline-flex items-center gap-1"
|
||||
title="Benutzerkonto dauerhaft löschen"
|
||||
>
|
||||
<Trash2 className="w-3 h-3" /> Löschen
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
|
||||
Reference in New Issue
Block a user