public HttpResponseMessage UpdateSslSettings(UpdateSslSettingsRequest request) { try { PortalController.UpdatePortalSetting(PortalId, "SSLEnabled", request.SSLEnabled.ToString(), false); PortalController.UpdatePortalSetting(PortalId, "SSLEnforced", request.SSLEnforced.ToString(), false); PortalController.UpdatePortalSetting(PortalId, "SSLURL", AddPortalAlias(request.SSLURL, PortalId), false); PortalController.UpdatePortalSetting(PortalId, "STDURL", AddPortalAlias(request.STDURL, PortalId), false); if (UserInfo.IsSuperUser) { HostController.Instance.Update("SSLOffloadHeader", request.SSLOffloadHeader); } DataCache.ClearPortalCache(PortalId, false); return(Request.CreateResponse(HttpStatusCode.OK, new { Success = true })); } catch (Exception exc) { Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
public static void LocalizeSitePages(LocalizationProgress progress, int portalId, bool translatePages, string defaultLanguage) { Task.Factory.StartNew(() => { try { var languageCount = LocaleController.Instance.GetLocales(portalId).Count; var languageCounter = 0; var pageList = GetPages(portalId).Where(p => string.IsNullOrEmpty(p.CultureCode)).ToList(); if (translatePages) { // populate default language ProcessLanguage(pageList, LocaleController.Instance.GetLocale(defaultLanguage), defaultLanguage, languageCounter, languageCount, progress); } PublishLanguage(defaultLanguage, portalId, true); PortalController.UpdatePortalSetting(portalId, "ContentLocalizationEnabled", "True"); if (translatePages) { // populate other languages pageList = GetPages(portalId).Where(p => p.CultureCode == defaultLanguage).ToList(); foreach (var locale in LocaleController.Instance.GetLocales(portalId).Values.Where(l => l.Code != defaultLanguage)) { languageCounter++; //add translator role Localization.AddTranslatorRole(portalId, locale); //populate pages ProcessLanguage(pageList, locale, defaultLanguage, languageCounter, languageCount, progress); //Map special pages PortalController.Instance.MapLocalizedSpecialPages(portalId, locale.Code); } } //clear portal cache DataCache.ClearPortalCache(portalId, true); progress.Reset(); SaveProgressToFile(progress); } catch (Exception ex) { try { Logger.Error(ex); progress.Reset().Error = ex.ToString(); SaveProgressToFile(progress); } catch (Exception) { //ignore } } }); }
public UserBasicDto UpdateUserBasicInfo(UserBasicDto userBasicDto, int requestPortalId = -1) { int portalId = this.PortalSettings.PortalId; PortalSettings requestPortalSettings = this.PortalSettings; if (requestPortalId != -1) { portalId = requestPortalId; requestPortalSettings = new PortalSettings(portalId); } var user = UserController.Instance.GetUser(portalId, userBasicDto.UserId); if (user == null) { throw new ArgumentException("UserNotExist"); } if (userBasicDto.UserId == requestPortalSettings.AdministratorId) { //Clear the Portal Cache DataCache.ClearPortalCache(portalId, true); } if (user.IsSuperUser) { DataCache.ClearHostCache(true); } user.DisplayName = userBasicDto.Displayname; user.Email = userBasicDto.Email; user.FirstName = !string.IsNullOrEmpty(userBasicDto.Firstname) ? userBasicDto.Firstname : user.FirstName; user.LastName = !string.IsNullOrEmpty(userBasicDto.Lastname) ? userBasicDto.Lastname : user.LastName; //Update DisplayName to conform to Format if (!string.IsNullOrEmpty(requestPortalSettings.Registration.DisplayNameFormat)) { user.UpdateDisplayName(requestPortalSettings.Registration.DisplayNameFormat); } //either update the username or update the user details if (this.CanUpdateUsername(user) && !requestPortalSettings.Registration.UseEmailAsUserName) { UserController.ChangeUsername(user.UserID, userBasicDto.Username); user.Username = userBasicDto.Username; } //DNN-5874 Check if unique display name is required if (requestPortalSettings.Registration.RequireUniqueDisplayName) { var usersWithSameDisplayName = (List <UserInfo>)MembershipProvider.Instance().GetUsersBasicSearch(portalId, 0, 2, "DisplayName", true, "DisplayName", user.DisplayName); if (usersWithSameDisplayName.Any(u => u.UserID != user.UserID)) { throw new ArgumentException("DisplayNameNotUnique"); } } UserController.UpdateUser(portalId, user); if (requestPortalSettings.Registration.UseEmailAsUserName && (user.Username.ToLowerInvariant() != user.Email.ToLowerInvariant())) { UserController.ChangeUsername(user.UserID, user.Email); } return (UserBasicDto.FromUserInfo(UserController.Instance.GetUser(requestPortalSettings.PortalId, userBasicDto.UserId))); }
public override ConsoleResultModel Run() { try { var messages = new List <PromptMessage>(); var portals = PortalController.Instance.GetPortals(); if (portals == null || portals.Count == 0) { messages.Add(new PromptMessage(LocalizeString("NoPortalsFound"))); } else { messages.Add(new PromptMessage(string.Format(LocalizeString("PortalsFound"), portals.Count))); } foreach (PortalInfo portal in portals) { messages.Add(new PromptMessage(string.Format(LocalizeString("ClearingImages"), portal.PortalName))); var folderPath = string.Format("\\Portals\\{0}\\Hotcakes\\Data\\temp\\", portal.PortalID); var fullPath = System.Web.Hosting.HostingEnvironment.MapPath(folderPath); var tempFolder = new System.IO.DirectoryInfo(fullPath); if (tempFolder != null && tempFolder.Exists) { // delete everything inside of the folder, but leave the folder in place tempFolder.Empty(); } } // clearing DNN CRM cache ClientResourceManager.ClearCache(); messages.Add(new PromptMessage(LocalizeString("ClearedCrmCache"))); // clearing cache in each portal foreach (PortalInfo portal in portals) { DataCache.ClearPortalCache(portal.PortalID, true); messages.Add(new PromptMessage(string.Format(LocalizeString("ClearedPortalCache"), portal.PortalName))); } // clear DNN cache DataCache.ClearCache(); DotNetNuke.Web.Client.ClientResourceManagement.ClientResourceManager.ClearCache(); messages.Add(new PromptMessage(LocalizeString("ClearedDnnCache"))); // clear HCC cache here CacheManager.ClearAll(); messages.Add(new PromptMessage(LocalizeString("ClearedHccCache"))); return(new ConsoleResultModel { Data = messages, Output = string.Concat(Constants.OutputPrefix, string.Format(LocalizeString("ClearedCache"))) }); } catch (Exception e) { LogError(e); return(new ConsoleErrorResultModel(string.Concat(Constants.OutputPrefix, LocalizeString("ErrorOccurred")))); } }
public static void ClearPortalCache(int portalId) { DataCache.ClearPortalCache(portalId, true); }
//NOTE - While making modifications in this method, developer must refer to call tree in Register.ascx.cs. //Especially Validate and CreateUser methods. Register class inherits from UserModuleBase, which also contains bunch of logic. //This method can easily be modified to pass passowrd, display name, etc. //It is recommended to write unit tests. public UserBasicDto Register(RegisterationDetails registerationDetails) { var portalSettings = registerationDetails.PortalSettings; var username = registerationDetails.UserName; var email = registerationDetails.Email; Requires.NotNullOrEmpty("email", email); var disallowRegistration = !registerationDetails.IgnoreRegistrationMode && ((portalSettings.UserRegistration == (int)Globals.PortalRegistrationType.NoRegistration) || (portalSettings.UserRegistration == (int)Globals.PortalRegistrationType.PrivateRegistration)); if (disallowRegistration) { throw new Exception(Localization.GetString("RegistrationNotAllowed", Library.Constants.SharedResources)); } //initial creation of the new User object var newUser = new UserInfo { PortalID = portalSettings.PortalId, Email = email }; //ensure this user doesn't exist if (!string.IsNullOrEmpty(username) && UserController.GetUserByName(portalSettings.PortalId, username) != null) { throw new Exception(Localization.GetString("RegistrationUsernameAlreadyPresent", Library.Constants.SharedResources)); } //set username as email if not specified newUser.Username = string.IsNullOrEmpty(username) ? email : username; if (!string.IsNullOrEmpty(registerationDetails.Password) && !registerationDetails.RandomPassword) { newUser.Membership.Password = registerationDetails.Password; } else { //Generate a random password for the user newUser.Membership.Password = UserController.GeneratePassword(); } newUser.Membership.PasswordConfirm = newUser.Membership.Password; //set other profile properties newUser.Profile.PreferredLocale = new Localization().CurrentUICulture; newUser.Profile.InitialiseProfile(portalSettings.PortalId); newUser.Profile.PreferredTimeZone = portalSettings.TimeZone; //derive display name from supplied firstname, lastname or from email if (!string.IsNullOrEmpty(registerationDetails.FirstName) && !string.IsNullOrEmpty(registerationDetails.LastName)) { newUser.DisplayName = registerationDetails.FirstName + " " + registerationDetails.LastName; newUser.FirstName = registerationDetails.FirstName; newUser.LastName = registerationDetails.LastName; } else { newUser.DisplayName = newUser.Email.Substring(0, newUser.Email.IndexOf("@", StringComparison.Ordinal)); } //read all the user account settings var settings = UserController.GetUserSettings(portalSettings.PortalId); //Verify Profanity filter if (GetBoolSetting(settings, "Registration_UseProfanityFilter")) { var portalSecurity = new PortalSecurity(); if (!portalSecurity.ValidateInput(newUser.Username, PortalSecurity.FilterFlag.NoProfanity) || !portalSecurity.ValidateInput(newUser.DisplayName, PortalSecurity.FilterFlag.NoProfanity)) { throw new Exception(Localization.GetString("RegistrationProfanityNotAllowed", Library.Constants.SharedResources)); } } //Email Address Validation var emailValidator = GetStringSetting(settings, "Security_EmailValidation"); if (!string.IsNullOrEmpty(emailValidator)) { var regExp = RegexUtils.GetCachedRegex(emailValidator, RegexOptions.IgnoreCase | RegexOptions.Multiline); var matches = regExp.Matches(newUser.Email); if (matches.Count == 0) { throw new Exception(Localization.GetString("RegistrationInvalidEmailUsed", Library.Constants.SharedResources)); } } //Excluded Terms Verification var excludeRegex = GetExcludeTermsRegex(settings); if (!string.IsNullOrEmpty(excludeRegex)) { var regExp = RegexUtils.GetCachedRegex(excludeRegex, RegexOptions.IgnoreCase | RegexOptions.Multiline); var matches = regExp.Matches(newUser.Username); if (matches.Count > 0) { throw new Exception(Localization.GetString("RegistrationExcludedTermsUsed", Library.Constants.SharedResources)); } } //User Name Validation var userNameValidator = GetStringSetting(settings, "Security_UserNameValidation"); if (!string.IsNullOrEmpty(userNameValidator)) { var regExp = RegexUtils.GetCachedRegex(userNameValidator, RegexOptions.IgnoreCase | RegexOptions.Multiline); var matches = regExp.Matches(newUser.Username); if (matches.Count == 0) { throw new Exception(Localization.GetString("RegistrationInvalidUserNameUsed", Library.Constants.SharedResources)); } } //ensure unique username var user = UserController.GetUserByName(portalSettings.PortalId, newUser.Username); if (user != null) { if (GetBoolSetting(settings, "Registration_UseEmailAsUserName")) { throw new Exception(UserController.GetUserCreateStatus(UserCreateStatus.DuplicateEmail)); } var i = 1; string userName = null; while (user != null) { userName = newUser.Username + "0" + i.ToString(CultureInfo.InvariantCulture); user = UserController.GetUserByName(portalSettings.PortalId, userName); i++; } newUser.Username = userName; } //ensure unique display name if (GetBoolSetting(settings, "Registration_RequireUniqueDisplayName")) { user = UserController.Instance.GetUserByDisplayname(portalSettings.PortalId, newUser.DisplayName); if (user != null) { var i = 1; string displayName = null; while (user != null) { displayName = newUser.DisplayName + " 0" + i.ToString(CultureInfo.InvariantCulture); user = UserController.Instance.GetUserByDisplayname(portalSettings.PortalId, displayName); i++; } newUser.DisplayName = displayName; } } //Update display name format var displaynameFormat = GetStringSetting(settings, "Security_DisplayNameFormat"); if (!string.IsNullOrEmpty(displaynameFormat)) { newUser.UpdateDisplayName(displaynameFormat); } //membership is approved only for public registration newUser.Membership.Approved = (registerationDetails.IgnoreRegistrationMode || portalSettings.UserRegistration == (int)Globals.PortalRegistrationType.PublicRegistration) && registerationDetails.Authorize; //final creation of user var createStatus = UserController.CreateUser(ref newUser); //clear cache if (createStatus == UserCreateStatus.Success) { DataCache.ClearPortalCache(portalSettings.PortalId, true); } if (createStatus != UserCreateStatus.Success) { throw new Exception(UserController.GetUserCreateStatus(createStatus)); } // if (registerationDetails.IgnoreRegistrationMode) // { // Mail.SendMail(newUser, MessageType.UserRegistrationPublic, portalSettings); // return UserBasicDto.FromUserInfo(newUser); // } //send notification to portal administrator of new user registration //check the receive notification setting first, but if register type is Private, we will always send the notification email. //because the user need administrators to do the approve action so that he can continue use the website. if (!registerationDetails.IgnoreRegistrationMode && (portalSettings.EnableRegisterNotification || portalSettings.UserRegistration == (int)Globals.PortalRegistrationType.PrivateRegistration)) { Mail.SendMail(newUser, MessageType.UserRegistrationAdmin, portalSettings); SendAdminNotification(newUser, portalSettings); } //send email to user if (registerationDetails.Notify) { switch (portalSettings.UserRegistration) { case (int)Globals.PortalRegistrationType.PrivateRegistration: Mail.SendMail(newUser, MessageType.UserRegistrationPrivate, portalSettings); break; case (int)Globals.PortalRegistrationType.PublicRegistration: Mail.SendMail(newUser, MessageType.UserRegistrationPublic, portalSettings); break; case (int)Globals.PortalRegistrationType.VerifiedRegistration: Mail.SendMail(newUser, MessageType.UserRegistrationVerified, portalSettings); break; } } return(UserBasicDto.FromUserInfo(newUser)); }
public void Execute(BasePage Context) { Dictionary <String, Object> jsonDicts = new Dictionary <String, Object>(); JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); Common.UpdateDictionary(jsonDicts, "Message", ""); Boolean Result = false; int UpdateResult = 0; var json = WebHelper.GetStringParam(Context.Request, "json", ""); var UserItem = Context.UserInfo; if (UserItem != null && UserItem.UserID > 0) { ProfilePropertyDefinitionCollection profileProperties = new ProfilePropertyDefinitionCollection(); var FirstName = WebHelper.GetStringParam(Context.Request, "FirstName", ""); if (!String.IsNullOrEmpty(FirstName) && FirstName != UserItem.Profile.FirstName) { UserItem.FirstName = FirstName; UpdateResult++; } var LastName = WebHelper.GetStringParam(Context.Request, "LastName", ""); if (!String.IsNullOrEmpty(LastName) && LastName != UserItem.Profile.LastName) { UserItem.LastName = LastName; UpdateResult++; } var Company = WebHelper.GetStringParam(Context.Request, "Company", ""); if (!String.IsNullOrEmpty(Company) && Company != UserItem.Profile.GetPropertyValue("Company")) { //DotNetNuke.Entities.Profile.ProfileController.UpdateUserProfile() //UserItem.Profile["Company"] = Company; UserItem.Profile.SetProfileProperty("Company", Company); UpdateResult++; } var Newsletter_GameSheets = WebHelper.GetStringParam(Context.Request, "Newsletter_GameSheets", ""); if (Newsletter_GameSheets != UserItem.Profile.GetPropertyValue("Newsletter_GameSheets").ToLower()) { UserItem.Profile.SetProfileProperty("Newsletter_GameSheets", ConvertBool(Newsletter_GameSheets)); UpdateResult++; } var Newsletter_Downloads = WebHelper.GetStringParam(Context.Request, "Newsletter_Downloads", ""); if (Newsletter_Downloads != UserItem.Profile.GetPropertyValue("Newsletter_Downloads").ToLower()) { UserItem.Profile.SetProfileProperty("Newsletter_Downloads", ConvertBool(Newsletter_Downloads)); UpdateResult++; } var Newsletter_Campaigns = WebHelper.GetStringParam(Context.Request, "Newsletter_Campaigns", ""); if (Newsletter_Campaigns != UserItem.Profile.GetPropertyValue("Newsletter_Campaigns").ToLower()) { UserItem.Profile.SetProfileProperty("Newsletter_Campaigns", ConvertBool(Newsletter_Campaigns)); UpdateResult++; } var Newsletter_Events = WebHelper.GetStringParam(Context.Request, "Newsletter_Events", ""); if (Newsletter_Events != UserItem.Profile.GetPropertyValue("Newsletter_Events").ToLower()) { UserItem.Profile.SetProfileProperty("Newsletter_Events", ConvertBool(Newsletter_Events)); UpdateResult++; } if (UpdateResult > 0) { DataCache.ClearPortalCache(Context.PortalId, true); DataCache.ClearCache(); UserController.UpdateUser(Context.PortalId, UserItem); ProfileController.UpdateUserProfile(UserItem); Common.UpdateDictionary(jsonDicts, "Message", "Update user account success!"); Result = true; } else { Result = false; Common.UpdateDictionary(jsonDicts, "Message", "User Profile no change."); } var Password = WebHelper.GetStringParam(Context.Request, "Password", ""); if (!String.IsNullOrEmpty(Password)) { if (UserController.ValidatePassword(Password)) { string resetPassword = UserController.ResetPassword(UserItem, String.Empty); if (UserController.ChangePassword(UserItem, resetPassword, Password)) { //DataCache.ClearPortalCache(UserItem.PortalID, false); //DataCache.ClearUserCache(UserItem.PortalID, UserItem.Username); Common.UpdateDictionary(jsonDicts, "Message", "Update user account success!"); Result = true; } else { Common.UpdateDictionary(jsonDicts, "Message", Localization.GetString("PasswordResetFailed")); Result = false; } } else { Common.UpdateDictionary(jsonDicts, "Message", Localization.GetString("PasswordInvalid")); Result = false; } } } jsonDicts.Add("UserItem", UserItem); jsonDicts.Add("UpdateResult", UpdateResult); jsonDicts.Add("Result", Result); //转换数据为json ResponseString = jsSerializer.Serialize(jsonDicts); }
protected void CtrlItemCommand(object source, RepeaterCommandEventArgs e) { var cArg = e.CommandArgument.ToString(); var param = new string[3]; var redirecttabid = ""; var emailtemplate = ""; switch (e.CommandName.ToLower()) { case "saveprofile": _profileData.UpdateProfile(rpInp, DebugMode); emailtemplate = ModSettings.Get("emailtemplate"); if (emailtemplate != "") { NBrightBuyUtils.SendEmailToManager(emailtemplate, _profileData.GetProfile(), "profileupdated_emailsubject.Text"); } param[0] = "msg=" + NotifyRef + "_" + NotifyCode.ok; NBrightBuyUtils.SetNotfiyMessage(ModuleId, NotifyRef, NotifyCode.ok); Response.Redirect(Globals.NavigateURL(TabId, "", param), true); break; case "register": var notifyCode = NotifyCode.fail; var failreason = ""; var cap = (DotNetNuke.UI.WebControls.CaptchaControl)rpInp.Controls[0].FindControl("captcha");; if (cap == null || cap.IsValid) { //create a new user and login if (!this.UserInfo.IsInRole("Registered Users")) { // Create and hydrate User var objUser = new UserInfo(); objUser.Profile.InitialiseProfile(this.PortalId, true); objUser.PortalID = PortalId; objUser.DisplayName = GenXmlFunctions.GetField(rpInp, "DisplayName"); objUser.Email = GenXmlFunctions.GetField(rpInp, "Email"); objUser.FirstName = GenXmlFunctions.GetField(rpInp, "FirstName"); objUser.LastName = GenXmlFunctions.GetField(rpInp, "LastName"); objUser.Username = GenXmlFunctions.GetField(rpInp, "Username"); objUser.Profile.PreferredLocale = Utils.GetCurrentCulture(); if (objUser.Username == "") { objUser.Username = GenXmlFunctions.GetField(rpInp, "Email"); } objUser.Membership.CreatedDate = System.DateTime.Now; var passwd = GenXmlFunctions.GetField(rpInp, "Password"); if (passwd == "") { objUser.Membership.UpdatePassword = true; passwd = UserController.GeneratePassword(9); } objUser.Membership.Password = passwd; objUser.Membership.Approved = PortalSettings.UserRegistration == (int)Globals.PortalRegistrationType.PublicRegistration; // Create the user var createStatus = UserController.CreateUser(ref objUser); DataCache.ClearPortalCache(PortalId, true); switch (createStatus) { case UserCreateStatus.Success: //boNotify = true; if (objUser.Membership.Approved) { UserController.UserLogin(this.PortalId, objUser, PortalSettings.PortalName, AuthenticationLoginBase.GetIPAddress(), false); } notifyCode = NotifyCode.ok; break; case UserCreateStatus.DuplicateEmail: failreason = "exists"; break; case UserCreateStatus.DuplicateUserName: failreason = "exists"; break; case UserCreateStatus.UsernameAlreadyExists: failreason = "exists"; break; case UserCreateStatus.UserAlreadyRegistered: failreason = "exists"; break; default: // registration error break; } if (notifyCode == NotifyCode.ok) { _profileData = new ProfileData(objUser.UserID, rpInp, DebugMode); //create and update a profile for this new logged in user. emailtemplate = ModSettings.Get("emailregisteredtemplate"); if (emailtemplate != "") { NBrightBuyUtils.SendEmailToManager(emailtemplate, _profileData.GetProfile(), "profileregistered_emailsubject.Text"); } emailtemplate = ModSettings.Get("emailregisteredclienttemplate"); if (emailtemplate != "") { NBrightBuyUtils.SendEmail(objUser.Email, emailtemplate, _profileData.GetProfile(), "profileregistered_emailsubject.Text", "", objUser.Profile.PreferredLocale); } } } } else { NBrightBuyUtils.SetFormTempData(ModuleId, GenXmlFunctions.GetGenXml(rpInp)); failreason = "captcha"; } param[0] = "msg=" + NotifyRef + "_" + notifyCode; if (!UserInfo.IsInRole(StoreSettings.ClientEditorRole) && ModSettings.Get("clientrole") == "True" && notifyCode == NotifyCode.ok) { NBrightBuyUtils.SetNotfiyMessage(ModuleId, NotifyRef + "clientrole", notifyCode); } else { NBrightBuyUtils.SetNotfiyMessage(ModuleId, NotifyRef + failreason, notifyCode); } if (notifyCode == NotifyCode.ok) { redirecttabid = ModSettings.Get("ddlredirecttabid"); } if (!Utils.IsNumeric(redirecttabid)) { redirecttabid = TabId.ToString(""); } Response.Redirect(Globals.NavigateURL(Convert.ToInt32(redirecttabid), "", param), true); break; } }
protected void cmdUpdate_Click(object sender, EventArgs e) { if (this.userForm.IsValid && (this.User != null)) { if (this.User.UserID == this.PortalSettings.AdministratorId) { // Clear the Portal Cache DataCache.ClearPortalCache(this.UserPortalID, true); } else { DataCache.ClearUserCache(this.PortalId, this.User.Username); } try { // Update DisplayName to conform to Format this.UpdateDisplayName(); // DNN-5874 Check if unique display name is required if (this.PortalSettings.Registration.RequireUniqueDisplayName) { var usersWithSameDisplayName = (List <UserInfo>)MembershipProvider.Instance().GetUsersBasicSearch(this.PortalId, 0, 2, "DisplayName", true, "DisplayName", this.User.DisplayName); if (usersWithSameDisplayName.Any(user => user.UserID != this.User.UserID)) { throw new Exception("Display Name must be unique"); } } var prevUserEmail = UserController.Instance.GetUserById(this.PortalId, this.UserId)?.Email; if (!string.IsNullOrWhiteSpace(prevUserEmail) && !prevUserEmail.Equals(this.User.Email, StringComparison.OrdinalIgnoreCase)) { // on email address change need to invalidate existing 'reset password' link this.User.PasswordResetExpiration = Null.NullDate; } UserController.UpdateUser(this.UserPortalID, this.User); // make sure username matches possibly changed email address if (this.PortalSettings.Registration.UseEmailAsUserName) { if (this.User.Username.ToLower() != this.User.Email.ToLower()) { UserController.ChangeUsername(this.User.UserID, this.User.Email); // after username changed, should redirect to login page to let user authenticate again. var loginUrl = Globals.LoginURL(HttpUtility.UrlEncode(this.Request.RawUrl), false); var spliter = loginUrl.Contains("?") ? "&" : "?"; loginUrl = $"{loginUrl}{spliter}username={this.User.Email}&usernameChanged=true"; this.Response.Redirect(loginUrl, true); } } this.Response.Redirect(this.Request.RawUrl); } catch (Exception exc) { Logger.Error(exc); if (exc.Message == "Display Name must be unique") { this.AddModuleMessage("DisplayNameNotUnique", ModuleMessage.ModuleMessageType.RedError, true); } else { this.AddModuleMessage("UserUpdatedError", ModuleMessage.ModuleMessageType.RedError, true); } } } }