@using Indotalent.Features.Setting.SystemUser @using Indotalent.Features.Setting.SystemUser.Cqrs @using Indotalent.Infrastructure.Authorization.Identity @using MudBlazor @inject SystemUserService SystemUserService @inject ISnackbar Snackbar
Manage User Roles Assign or revoke roles for: @Data.FullName (@Data.Email)
Available System Roles @foreach (var role in ApplicationRoles.AllRoles) { @role System Role }
Cancel @if (_processing) { Saving Roles... } else { Update Role Assignments }
@code { [Parameter] public UpdateSystemUserRequest Data { get; set; } = new(); [Parameter] public EventCallback OnCancel { get; set; } [Parameter] public EventCallback OnSuccess { get; set; } private List _selectedRoles = new(); private bool _processing = false; protected override void OnInitialized() { if (Data.UserRoles != null) { _selectedRoles = new List(Data.UserRoles); } } private void OnRoleToggled(string role, bool isSelected) { if (isSelected) { if (!_selectedRoles.Contains(role)) _selectedRoles.Add(role); } else { _selectedRoles.Remove(role); } } private async Task Submit() { if (_selectedRoles.Count == 0) { Snackbar.Add("Please select at least one role", Severity.Warning); return; } _processing = true; try { var request = new ChangeRoleRequest { UserId = Data.Id ?? string.Empty, Roles = _selectedRoles }; var success = await SystemUserService.ChangeRoleAsync(request); await Task.Delay(500); if (success) { Snackbar.Add("User roles updated successfully", Severity.Success); await OnSuccess.InvokeAsync(); } } finally { _processing = false; } } }