Exemplo n.º 1
0
        public async Task <ActionResult> ResetPasswordAsync(ResetPasswordUserVM reset)
        {
            try
            {
                LogTraceVM logTrace = new LogTraceVM(string.Empty, "GetUserById", "GetAllUsers");
                logTrace.Parameters.Add(reset);

                if (ModelState.IsValid)
                {
                    await this._userApplication.ResetPasswordAsync(reset);
                }
                else
                {
                    throw new Exception(string.Join(",", ModelState.Values.Where(value => value.Errors.Any()).Select(value => value.Errors.Select(error => error.ErrorMessage))));
                }

                return(Ok("Your password has been reseted!"));
            }
            catch (Exception error)
            {
                LogErrorVM logError = new LogErrorVM(error.Message, error.StackTrace, "UserController", "CreateUser");
                logError.Parameters.Add(reset);
                this._logger.LogError(error, logError.ToString());
                return(BadRequest(error.Message));
            }
        }
Exemplo n.º 2
0
 public async Task <ApiResponse <ResetPasswordUserVM> > ResetPasswordAsync(ResetPasswordUserVM resetPasswordUserVM)
 {
     try
     {
         return(await _httpClient.PostJTokenAsync <ApiResponse <ResetPasswordUserVM> >("api/account/resetpassword", resetPasswordUserVM));
     }
     catch (Exception ex)
     {
         return(new ApiResponse <ResetPasswordUserVM>(StatusCodeType.Status500InternalServerError, "Api threw an Exception while resetting password", null, null, ex));
     }
 }
Exemplo n.º 3
0
        public async Task ResetPasswordAsync(ResetPasswordUserVM resetPasswordUserVM)
        {
            User user = await this._userManager.FindByNameAsync(resetPasswordUserVM.UserName);

            if (null != user)
            {
                string resetPasswordToken = await this._userManager.GeneratePasswordResetTokenAsync(user);

                await this._userManager.ResetPasswordAsync(user, resetPasswordToken, resetPasswordUserVM.NewPassword);
            }
            else
            {
                throw new Exception("User not found or invalid.");
            }
        }
Exemplo n.º 4
0
        public async Task <ApiResponse <ResetPasswordUserVM> > ResetPasswordAsync(ResetPasswordUserVM userToResetPassword)
        {
            try
            {
                var user = await _userManager.FindByEmailAsync(userToResetPassword.Email);

                if (user == null)
                {
                    return(new ApiResponse <ResetPasswordUserVM>(StatusCodeType.Status401Unauthorized, "There is no User with this Email to Confirm", new[] { new KeyValuePair <string, string>("Email", "No such email") }.ToLookup()));
                }

                var resetPasswordResult = await _userManager.ResetPasswordAsync(user, userToResetPassword.ResetPasswordCode.Base64SafeUrlToUTF8(), userToResetPassword.Password);

                if (!resetPasswordResult.Succeeded)
                {
                    var isInvalidToken = resetPasswordResult.Errors.FirstOrDefault(e => e.Code.EqualsInvariant("InvalidToken"));
                    if (isInvalidToken != null)
                    {
                        return(new ApiResponse <ResetPasswordUserVM>(StatusCodeType.Status401Unauthorized, isInvalidToken.Description, new[] { new KeyValuePair <string, string>(nameof(ResetPasswordUserVM.ResetPasswordCode), isInvalidToken.Description) }.ToLookup()));
                    }
                    var errors = resetPasswordResult.Errors.ToLookup(userToResetPassword.GetPropertyNames());
                    return(new ApiResponse <ResetPasswordUserVM>(StatusCodeType.Status401Unauthorized, "Password Reset Failed", errors));
                }

                if (await _userManager.IsLockedOutAsync(user))
                {
                    await _userManager.SetLockoutEndDateAsync(user, DateTimeOffset.UtcNow);
                }

                return(new ApiResponse <ResetPasswordUserVM>(StatusCodeType.Status200OK, $"Password for User: \"{userToResetPassword.UserName}\" has been changed", null, _mapper.Map(user, userToResetPassword)));
            }
            catch (Exception ex)
            {
                return(new ApiResponse <ResetPasswordUserVM>(StatusCodeType.Status500InternalServerError, "Resetting Password Failed", null, null, ex));
            }
        }