@namespace Oqtane.Modules.Admin.Users @using System.Text.RegularExpressions; @inherits ModuleBase @inject NavigationManager NavigationManager @inject IUserService UserService @inject IProfileService ProfileService @inject ISettingService SettingService @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer @if (_initialized) { @if (profiles != null) {
}
@foreach (Profile profile in profiles) { var p = profile; if (p.Category != category) {
@p.Category
category = p.Category; }
@if (!string.IsNullOrEmpty(p.Options)) { } else { @if (p.Rows == 1) { } else { } }
}


@SharedLocalizer["Cancel"] } @code { private bool _initialized = false; private string _username = string.Empty; private string _email = string.Empty; private string _displayname = string.Empty; private string _notify = "True"; private List profiles; private Dictionary settings; private string category = string.Empty; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Edit; protected override async Task OnInitializedAsync() { try { profiles = await ProfileService.GetProfilesAsync(ModuleState.SiteId); settings = new Dictionary(); _initialized = true; } 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) { string value = SettingService.GetSetting(settings, SettingName, DefaultValue); if (value.Contains("]")) { value = value.Substring(value.IndexOf("]") + 1); } return value; } private async Task SaveUser() { try { if (_username != string.Empty && _email != string.Empty) { if (ValidateProfiles()) { var user = new User(); user.SiteId = PageState.Site.SiteId; user.Username = _username; user.Password = ""; // will be auto generated user.Email = _email; user.DisplayName = string.IsNullOrWhiteSpace(_displayname) ? _username : _displayname; user.PhotoFileId = null; user.SuppressNotification = !bool.Parse(_notify); 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.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); } } private bool ValidateProfiles() { foreach (Profile profile in profiles) { var value = GetProfileValue(profile.Name, string.Empty); if (string.IsNullOrEmpty(value) && !string.IsNullOrEmpty(profile.DefaultValue)) { settings = SettingService.SetSetting(settings, profile.Name, profile.DefaultValue); } if (!profile.IsPrivate || UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin)) { if (profile.IsRequired && string.IsNullOrEmpty(value)) { AddModuleMessage(string.Format(SharedLocalizer["ProfileRequired"], profile.Title), MessageType.Warning); return false; } if (!string.IsNullOrEmpty(profile.Validation)) { Regex regex = new Regex(profile.Validation); bool valid = regex.Match(value).Success; if (!valid) { AddModuleMessage(string.Format(SharedLocalizer["ProfileInvalid"], profile.Title), MessageType.Warning); return false; } } } } return true; } private void ProfileChanged(ChangeEventArgs e, string SettingName) { var value = (string)e.Value; settings = SettingService.SetSetting(settings, SettingName, value); } }