예제 #1
0
        public async Task <bool> ResetPasswordAsync(PasswordResetData passwordResetData, string accessToken)
        {
            httpClient.SetBearerToken(accessToken);
            var response = await httpClient.PostAsJsonAsync(Controller + "ResetPassword", passwordResetData);

            return(await response.CreateResponseAsync <bool>());
        }
예제 #2
0
        public async Task <IHttpActionResult> ResetPassword(PasswordResetData model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            IdentityResult result = null;

            try
            {
                result = await userManager.ResetPasswordAsync(model.UserId.ToString(), model.Token, model.Password);

                if (!result.Succeeded)
                {
                    return(GetErrorResult(result));
                }
            }
            catch (InvalidOperationException)
            {
                // Because an invalid token or an invalid password does not throw an error on reset,
                // we can say the only other parameter (user Id) is invalid.
                ModelState.AddModelError(string.Empty, "User not recognised");
                return(BadRequest(ModelState));
            }

            return(Ok(result.Succeeded));
        }
예제 #3
0
        public async Task <IHttpActionResult> IsPasswordResetTokenValid(PasswordResetData model)
        {
            string userId = model.UserId.ToString();

            bool result = await userManager.VerifyUserTokenAsync(userId, "ResetPassword", model.Token);

            return(Ok(result));
        }
예제 #4
0
        public async Task <IActionResult> ResetPassword([FromBody, BindRequired] PasswordResetData data)
        {
            var result = await _passwordResetService.ResetPassword(data.Token, data.NewPassword);

            if (result)
            {
                return(Ok());
            }
            return(Forbid());
        }
예제 #5
0
        public async Task <ActionResult> ResetPassword(Guid id, string token, ResetPasswordModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (var client = apiClient())
            {
                var passwordResetData = new PasswordResetData
                {
                    Password = model.Password,
                    Token    = token,
                    UserId   = id
                };

                try
                {
                    var response = await apiClientCredential().GetClientCredentialsAsync();

                    bool result = await client.User.ResetPasswordAsync(passwordResetData, response.AccessToken);

                    return(View(!result ? "ResetPasswordExpired" : "ResetPasswordComplete"));
                }
                catch (ApiBadRequestException ex)
                {
                    this.HandleBadRequest(ex);

                    if (ModelState.IsValid)
                    {
                        throw;
                    }

                    foreach (var modelState in ViewData.ModelState.Values.ToList())
                    {
                        List <int> errorsToRemoveIndex = new List <int>();
                        for (var i = modelState.Errors.Count - 1; i >= 0; i--)
                        {
                            if (modelState.Errors[i].ErrorMessage.Contains("Passwords") && modelState.Value == null)
                            {
                                errorsToRemoveIndex.Add(i);
                            }
                        }
                        foreach (int index in errorsToRemoveIndex)
                        {
                            modelState.Errors.RemoveAt(index);
                        }
                    }
                }
                return(View(model));
            }
        }
예제 #6
0
        public async Task <ActionResult> ResetPassword(PasswordResetData DataToReset, CancellationToken Cancel)
        {
            try
            {
                await JwtAuthenticationService.ResetPassword(DataToReset.NewPassword, DataToReset.Hash, Cancel);

                return(Ok());
            }
            catch
            {
                return(BadRequest());
            }
        }
예제 #7
0
        public async Task <ActionResult> ResetPassword(Guid id, string token)
        {
            using (var client = apiClient())
            {
                var passwordResetData = new PasswordResetData
                {
                    Password = string.Empty,
                    Token    = token,
                    UserId   = id
                };

                var response = await apiClientCredential().GetClientCredentialsAsync();

                bool result = await client.User.IsPasswordResetTokenValidAsync(passwordResetData, response.AccessToken);

                return(View(!result ? "ResetPasswordExpired" : "ResetPassword"));
            }
        }
