@using Hcs.WebApp.Services @using Microsoft.AspNetCore.Identity @using Microsoft.EntityFrameworkCore @inject RoleManager RoleManager @inject UsersService UsersService @inject DialogService DialogService @errorMessage @code { sealed class InputModel { public string UserName { get; set; } = ""; public AppRole Role { get; set; } public string Password { get; set; } = ""; public string ConfirmPassword { get; set; } = ""; } IEnumerable roles; bool inProgress; bool hasError; string errorMessage; [SupplyParameterFromForm] InputModel Input { get; set; } = new(); protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); roles = await RoleManager.Roles.OrderBy(x => x.Priority).ToListAsync(); Input.Role = roles.First(); } async Task DoAddUserAsync(InputModel input) { if (inProgress) return; inProgress = true; hasError = false; try { var result = await UsersService.CreateUserAsync(input.UserName, input.Role.Name, input.Password); if (result.Succeeded) { DialogService.Close(true); } else { hasError = true; errorMessage = string.Join(", ", result.Errors.Select(x => x.Description)); } } catch (Exception e) { hasError = true; errorMessage = e.Message; } finally { inProgress = false; } } void DoClose() { if (inProgress) return; DialogService.Close(false); } }