public ResultMessage ChangePassword(ChanePasswordDto data) { try { var user = _unitOfWork.UsersRepository.Get(u => u.Id == data.UserId).First(); if (user == null) { return new ResultMessage { Status = HttpStatusCode.BadRequest, ErrorCode = (int)AuthenticationErrorsCodeEnum.UserDoesNotExist } } ; if (user.IsBlocked) { return new ResultMessage { Status = HttpStatusCode.BadRequest, ErrorCode = (int)AuthenticationErrorsCodeEnum.UserBlocked } } ; if (!VerifyPasswordHash(data.OldPassword, user.PasswordHash, user.PasswordSalt)) { return new ResultMessage { Status = HttpStatusCode.BadRequest, ErrorCode = (int)AuthenticationErrorsCodeEnum.OldPasswordMismatch } } ; CreatePasswordHash(data.NewPassword, out byte[] passwordHash, out byte[] passwordSalt); user.PasswordHash = passwordHash; user.PasswordSalt = passwordSalt; user.SecurityStamp = Helper.GenerateToken(); _unitOfWork.UsersRepository.Update(user); _unitOfWork.Commit(); return(new ResultMessage { Status = HttpStatusCode.OK, Data = AuthenticateUser(user) }); } catch (Exception ex) { _logger.LogError(ex, string.Empty); return(new ResultMessage { Status = HttpStatusCode.InternalServerError, ErrorCode = (int)AuthenticationErrorsCodeEnum.AuthenticationError }); } }
public IActionResult ChangePassword([FromBody] ChanePasswordDto data) { data.UserId = User.Identity.Name; return(GetStatusCodeResult(_userService.ChangePassword(data))); }