public static Tuple <Singular.Web.MessageType, String> ChangePassword(ChangeDetails details) { // Check for any business rule failures if (!details.CheckAllRules()) { return(Tuple.Create(Singular.Web.MessageType.Validation, "Validation failed")); } // Check if the password meets complexity requirements Singular.Misc.Password.PasswordChecker passwordChecker = new Singular.Misc.Password.PasswordChecker(8, true, true, true, false, 1); if (!passwordChecker.CheckPassword(details.NewPassword)) { return(Tuple.Create(Singular.Web.MessageType.Warning, passwordChecker.ErrorMessage)); } // Attempt to change the user's password DataRow result = CommandProc.GetDataRow( "CmdProcs.cmdChangePassword", new string[] { "@UserID", "@OldPassword", "@NewPassword" }, new object[] { Singular.Settings.CurrentUserID, OETWebSecurity.GetPasswordHash(details.OldPassword), OETWebSecurity.GetPasswordHash(details.NewPassword) }); if (!(bool)result[0]) { return(Tuple.Create(Singular.Web.MessageType.Warning, "The password you entered doesn't match your current password.")); } else { return(Tuple.Create(Singular.Web.MessageType.Success, "Change Password Success.")); } }
/// <summary> /// Setup the login status control /// </summary> protected override void Setup() { base.Setup(); HTMLDiv <object> container = Helpers.Div(); container.Style.Display = Display.inlineblock; container.Style.MarginLeft("20px"); string loginUrl = VirtualPathUtility.ToAbsolute(FormsAuthentication.LoginUrl); string defaultUrl = VirtualPathUtility.ToAbsolute(FormsAuthentication.DefaultUrl); // Logged in if (Singular.Security.Security.HasAuthenticatedUser) { OETIdentity identity = OETWebSecurity.CurrentIdentity(); var loginStatus = container.Helpers.DivC("login-status"); { loginStatus.Attributes["data-ContextMenu"] = "cmSecurity"; // User label var userLabel = loginStatus.Helpers.HTMLTag("span", "Hello " + identity.FirstName); { userLabel.Style.Display = Display.inlineblock; } // Icon loginStatus.Helpers.Image().Glyph = Singular.Web.FontAwesomeIcon.user; // Context menu var contextMenu = loginStatus.Helpers.DivC("context-menu-ls"); { contextMenu.Attributes["id"] = "cmSecurity"; contextMenu.Style.TextAlign = Singular.Web.TextAlign.right; var contextMenuMain = contextMenu.Helpers.DivC("CM-Main"); { var contextMenuMainHeader = contextMenuMain.Helpers.Div(); { contextMenuMainHeader.AddClass("CM-Header"); contextMenuMainHeader.Helpers.Div().Helpers.HTML(identity.UserNameReadable); contextMenuMainHeader.Helpers.Div().Helpers.HTML(identity.EmailAddress); } var contextMenuBody = contextMenuMain.Helpers.Div(); { contextMenuBody.AddClass("Selectable"); // Uncomment if you have an edit profile page // var contextMenuEditProfile = contextMenuBody.Helpers.Div(); // { // contextMenuEditProfile.Helpers.LinkFor(null, null, VirtualPathUtility.ToAbsolute("~/Profile.aspx"), "Edit Profile"); // } // Change password var contextMenuChangePassword = contextMenuBody.Helpers.Div(); { contextMenuChangePassword.Helpers.LinkFor(null, null, VirtualPathUtility.ToAbsolute("~/Account/ChangePassword.aspx"), "Change Password"); } // Logout var contextMenuLogout = contextMenuBody.Helpers.Div(); { contextMenuLogout.Helpers.LinkFor(null, null, defaultUrl + "?SCmd=Logout", "Logout"); } } } } } } else { // Logged out var loggedOutDiv = container.Helpers.Div(); { loggedOutDiv.Style.FontSize = "14px"; loggedOutDiv.Helpers.LinkFor(null, null, loginUrl, "Login").Style["text-decoration"] = "none"; loggedOutDiv.Helpers.Image().Glyph = FontAwesomeIcon.user; } } }