/// <summary> /// Change password /// </summary> /// <param name="request">Request</param> /// <returns>Result</returns> public virtual ChangePasswordResult ChangePassword(ChangePasswordRequest request) { if (request == null) throw new ArgumentNullException("request"); var result = new ChangePasswordResult(); if (String.IsNullOrWhiteSpace(request.Username)) { result.AddError(_localizationService.GetResource("Account.ChangePassword.Errors.EmailIsNotProvided")); return result; } if (String.IsNullOrWhiteSpace(request.NewPassword)) { result.AddError(_localizationService.GetResource("Account.ChangePassword.Errors.PasswordIsNotProvided")); return result; } var user = _userService.GetUserByUsername(request.Username); if (user == null) { result.AddError(_localizationService.GetResource("Account.ChangePassword.Errors.UsernameNotFound")); return result; } var requestIsValid = false; if (request.ValidateRequest) { //password string oldPwd = ""; switch (user.PasswordFormat) { case PasswordFormat.Encrypted: oldPwd = _encryptionService.EncryptText(request.OldPassword); break; case PasswordFormat.Hashed: oldPwd = _encryptionService.CreatePasswordHash(request.OldPassword, user.PasswordSalt); break; default: oldPwd = request.OldPassword; break; } bool oldPasswordIsValid = oldPwd == user.Password; if (!oldPasswordIsValid) result.AddError(_localizationService.GetResource("Account.ChangePassword.Errors.OldPasswordDoesntMatch")); if (oldPasswordIsValid) requestIsValid = true; } else requestIsValid = true; //at this point request is valid if (requestIsValid) { switch (request.NewPasswordFormat) { case PasswordFormat.Clear: { user.Password = request.NewPassword; } break; case PasswordFormat.Encrypted: { user.Password = _encryptionService.EncryptText(request.NewPassword); } break; case PasswordFormat.Hashed: { string saltKey = _encryptionService.CreateSaltKey(5); user.PasswordSalt = saltKey; user.Password = _encryptionService.CreatePasswordHash(request.NewPassword, saltKey); } break; default: break; } user.PasswordFormat = request.NewPasswordFormat; _userService.UpdateUser(user); var userContext = new UserContext { User = user, Cancel = false }; foreach (var userEventHandler in _userEventHandlers) { userEventHandler.ChangePassword(userContext); } } return result; }
/// <summary> /// Insert a User /// </summary> /// <param name="user">User</param> public virtual void InsertUser(User user) { if (user == null) throw new ArgumentNullException("User"); var userContext = new UserContext { User = user, Cancel = false }; foreach(var userEventHandler in _userEventHandlers) { userEventHandler.Creating(userContext); } _userRepository.Insert(user); foreach (var userEventHandler in _userEventHandlers) { userEventHandler.Created(userContext); } }