Example #1
0
        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
                });
            }
        }
Example #2
0
 public IActionResult ChangePassword([FromBody] ChanePasswordDto data)
 {
     data.UserId = User.Identity.Name;
     return(GetStatusCodeResult(_userService.ChangePassword(data)));
 }