@namespace Oqtane.Modules.Admin.Users @inherits ModuleBase @inject NavigationManager NavigationManager @inject IUserService UserService @inject IProfileService ProfileService @inject ISettingService SettingService @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer
@if (profiles != null) {
}
@if (profiles != null) {
@foreach (Profile profile in profiles) { var p = profile; if (p.Category != category) {
@p.Category
category = p.Category; }
@if (p.IsRequired) { } else { }
}
}


@SharedLocalizer["Cancel"]
@code { private ElementReference form; private bool validated = false; private string username = string.Empty; private string password = string.Empty; private string confirm = string.Empty; private string email = string.Empty; private string displayname = string.Empty; private List profiles; private Dictionary settings; private string category = string.Empty; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; protected override async Task OnInitializedAsync() { try { profiles = await ProfileService.GetProfilesAsync(ModuleState.SiteId); settings = new Dictionary(); } catch (Exception ex) { await logger.LogError(ex, "Error Loading User Profile {Error}", ex.Message); AddModuleMessage(Localizer["Error.Profile.Load"], MessageType.Error); } } private string GetProfileValue(string SettingName, string DefaultValue) => SettingService.GetSetting(settings, SettingName, DefaultValue); private async Task SaveUser() { validated = true; var interop = new Interop(JSRuntime); if (await interop.FormValid(form)) { try { if (username != string.Empty && password != string.Empty && confirm != string.Empty && email != string.Empty && ValidateProfiles()) { if (password == confirm) { var user = await UserService.GetUserAsync(username, PageState.Site.SiteId); if (user == null) { user = new User(); user.SiteId = PageState.Site.SiteId; user.Username = username; user.Password = password; user.Email = email; user.DisplayName = string.IsNullOrWhiteSpace(displayname) ? username : displayname; user.PhotoFileId = null; user = await UserService.AddUserAsync(user); if (user != null) { await SettingService.UpdateUserSettingsAsync(settings, user.UserId); await logger.LogInformation("User Created {User}", user); NavigationManager.NavigateTo(NavigateUrl()); } else { await logger.LogError("Error Adding User {Username} {Email}", username, email); AddModuleMessage(Localizer["Error.User.AddCheckPass"], MessageType.Error); } } else { AddModuleMessage(Localizer["Message.Username.Exists"], MessageType.Warning); } } else { AddModuleMessage(Localizer["Message.Password.NoMatch"], MessageType.Warning); } } else { AddModuleMessage(Localizer["Message.Required.ProfileInfo"], MessageType.Warning); } } catch (Exception ex) { await logger.LogError(ex, "Error Adding User {Username} {Email} {Error}", username, email, ex.Message); AddModuleMessage(Localizer["Error.User.Add"], MessageType.Error); } } else { AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); } } private bool ValidateProfiles() { bool valid = true; foreach (Profile profile in profiles) { if (string.IsNullOrEmpty(SettingService.GetSetting(settings, profile.Name, string.Empty)) && !string.IsNullOrEmpty(profile.DefaultValue)) { settings = SettingService.SetSetting(settings, profile.Name, profile.DefaultValue); } if (profile.IsRequired && string.IsNullOrEmpty(SettingService.GetSetting(settings, profile.Name, string.Empty))) { valid = false; } } return valid; } private void ProfileChanged(ChangeEventArgs e, string SettingName) { var value = (string)e.Value; settings = SettingService.SetSetting(settings, SettingName, value); } }