Userverwaltung improved
This commit is contained in:
@@ -47,26 +47,56 @@ else
|
||||
<MudText Typo="Typo.body2" Color="Color.Secondary">@context.Id</MudText>
|
||||
</MudTd>
|
||||
<MudTd>
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2">
|
||||
<MudIcon Icon="@Icons.Material.Filled.AccountCircle"
|
||||
Color="@(context.Username == "marc" ? Color.Error : Color.Default)"
|
||||
Size="Size.Small" />
|
||||
<MudText Style="@(context.Username == "marc" ? "font-weight:700" : "")">
|
||||
@context.Username
|
||||
</MudText>
|
||||
@if (context.Username == "marc")
|
||||
{
|
||||
<MudChip T="string" Size="Size.Small" Color="Color.Error" Variant="Variant.Outlined">Admin</MudChip>
|
||||
}
|
||||
</MudStack>
|
||||
@if (_editUserId == context.Id)
|
||||
{
|
||||
<MudTextField @bind-Value="_editUsername"
|
||||
Variant="Variant.Outlined"
|
||||
Margin="Margin.Dense"
|
||||
Immediate="true"
|
||||
Style="max-width:220px"
|
||||
OnKeyDown="@(async e => { if (e.Key == "Enter") await SaveRename(context); })" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2">
|
||||
<MudIcon Icon="@Icons.Material.Filled.AccountCircle"
|
||||
Color="@(context.Username == "marc" ? Color.Error : Color.Default)"
|
||||
Size="Size.Small" />
|
||||
<MudText Style="@(context.Username == "marc" ? "font-weight:700" : "")">
|
||||
@context.Username
|
||||
</MudText>
|
||||
@if (context.Username == "marc")
|
||||
{
|
||||
<MudChip T="string" Size="Size.Small" Color="Color.Error" Variant="Variant.Outlined">Admin</MudChip>
|
||||
}
|
||||
</MudStack>
|
||||
}
|
||||
</MudTd>
|
||||
<MudTd Style="text-align:right">
|
||||
@if (context.Username != "marc")
|
||||
@if (_editUserId == context.Id)
|
||||
{
|
||||
<MudIconButton Icon="@Icons.Material.Filled.DeleteOutline"
|
||||
Color="Color.Error"
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Check"
|
||||
Color="Color.Success"
|
||||
Size="Size.Small"
|
||||
OnClick="@(() => DeleteUser(context))" />
|
||||
OnClick="@(() => SaveRename(context))" />
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Close"
|
||||
Color="Color.Default"
|
||||
Size="Size.Small"
|
||||
OnClick="CancelEdit" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Edit"
|
||||
Color="Color.Primary"
|
||||
Size="Size.Small"
|
||||
OnClick="@(() => StartEdit(context))" />
|
||||
@if (context.Username != "marc")
|
||||
{
|
||||
<MudIconButton Icon="@Icons.Material.Filled.DeleteOutline"
|
||||
Color="Color.Error"
|
||||
Size="Size.Small"
|
||||
OnClick="@(() => DeleteUser(context))" />
|
||||
}
|
||||
}
|
||||
</MudTd>
|
||||
</RowTemplate>
|
||||
@@ -83,6 +113,8 @@ else
|
||||
@code {
|
||||
private List<User> _users = [];
|
||||
private bool _loading = true;
|
||||
private int? _editUserId;
|
||||
private string _editUsername = "";
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
@@ -94,6 +126,33 @@ else
|
||||
_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);
|
||||
|
||||
Reference in New Issue
Block a user