public IWebSession ChangePassword(string oldPassword, string newPassword) { var userId = m_session.User.Id; oldPassword = oldPassword.Trim(); newPassword = newPassword.Trim(); if (oldPassword == newPassword) { return(null); } if (newPassword.Length < 6) { throw new InvalidOperationException("Heslo musí mít alespoň 6 znaků"); } using (var tran = m_database.OpenTransaction()) { var user = m_database.SelectFrom <IUser>().Where(i => i.Id == WebSession.User.Id).Execute().FirstOrDefault(); if (user == null) { return(null); } if (!WebSession.VerifyPassword(user.PasswordHash, oldPassword, user.UsesDefaultPassword)) { throw new InvalidOperationException("Staré heslo není platné"); } user.PasswordHash = PasswordHashHelper.Hash(newPassword); user.UsesDefaultPassword = false; m_database.Save(user); WebSession.Logout(); WebSession.Login(user.EMail, newPassword); WebSession.Logout(); tran.Commit(); } m_repository.InvalidateUserCache(userId); return(WebSession); }
public IWebSession Login(string user, string password) { try { m_log.Info($"Login requested for user {user}"); WebSession.Login(user, password); if (WebSession.User == null) { m_log.Error($"Login failed for user {user}"); return(WebSession); } } catch (Exception ex) { m_log.Error($"Login failed for user {user}", ex); throw; } m_log.Info($"{user} successfully logged in"); return(WebSession); }