@page "/FirstTimeSetup/Administrator" @layout FirstTimeSetupLayout @inject DatabaseServiceFactory DatabaseServiceFactory @inject NavigationManager NavigationManager @inject IMessageService MessageService @inject ILogger Logger Create Administrator User - First Time Setup
To get started, you will need to create an administrator user.
@code { [CascadingParameter] FirstTimeSetupLayout Layout { get; set; } FirstTimeSetupModel Model = new FirstTimeSetupModel(); bool Loading = false; protected override async Task OnInitializedAsync() { await Layout.ChangeCurrentStep(FirstTimeSetupStep.Administrator); } async Task CreateAdministratorUser() { Loading = true; StateHasChanged(); await Task.Yield(); try { using (var roleService = DatabaseServiceFactory.Create()) { var role = await roleService.GetAsync(RoleService.AdministratorRoleName); if (role == null) await roleService.AddAsync(new Role { Name = RoleService.AdministratorRoleName }); var administrators = await roleService.GetUsersAsync(RoleService.AdministratorRoleName); if (administrators != null && administrators.Any()) NavigationManager.NavigateTo("/"); else { using (var userService = DatabaseServiceFactory.Create()) { var user = Activator.CreateInstance(); user.Approved = true; user.ApprovedOn = DateTime.UtcNow; user.UserName = Model.Username; var result = await userService.AddAsync(user); if (result == null) { /*foreach (var error in result.Errors) { MessageService.Error(error.Description); }*/ Loading = false; StateHasChanged(); return; } else { await userService.AddToRolesAsync(user.UserName, new string[] { RoleService.AdministratorRoleName }); Logger?.LogInformation("Administrator created a new account with password."); await MessageService.Success("Setup completed! Redirecting...", 3); Loading = false; NavigationManager.NavigateTo("/"); } } } } } catch (Exception ex) { Logger?.LogError(ex, "Could not create administrator"); MessageService.Error($"Could not create administrator: {ex.Message}", 10); } Loading = false; } }