@page "/admin/users"
@rendermode InteractiveServer
@attribute [Authorize(Policy = "AdminOnly")]
@inject AuthService AuthService
@inject ISnackbar Snackbar
@inject AuthenticationStateProvider AuthStateProvider
Benutzerverwaltung – Timetracker
@if (_loading)
{
Lade Benutzer…
}
else
{
@* ── Header ── *@
Benutzerverwaltung
@_users.Count Benutzer registriert
@* ── Tabelle ── *@
ID
Benutzername
Aktionen
@context.Id
@if (_editUserId == context.Id)
{
}
else
{
@context.Username
@if (context.Username == "marc")
{
Admin
}
}
@if (_editUserId == context.Id)
{
}
else
{
@if (context.Username != "marc")
{
}
}
Keine Benutzer gefunden.
}
@code {
private List _users = [];
private bool _loading = true;
private int? _editUserId;
private string _editUsername = "";
protected override async Task OnInitializedAsync()
{
var claim = (await AuthStateProvider.GetAuthenticationStateAsync())
.User.FindFirst(ClaimTypes.NameIdentifier);
if (claim == null) return;
_users = await AuthService.GetAllUsersAsync();
_loading = false;
}
private void StartEdit(User user)
{
_editUserId = user.Id;
_editUsername = user.Username;
}
private void CancelEdit()
{
_editUserId = null;
_editUsername = "";
}
private async Task SaveRename(User user)
{
var trimmed = _editUsername.Trim();
var error = await AuthService.RenameUserAsync(user.Id, trimmed);
if (error != null)
{
Snackbar.Add(error, Severity.Error);
return;
}
user.Username = trimmed;
_editUserId = null;
_editUsername = "";
Snackbar.Add($"Benutzer umbenannt zu \"{trimmed}\".", Severity.Success);
}
private async Task DeleteUser(User user)
{
await AuthService.DeleteUserAsync(user.Id);
_users.Remove(user);
Snackbar.Add($"Benutzer \"{user.Username}\" gelöscht.", Severity.Info);
}
}