예제 #8
0
        public async Task <ActionResult> ResetPassword(Guid id, string token, ResetPasswordModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (var client = apiClient())
            {
                var passwordResetData = new PasswordResetData
                {
                    Password = model.Password,
                    Token    = token,
                    UserId   = id
                };

                try
                {
                    var response = await apiClientCredential().GetClientCredentialsAsync();

                    bool result = await client.User.ResetPasswordAsync(passwordResetData, response.AccessToken);

                    return(View(!result ? "ResetPasswordExpired" : "ResetPasswordComplete"));
                }
                catch (ApiBadRequestException ex)
                {
                    this.HandleBadRequest(ex);

                    if (ModelState.IsValid)
                    {
                        throw;
                    }
                    AddRemoveModelStateErrors();
                }
                return(View(model));
            }
        }
        public async Task<ActionResult> ResetPassword(Guid id, string token, ResetPasswordModel model)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            using (var client = apiClient())
            {
                var passwordResetData = new PasswordResetData
                {
                    Password = model.Password,
                    Token = token,
                    UserId = id
                };

                try
                {
                    bool result = await client.User.ResetPasswordAsync(passwordResetData);

                    return View(!result ? "ResetPasswordExpired" : "ResetPasswordComplete");
                }
                catch (ApiBadRequestException ex)
                {
                    this.HandleBadRequest(ex);

                    if (ModelState.IsValid)
                    {
                        throw;
                    }
                    AddRemoveModelStateErrors();
                }
                return View(model);
            }
        }
        public async Task<ActionResult> ResetPassword(Guid id, string token)
        {
            using (var client = apiClient())
            {
                var passwordResetData = new PasswordResetData
                {
                    Password = string.Empty,
                    Token = token,
                    UserId = id
                };

                bool result = await client.User.IsPasswordResetTokenValidAsync(passwordResetData);
                return View(!result ? "ResetPasswordExpired" : "ResetPassword");
            }
        }
        public async Task<IHttpActionResult> ResetPassword(PasswordResetData model)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            try
            {
                var result = await userManager.ResetPasswordAsync(model.UserId.ToString(), model.Token, model.Password);

                if (!result.Succeeded)
                {
                    return GetErrorResult(result);
                }
            }
            catch (InvalidOperationException)
            {
                // Because an invalid token or an invalid password does not throw an error on reset, we can say the only other parameter (user Id) is invalid
                ModelState.AddModelError(string.Empty, "User not recognised");
                return BadRequest(ModelState);
            }

            return Ok(true);
        }
예제 #12
0
        public async Task<bool> ResetPasswordAsync(PasswordResetData passwordResetData)
        {
            var response = await httpClient.PostAsJsonAsync(Controller + "ResetPassword", passwordResetData);

            return await response.CreateResponseAsync<bool>();
        }
        public async Task<ActionResult> ResetPassword(Guid id, string token, ResetPasswordModel model)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            using (var client = apiClient())
            {
                var passwordResetData = new PasswordResetData
                {
                    Password = model.Password,
                    Token = token,
                    UserId = id
                };

                try
                {
                    bool result = await client.User.ResetPasswordAsync(passwordResetData);
                    return View(!result ? "ResetPasswordExpired" : "ResetPasswordComplete");
                }
                catch (ApiBadRequestException ex)
                {
                    this.HandleBadRequest(ex);

                    if (ModelState.IsValid)
                    {
                        throw;
                    }

                    foreach (var modelState in ViewData.ModelState.Values.ToList())
                    {
                        List<int> errorsToRemoveIndex = new List<int>();
                        for (var i = modelState.Errors.Count - 1; i >= 0; i--)
                        {
                            if (modelState.Errors[i].ErrorMessage.Contains("Passwords") && modelState.Value == null)
                            {
                                errorsToRemoveIndex.Add(i);
                            }
                        }
                        foreach (int index in errorsToRemoveIndex)
                        {
                            modelState.Errors.RemoveAt(index);
                        }
                    }
                }
                return View(model);
            }
        }
        public async Task<IHttpActionResult> IsPasswordResetTokenValid(PasswordResetData model)
        {
            string userId = model.UserId.ToString();

            bool result = await userManager.VerifyUserTokenAsync(userId, "ResetPassword", model.Token);

            return Ok(result);
        }