added validation support for user profile fields
This commit is contained in:
		| @ -64,6 +64,12 @@ | ||||
|                 </select> | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="validation" HelpText="Optionally provide a regular expression (RegExp) for validating the value entered" ResourceKey="Validation">Validation: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="validation" class="form-control" @bind="@_validation" maxlength="200" /> | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="private" HelpText="Should this profile item be visible to all users?" ResourceKey="Private">Private? </Label> | ||||
|             <div class="col-sm-9"> | ||||
| @ -97,6 +103,7 @@ | ||||
|     private string _maxlength = "0"; | ||||
|     private string _defaultvalue = string.Empty; | ||||
|     private string _options = string.Empty; | ||||
|     private string _validation = string.Empty; | ||||
|     private string _isrequired = "False"; | ||||
|     private string _isprivate = "False"; | ||||
|     private string createdby; | ||||
| @ -126,6 +133,7 @@ | ||||
|                     _maxlength = profile.MaxLength.ToString(); | ||||
|                     _defaultvalue = profile.DefaultValue; | ||||
|                     _options = profile.Options; | ||||
|                     _validation = profile.Validation; | ||||
|                     _isrequired = profile.IsRequired.ToString(); | ||||
|                     _isprivate = profile.IsPrivate.ToString(); | ||||
|                     createdby = profile.CreatedBy; | ||||
| @ -169,6 +177,7 @@ | ||||
|                 profile.MaxLength = int.Parse(_maxlength); | ||||
|                 profile.DefaultValue = _defaultvalue; | ||||
|                 profile.Options = _options; | ||||
|                 profile.Validation = _validation; | ||||
|                 profile.IsRequired = (_isrequired == null ? false : Boolean.Parse(_isrequired)); | ||||
|                 profile.IsPrivate = (_isprivate == null ? false : Boolean.Parse(_isprivate)); | ||||
|                 if (_profileid != -1) | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| @namespace Oqtane.Modules.Admin.UserProfile | ||||
| @using System.Text.RegularExpressions; | ||||
| @inherits ModuleBase | ||||
| @inject NavigationManager NavigationManager | ||||
| @inject IUserService UserService | ||||
| @ -227,140 +228,143 @@ else | ||||
| <br /><br /> | ||||
|  | ||||
| @code { | ||||
| 	private string username = string.Empty; | ||||
| 	private string _password = string.Empty; | ||||
| 	private string _passwordtype = "password"; | ||||
| 	private string _togglepassword = string.Empty; | ||||
| 	private string confirm = string.Empty; | ||||
| 	private bool allowtwofactor = false; | ||||
| 	private string twofactor = "False"; | ||||
| 	private string email = string.Empty; | ||||
| 	private string displayname = string.Empty; | ||||
| 	private FileManager filemanager; | ||||
| 	private int folderid = -1; | ||||
| 	private int photofileid = -1; | ||||
| 	private File photo = null; | ||||
| 	private List<Profile> profiles; | ||||
| 	private Dictionary<string, string> settings; | ||||
| 	private string category = string.Empty; | ||||
| 	private string filter = "to"; | ||||
| 	private List<Notification> notifications; | ||||
|     private string username = string.Empty; | ||||
|     private string _password = string.Empty; | ||||
|     private string _passwordtype = "password"; | ||||
|     private string _togglepassword = string.Empty; | ||||
|     private string confirm = string.Empty; | ||||
|     private bool allowtwofactor = false; | ||||
|     private string twofactor = "False"; | ||||
|     private string email = string.Empty; | ||||
|     private string displayname = string.Empty; | ||||
|     private FileManager filemanager; | ||||
|     private int folderid = -1; | ||||
|     private int photofileid = -1; | ||||
|     private File photo = null; | ||||
|     private List<Profile> profiles; | ||||
|     private Dictionary<string, string> settings; | ||||
|     private string category = string.Empty; | ||||
|     private string filter = "to"; | ||||
|     private List<Notification> notifications; | ||||
|  | ||||
| 	public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.View; | ||||
|     public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.View; | ||||
|  | ||||
| 	protected override async Task OnParametersSetAsync() | ||||
| 	{ | ||||
| 		try | ||||
| 		{ | ||||
| 			_togglepassword = SharedLocalizer["ShowPassword"]; | ||||
|     protected override async Task OnParametersSetAsync() | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             _togglepassword = SharedLocalizer["ShowPassword"]; | ||||
|  | ||||
| 			if (PageState.Site.Settings.ContainsKey("LoginOptions:TwoFactor") && !string.IsNullOrEmpty(PageState.Site.Settings["LoginOptions:TwoFactor"])) | ||||
| 			{ | ||||
| 				allowtwofactor = (PageState.Site.Settings["LoginOptions:TwoFactor"] == "true"); | ||||
| 			} | ||||
|             if (PageState.Site.Settings.ContainsKey("LoginOptions:TwoFactor") && !string.IsNullOrEmpty(PageState.Site.Settings["LoginOptions:TwoFactor"])) | ||||
|             { | ||||
|                 allowtwofactor = (PageState.Site.Settings["LoginOptions:TwoFactor"] == "true"); | ||||
|             } | ||||
|  | ||||
| 			if (PageState.User != null) | ||||
| 			{ | ||||
| 				username = PageState.User.Username; | ||||
| 				twofactor = PageState.User.TwoFactorRequired.ToString(); | ||||
| 				email = PageState.User.Email; | ||||
| 				displayname = PageState.User.DisplayName; | ||||
|             if (PageState.User != null) | ||||
|             { | ||||
|                 username = PageState.User.Username; | ||||
|                 twofactor = PageState.User.TwoFactorRequired.ToString(); | ||||
|                 email = PageState.User.Email; | ||||
|                 displayname = PageState.User.DisplayName; | ||||
|  | ||||
| 				// get user folder | ||||
| 				var folder = await FolderService.GetFolderAsync(ModuleState.SiteId, PageState.User.FolderPath); | ||||
| 				if (folder != null) | ||||
| 				{ | ||||
| 					folderid = folder.FolderId; | ||||
| 				} | ||||
|                 // get user folder | ||||
|                 var folder = await FolderService.GetFolderAsync(ModuleState.SiteId, PageState.User.FolderPath); | ||||
|                 if (folder != null) | ||||
|                 { | ||||
|                     folderid = folder.FolderId; | ||||
|                 } | ||||
|  | ||||
| 				if (PageState.User.PhotoFileId != null) | ||||
| 				{ | ||||
| 					photofileid = PageState.User.PhotoFileId.Value; | ||||
| 					photo = await FileService.GetFileAsync(photofileid); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					photofileid = -1; | ||||
| 					photo = null; | ||||
| 				} | ||||
|                 if (PageState.User.PhotoFileId != null) | ||||
|                 { | ||||
|                     photofileid = PageState.User.PhotoFileId.Value; | ||||
|                     photo = await FileService.GetFileAsync(photofileid); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     photofileid = -1; | ||||
|                     photo = null; | ||||
|                 } | ||||
|  | ||||
| 				profiles = await ProfileService.GetProfilesAsync(ModuleState.SiteId); | ||||
| 				settings = await SettingService.GetUserSettingsAsync(PageState.User.UserId); | ||||
|                 profiles = await ProfileService.GetProfilesAsync(ModuleState.SiteId); | ||||
|                 settings = await SettingService.GetUserSettingsAsync(PageState.User.UserId); | ||||
|  | ||||
| 				await LoadNotificationsAsync(); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				AddModuleMessage(Localizer["Message.User.NoLogIn"], MessageType.Warning); | ||||
| 			} | ||||
| 		} | ||||
| 		catch (Exception ex) | ||||
| 		{ | ||||
| 			await logger.LogError(ex, "Error Loading User Profile {Error}", ex.Message); | ||||
| 			AddModuleMessage(Localizer["Error.Profile.Load"], MessageType.Error); | ||||
| 		} | ||||
| 	} | ||||
|                 await LoadNotificationsAsync(); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 AddModuleMessage(Localizer["Message.User.NoLogIn"], MessageType.Warning); | ||||
|             } | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading User Profile {Error}", ex.Message); | ||||
|             AddModuleMessage(Localizer["Error.Profile.Load"], MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| 	private async Task LoadNotificationsAsync() | ||||
| 	{ | ||||
| 		notifications = await NotificationService.GetNotificationsAsync(PageState.Site.SiteId, filter, PageState.User.UserId); | ||||
| 		notifications = notifications.Where(item => item.DeletedBy != PageState.User.Username).ToList(); | ||||
| 	} | ||||
|     private async Task LoadNotificationsAsync() | ||||
|     { | ||||
|         notifications = await NotificationService.GetNotificationsAsync(PageState.Site.SiteId, filter, PageState.User.UserId); | ||||
|         notifications = notifications.Where(item => item.DeletedBy != PageState.User.Username).ToList(); | ||||
|     } | ||||
|  | ||||
| 	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 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 Save() | ||||
| 	{ | ||||
| 		try | ||||
| 		{ | ||||
| 			if (username != string.Empty && email != string.Empty && ValidateProfiles()) | ||||
| 			{ | ||||
| 				if (_password == confirm) | ||||
| 				{ | ||||
| 					var user = PageState.User; | ||||
| 					user.Username = username; | ||||
| 					user.Password = _password; | ||||
| 					user.TwoFactorRequired = bool.Parse(twofactor); | ||||
| 					user.Email = email; | ||||
| 					user.DisplayName = (displayname == string.Empty ? username : displayname); | ||||
| 					user.PhotoFileId = filemanager.GetFileId(); | ||||
| 					if (user.PhotoFileId == -1) | ||||
| 					{ | ||||
| 						user.PhotoFileId = null; | ||||
| 					} | ||||
| 					if (user.PhotoFileId != null) | ||||
| 					{ | ||||
| 						photofileid = user.PhotoFileId.Value; | ||||
| 						photo = await FileService.GetFileAsync(photofileid); | ||||
| 					} | ||||
| 					else | ||||
| 					{ | ||||
| 						photofileid = -1; | ||||
| 						photo = null; | ||||
| 					} | ||||
|     private async Task Save() | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             if (username != string.Empty && email != string.Empty && ValidateProfiles()) | ||||
|             { | ||||
|                 if (_password == confirm) | ||||
|                 { | ||||
|                     var user = PageState.User; | ||||
|                     user.Username = username; | ||||
|                     user.Password = _password; | ||||
|                     user.TwoFactorRequired = bool.Parse(twofactor); | ||||
|                     user.Email = email; | ||||
|                     user.DisplayName = (displayname == string.Empty ? username : displayname); | ||||
|                     user.PhotoFileId = filemanager.GetFileId(); | ||||
|                     if (user.PhotoFileId == -1) | ||||
|                     { | ||||
|                         user.PhotoFileId = null; | ||||
|                     } | ||||
|                     if (user.PhotoFileId != null) | ||||
|                     { | ||||
|                         photofileid = user.PhotoFileId.Value; | ||||
|                         photo = await FileService.GetFileAsync(photofileid); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         photofileid = -1; | ||||
|                         photo = null; | ||||
|                     } | ||||
|  | ||||
| 					user = await UserService.UpdateUserAsync(user); | ||||
| 					if (user != null) | ||||
| 					{ | ||||
| 						await SettingService.UpdateUserSettingsAsync(settings, PageState.User.UserId); | ||||
| 						await logger.LogInformation("User Profile Saved"); | ||||
|                     user = await UserService.UpdateUserAsync(user); | ||||
|                     if (user != null) | ||||
|                     { | ||||
|                         await SettingService.UpdateUserSettingsAsync(settings, PageState.User.UserId); | ||||
|                         await logger.LogInformation("User Profile Saved"); | ||||
|  | ||||
| 						AddModuleMessage(Localizer["Success.Profile.Update"], MessageType.Success); | ||||
| 						StateHasChanged(); | ||||
| 					} | ||||
| 					else | ||||
| 					{ | ||||
| 						AddModuleMessage(Localizer["Message.Password.Complexity"], MessageType.Error);						 | ||||
| 					} | ||||
| 				} | ||||
|                         AddModuleMessage(Localizer["Success.Profile.Update"], MessageType.Success); | ||||
|                         StateHasChanged(); | ||||
|  | ||||
|                         var interop = new Interop(JSRuntime); | ||||
|                         await interop.ScrollTo(0, 0, "smooth"); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         AddModuleMessage(Localizer["Message.Password.Complexity"], MessageType.Error);						 | ||||
|                     } | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     AddModuleMessage(Localizer["Message.Password.Invalid"], MessageType.Warning); | ||||
| @ -389,10 +393,15 @@ else | ||||
|             } | ||||
|             if (!profile.IsPrivate || UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin)) | ||||
|             { | ||||
|                 if (profile.IsRequired && string.IsNullOrEmpty(SettingService.GetSetting(settings, profile.Name, string.Empty))) | ||||
|                 if (valid == true && profile.IsRequired && string.IsNullOrEmpty(SettingService.GetSetting(settings, profile.Name, string.Empty))) | ||||
|                 { | ||||
|                     valid = false; | ||||
|                 } | ||||
|                 if (valid == true && !string.IsNullOrEmpty(profile.Validation)) | ||||
|                 { | ||||
|                     Regex regex = new Regex(profile.Validation); | ||||
|                     valid = regex.Match(SettingService.GetSetting(settings, profile.Name, string.Empty)).Success; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return valid; | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| @namespace Oqtane.Modules.Admin.Users | ||||
| @using System.Text.RegularExpressions; | ||||
| @inherits ModuleBase | ||||
| @inject NavigationManager NavigationManager | ||||
| @inject IUserService UserService | ||||
| @ -95,8 +96,8 @@ | ||||
| @code { | ||||
|     private string username = string.Empty; | ||||
|     private string _password = string.Empty; | ||||
| 	private string _passwordtype = "password"; | ||||
| 	private string _togglepassword = string.Empty; | ||||
|     private string _passwordtype = "password"; | ||||
|     private string _togglepassword = string.Empty; | ||||
|     private string confirm = string.Empty; | ||||
|     private string email = string.Empty; | ||||
|     private string displayname = string.Empty; | ||||
| @ -121,15 +122,15 @@ | ||||
|         } | ||||
|     } | ||||
|  | ||||
| 	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 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() | ||||
|     { | ||||
| @ -195,9 +196,17 @@ | ||||
|             { | ||||
|                 settings = SettingService.SetSetting(settings, profile.Name, profile.DefaultValue); | ||||
|             } | ||||
|             if (profile.IsRequired && string.IsNullOrEmpty(SettingService.GetSetting(settings, profile.Name, string.Empty))) | ||||
|             if (!profile.IsPrivate || UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin)) | ||||
|             { | ||||
|                 valid = false; | ||||
|                 if (valid == true && profile.IsRequired && string.IsNullOrEmpty(SettingService.GetSetting(settings, profile.Name, string.Empty))) | ||||
|                 { | ||||
|                     valid = false; | ||||
|                 } | ||||
|                 if (valid == true && !string.IsNullOrEmpty(profile.Validation)) | ||||
|                 { | ||||
|                     Regex regex = new Regex(profile.Validation); | ||||
|                     valid = regex.Match(SettingService.GetSetting(settings, profile.Name, string.Empty)).Success; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return valid; | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| @namespace Oqtane.Modules.Admin.Users | ||||
| @using System.Text.RegularExpressions; | ||||
| @inherits ModuleBase | ||||
| @inject NavigationManager NavigationManager | ||||
| @inject IUserService UserService | ||||
| @ -148,124 +149,124 @@ else | ||||
| <AuditInfo CreatedBy="@createdby" CreatedOn="@createdon" ModifiedBy="@modifiedby" ModifiedOn="@modifiedon" DeletedBy="@deletedby" DeletedOn="@deletedon"></AuditInfo> | ||||
|  | ||||
| @code { | ||||
| 	private int userid; | ||||
| 	private string username = string.Empty; | ||||
| 	private string _password = string.Empty; | ||||
| 	private string _passwordtype = "password"; | ||||
| 	private string _togglepassword = string.Empty; | ||||
| 	private string confirm = string.Empty; | ||||
| 	private string email = string.Empty; | ||||
| 	private string displayname = string.Empty; | ||||
| 	private FileManager filemanager; | ||||
| 	private int photofileid = -1; | ||||
| 	private File photo = null; | ||||
| 	private string isdeleted; | ||||
| 	private string lastlogin; | ||||
| 	private string lastipaddress; | ||||
|     private int userid; | ||||
|     private string username = string.Empty; | ||||
|     private string _password = string.Empty; | ||||
|     private string _passwordtype = "password"; | ||||
|     private string _togglepassword = string.Empty; | ||||
|     private string confirm = string.Empty; | ||||
|     private string email = string.Empty; | ||||
|     private string displayname = string.Empty; | ||||
|     private FileManager filemanager; | ||||
|     private int photofileid = -1; | ||||
|     private File photo = null; | ||||
|     private string isdeleted; | ||||
|     private string lastlogin; | ||||
|     private string lastipaddress; | ||||
|  | ||||
| 	private List<Profile> profiles; | ||||
| 	private Dictionary<string, string> settings; | ||||
| 	private string category = string.Empty; | ||||
|     private List<Profile> profiles; | ||||
|     private Dictionary<string, string> settings; | ||||
|     private string category = string.Empty; | ||||
|  | ||||
| 	private string createdby; | ||||
| 	private DateTime createdon; | ||||
| 	private string modifiedby; | ||||
| 	private DateTime modifiedon; | ||||
| 	private string deletedby; | ||||
| 	private DateTime? deletedon; | ||||
|     private string createdby; | ||||
|     private DateTime createdon; | ||||
|     private string modifiedby; | ||||
|     private DateTime modifiedon; | ||||
|     private string deletedby; | ||||
|     private DateTime? deletedon; | ||||
|  | ||||
| 	public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Edit; | ||||
|     public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Edit; | ||||
|  | ||||
| 	protected override async Task OnParametersSetAsync() | ||||
| 	{ | ||||
| 		try | ||||
| 		{ | ||||
| 			if (PageState.QueryString.ContainsKey("id")) | ||||
| 			{ | ||||
| 				_togglepassword = SharedLocalizer["ShowPassword"]; | ||||
| 				profiles = await ProfileService.GetProfilesAsync(PageState.Site.SiteId); | ||||
| 				userid = Int32.Parse(PageState.QueryString["id"]); | ||||
| 				var user = await UserService.GetUserAsync(userid, PageState.Site.SiteId); | ||||
| 				if (user != null) | ||||
| 				{ | ||||
| 					username = user.Username; | ||||
| 					email = user.Email; | ||||
| 					displayname = user.DisplayName; | ||||
| 					if (user.PhotoFileId != null) | ||||
| 					{ | ||||
| 						photofileid = user.PhotoFileId.Value; | ||||
| 						photo = await FileService.GetFileAsync(photofileid); | ||||
| 					} | ||||
| 					else | ||||
| 					{ | ||||
| 						photofileid = -1; | ||||
| 						photo = null; | ||||
| 					} | ||||
| 					isdeleted = user.IsDeleted.ToString(); | ||||
| 					lastlogin = string.Format("{0:MMM dd yyyy HH:mm:ss}", user.LastLoginOn); | ||||
| 					lastipaddress = user.LastIPAddress; | ||||
|     protected override async Task OnParametersSetAsync() | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             if (PageState.QueryString.ContainsKey("id")) | ||||
|             { | ||||
|                 _togglepassword = SharedLocalizer["ShowPassword"]; | ||||
|                 profiles = await ProfileService.GetProfilesAsync(PageState.Site.SiteId); | ||||
|                 userid = Int32.Parse(PageState.QueryString["id"]); | ||||
|                 var user = await UserService.GetUserAsync(userid, PageState.Site.SiteId); | ||||
|                 if (user != null) | ||||
|                 { | ||||
|                     username = user.Username; | ||||
|                     email = user.Email; | ||||
|                     displayname = user.DisplayName; | ||||
|                     if (user.PhotoFileId != null) | ||||
|                     { | ||||
|                         photofileid = user.PhotoFileId.Value; | ||||
|                         photo = await FileService.GetFileAsync(photofileid); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         photofileid = -1; | ||||
|                         photo = null; | ||||
|                     } | ||||
|                     isdeleted = user.IsDeleted.ToString(); | ||||
|                     lastlogin = string.Format("{0:MMM dd yyyy HH:mm:ss}", user.LastLoginOn); | ||||
|                     lastipaddress = user.LastIPAddress; | ||||
|  | ||||
| 					settings = await SettingService.GetUserSettingsAsync(user.UserId); | ||||
| 					createdby = user.CreatedBy; | ||||
| 					createdon = user.CreatedOn; | ||||
| 					modifiedby = user.ModifiedBy; | ||||
| 					modifiedon = user.ModifiedOn; | ||||
| 					deletedby = user.DeletedBy; | ||||
| 					deletedon = user.DeletedOn; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		catch (Exception ex) | ||||
| 		{ | ||||
| 			await logger.LogError(ex, "Error Loading User {UserId} {Error}", userid, ex.Message); | ||||
| 			AddModuleMessage(Localizer["Error.User.Load"], MessageType.Error); | ||||
| 		} | ||||
| 	} | ||||
|                     settings = await SettingService.GetUserSettingsAsync(user.UserId); | ||||
|                     createdby = user.CreatedBy; | ||||
|                     createdon = user.CreatedOn; | ||||
|                     modifiedby = user.ModifiedBy; | ||||
|                     modifiedon = user.ModifiedOn; | ||||
|                     deletedby = user.DeletedBy; | ||||
|                     deletedon = user.DeletedOn; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading User {UserId} {Error}", userid, ex.Message); | ||||
|             AddModuleMessage(Localizer["Error.User.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 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 && ValidateProfiles()) | ||||
| 			{ | ||||
| 				if (_password == confirm) | ||||
| 				{ | ||||
| 					var user = await UserService.GetUserAsync(userid, PageState.Site.SiteId); | ||||
| 					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.PhotoFileId = filemanager.GetFileId(); | ||||
| 					if (user.PhotoFileId == -1) | ||||
| 					{ | ||||
| 						user.PhotoFileId = null; | ||||
| 					} | ||||
|     private async Task SaveUser() | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             if (username != string.Empty && email != string.Empty && ValidateProfiles()) | ||||
|             { | ||||
|                 if (_password == confirm) | ||||
|                 { | ||||
|                     var user = await UserService.GetUserAsync(userid, PageState.Site.SiteId); | ||||
|                     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.PhotoFileId = filemanager.GetFileId(); | ||||
|                     if (user.PhotoFileId == -1) | ||||
|                     { | ||||
|                         user.PhotoFileId = null; | ||||
|                     } | ||||
|  | ||||
| 					user.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted)); | ||||
|                     user.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted)); | ||||
|  | ||||
| 					user = await UserService.UpdateUserAsync(user); | ||||
| 					if (user != null) | ||||
| 					{ | ||||
| 						await SettingService.UpdateUserSettingsAsync(settings, user.UserId); | ||||
| 						await logger.LogInformation("User Saved {User}", user); | ||||
| 						NavigationManager.NavigateTo(NavigateUrl()); | ||||
| 					} | ||||
| 					else | ||||
| 					{ | ||||
| 						AddModuleMessage(Localizer["Message.Password.Complexity"], MessageType.Error); | ||||
| 					} | ||||
|                     user = await UserService.UpdateUserAsync(user); | ||||
|                     if (user != null) | ||||
|                     { | ||||
|                         await SettingService.UpdateUserSettingsAsync(settings, user.UserId); | ||||
|                         await logger.LogInformation("User Saved {User}", user); | ||||
|                         NavigationManager.NavigateTo(NavigateUrl()); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         AddModuleMessage(Localizer["Message.Password.Complexity"], MessageType.Error); | ||||
|                     } | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
| @ -293,9 +294,17 @@ else | ||||
|             { | ||||
|                 settings = SettingService.SetSetting(settings, profile.Name, profile.DefaultValue); | ||||
|             } | ||||
|             if (profile.IsRequired && string.IsNullOrEmpty(SettingService.GetSetting(settings, profile.Name, string.Empty))) | ||||
|             if (!profile.IsPrivate || UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin)) | ||||
|             { | ||||
|                 valid = false; | ||||
|                 if (valid == true && profile.IsRequired && string.IsNullOrEmpty(SettingService.GetSetting(settings, profile.Name, string.Empty))) | ||||
|                 { | ||||
|                     valid = false; | ||||
|                 } | ||||
|                 if (valid == true && !string.IsNullOrEmpty(profile.Validation)) | ||||
|                 { | ||||
|                     Regex regex = new Regex(profile.Validation); | ||||
|                     valid = regex.Match(SettingService.GetSetting(settings, profile.Name, string.Empty)).Success; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return valid; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 sbwalker
					sbwalker