@namespace Oqtane.Modules.Admin.Users @inherits ModuleBase @inject IUserRoleService UserRoleService @inject IUserService UserService @inject ISettingService SettingService @inject ISiteService SiteService @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer @if (userroles == null) {

@SharedLocalizer["Loading"]

} else {
      @SharedLocalizer["Name"] @SharedLocalizer["Username"]
@context.User.DisplayName @context.User.Username


} @code { private List allroles; private List userroles; private string _search; private string _allowregistration; private string _minimumlength; private string _uniquecharacters; private string _requiredigit; private string _requireupper; private string _requirelower; private string _requirepunctuation; private string _maximumfailures; private string _lockoutduration; private string _provider; private string _authority; private string _clientid; private string _clientsecret; private string _metadata; private string _logouturl; private string _allowsitelogin; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; protected override async Task OnInitializedAsync() { allroles = await UserRoleService.GetUserRolesAsync(PageState.Site.SiteId); await LoadSettingsAsync(); userroles = Search(_search); _allowregistration = PageState.Site.AllowRegistration.ToString(); var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId); _minimumlength = SettingService.GetSetting(settings, "IdentityOptions:Password:RequiredLength", "6"); _uniquecharacters = SettingService.GetSetting(settings, "IdentityOptions:Password:RequiredUniqueChars", "1"); _requiredigit = SettingService.GetSetting(settings, "IdentityOptions:Password:RequireDigit", "true"); _requireupper = SettingService.GetSetting(settings, "IdentityOptions:Password:RequireUppercase", "true"); _requirelower = SettingService.GetSetting(settings, "IdentityOptions:Password:RequireLowercase", "true"); _requirepunctuation = SettingService.GetSetting(settings, "IdentityOptions:Password:RequireNonAlphanumeric", "true"); _maximumfailures = SettingService.GetSetting(settings, "IdentityOptions:Lockout:MaxFailedAccessAttempts", "5"); _lockoutduration = TimeSpan.Parse(SettingService.GetSetting(settings, "IdentityOptions:Lockout:DefaultLockoutTimeSpan", "00:05:00")).TotalMinutes.ToString(); _provider = SettingService.GetSetting(settings, "OpenIdConnectOptions:Provider", ""); _authority = SettingService.GetSetting(settings, "OpenIdConnectOptions:Authority", ""); _clientid = SettingService.GetSetting(settings, "OpenIdConnectOptions:ClientId", ""); _clientsecret = SettingService.GetSetting(settings, "OpenIdConnectOptions:ClientSecret", ""); _metadata = SettingService.GetSetting(settings, "OpenIdConnectOptions:MetadataAddress", ""); _logouturl = SettingService.GetSetting(settings, "OpenIdConnectOptions:LogoutUrl", ""); _allowsitelogin = SettingService.GetSetting(settings, "AllowSiteLogin", "True"); } private List Search(string search) { var results = allroles.Where(item => item.Role.Name == RoleNames.Registered || (item.Role.Name == RoleNames.Host && UserSecurity.IsAuthorized(PageState.User, RoleNames.Host))); if (!string.IsNullOrEmpty(_search)) { results = results.Where(item => ( item.User.Username.Contains(search, StringComparison.OrdinalIgnoreCase) || item.User.Email.Contains(search, StringComparison.OrdinalIgnoreCase) || item.User.DisplayName.Contains(search, StringComparison.OrdinalIgnoreCase) ) ); } return results.ToList(); } private async Task OnSearch() { userroles = Search(_search); await UpdateSettingsAsync(); } private async Task DeleteUser(UserRole UserRole) { try { var user = await UserService.GetUserAsync(UserRole.UserId, PageState.Site.SiteId); if (user != null) { await UserService.DeleteUserAsync(user.UserId, PageState.Site.SiteId); await logger.LogInformation("User Deleted {User}", UserRole.User); allroles = await UserRoleService.GetUserRolesAsync(PageState.Site.SiteId); userroles = Search(_search); StateHasChanged(); } } catch (Exception ex) { await logger.LogError(ex, "Error Deleting User {User} {Error}", UserRole.User, ex.Message); AddModuleMessage(ex.Message, MessageType.Error); } } private string settingSearch = "AU-search"; private async Task LoadSettingsAsync() { Dictionary settings = await SettingService.GetUserSettingsAsync(PageState.User.UserId); _search = SettingService.GetSetting(settings, settingSearch, ""); } private async Task UpdateSettingsAsync() { Dictionary settings = await SettingService.GetUserSettingsAsync(PageState.User.UserId); SettingService.SetSetting(settings, settingSearch, _search); await SettingService.UpdateUserSettingsAsync(settings, PageState.User.UserId); } private async Task SaveSiteSettings() { try { var site = PageState.Site; site.AllowRegistration = bool.Parse(_allowregistration); await SiteService.UpdateSiteAsync(site); var settings = await SettingService.GetSiteSettingsAsync(site.SiteId); settings = SettingService.SetSetting(settings, "IdentityOptions:Password:RequiredLength", _minimumlength, true); settings = SettingService.SetSetting(settings, "IdentityOptions:Password:RequiredUniqueChars", _uniquecharacters, true); settings = SettingService.SetSetting(settings, "IdentityOptions:Password:RequireDigit", _requiredigit, true); settings = SettingService.SetSetting(settings, "IdentityOptions:Password:RequireUppercase", _requireupper, true); settings = SettingService.SetSetting(settings, "IdentityOptions:Password:RequireLowercase", _requirelower, true); settings = SettingService.SetSetting(settings, "IdentityOptions:Password:RequireNonAlphanumeric", _requirepunctuation, true); settings = SettingService.SetSetting(settings, "IdentityOptions:Lockout:MaxFailedAccessAttempts", _maximumfailures, true); settings = SettingService.SetSetting(settings, "IdentityOptions:Lockout:DefaultLockoutTimeSpan", TimeSpan.FromMinutes(Convert.ToInt64(_lockoutduration)).ToString(), true); settings = SettingService.SetSetting(settings, "OpenIdConnectOptions:Provider", _provider, false); settings = SettingService.SetSetting(settings, "OpenIdConnectOptions:Authority", _authority, true); settings = SettingService.SetSetting(settings, "OpenIdConnectOptions:ClientId", _clientid, true); settings = SettingService.SetSetting(settings, "OpenIdConnectOptions:ClientSecret", _clientsecret, true); settings = SettingService.SetSetting(settings, "OpenIdConnectOptions:MetadataAddress", _metadata, true); settings = SettingService.SetSetting(settings, "OpenIdConnectOptions:LogoutUrl", _logouturl, true); settings = SettingService.SetSetting(settings, "AllowSiteLogin", _allowsitelogin, false); await SettingService.UpdateSiteSettingsAsync(settings, site.SiteId); await SettingService.ClearSiteSettingsCacheAsync(site.SiteId); AddModuleMessage(Localizer["Success.SaveSiteSettings"], MessageType.Success); } catch (Exception ex) { await logger.LogError(ex, "Error Saving Site Settings {Error}", ex.Message); AddModuleMessage(Localizer["Error.SaveSiteSettings"], MessageType.Error); } } }