public async Task <BaseApiResponse> ResetPasswordAsync(UserForResetPasswordDto userForResetPasswordDto)
        {
            if (userForResetPasswordDto == null)
            {
                return(BaseApiResponseHelper.GenerateApiResponse(false, "handle your request.", null, new List <string> {
                    "Invalid request."
                }));
            }

            var user = await _userManager.FindByEmailAsync(userForResetPasswordDto.Email);

            if (user == null)
            {
                return(BaseApiResponseHelper.GenerateApiResponse(false, "handle your request.", null, new List <string> {
                    "Could not found any users registered with this email."
                }));
            }

            var decodedToken = WebEncoders.Base64UrlDecode(userForResetPasswordDto.Token);

            string normalToken = Encoding.UTF8.GetString(decodedToken);

            var result = await _userManager.ResetPasswordAsync(user, normalToken, userForResetPasswordDto.NewPassword);

            if (!result.Succeeded)
            {
                return(BaseApiResponseHelper.GenerateApiResponse(false, "handle your request.", null, new List <string> {
                    "Could not reset password."
                }));
            }

            return(BaseApiResponseHelper.GenerateApiResponse(true, "Reset password", null, null));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> GeneratePasswordResetToken(UserForResetPasswordDto userForResetPasswordDto)
        {
            try
            {
                var user = await _userManager.FindByNameAsync(userForResetPasswordDto.Email);

                if (user == null)
                {
                    return(BadRequest("Erreur lors de la réinitialisation de votre mot de passe!"));
                }

                var generatedToken = await _userManager.GeneratePasswordResetTokenAsync(user);

                generatedToken = System.Web.HttpUtility.UrlEncode(generatedToken);

                var content = $"{user.FirstName},<br><p>Quelqu'un a demandé de réinitialiser le mot de passe de votre compte.</p><p>Si vous n'avez pas demandé de réinitialisation de mot de passe, vous pouvez ignorer cet email.</p><p>Aucune modification n'a été apportée à votre compte.</p><p>Pour réinitialiser votre mot de passe, suivez ce lien(ou collez - le dans votre navigateur) dans les 90 prochaines minutes:<br>{this.Request.Scheme}://{this.Request.Host}/resetPassword?token={generatedToken}&email={user.Email}</p>";
                await new Mailer(_config).SendEmail(user.Email, generatedToken, "Réinitialisation de votre mot de passe Goal Management", content);
                return(Ok(new { message = "Le lien de réinitialisation du mot de passe a été envoyé à votre adresse e-mail!" }));
            }
            catch (Exception ex)
            {
                _logger.LogError($"Something went wrong inside GeneratePasswordResetToken endpoint: {ex.Message}");
                return(StatusCode(500, "Internal server error"));
            }
        }
Exemplo n.º 3
0
        public async Task <IActionResult> ResetPassword(UserForResetPasswordDto userForResetPasswordDto)
        {
            try
            {
                var user = await _userManager.FindByNameAsync(userForResetPasswordDto.Email);

                if (user == null)
                {
                    return(BadRequest("Email n'existe plus dans l'application!"));
                }
                try
                {
                    var result = await _userManager.ResetPasswordAsync(user, userForResetPasswordDto.Token, userForResetPasswordDto.NewPassword);

                    if (result.Succeeded)
                    {
                        return(Ok());
                    }
                    return(BadRequest(result.Errors));
                }
                catch (Exception ex)
                {
                    return(BadRequest(ex.Message));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Something went wrong inside ResetPassword endpoint: {ex.Message}");
                return(StatusCode(500, "Internal server error"));
            }
        }
Exemplo n.º 4
0
        public async Task <IActionResult> ResetPassword([FromBody] UserForResetPasswordDto userForResetPasswordDto)
        {
            var response = await _authService.ResetPasswordAsync(userForResetPasswordDto);

            if (!response.Succeeded)
            {
                return(BadRequest(response));
            }

            return(Ok(response));
        }
Exemplo n.º 5
0
        public async virtual Task <IActionResult> ResetPassword(Guid id, [FromBody] UserForResetPasswordDto resetPasswordDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new ApiError(ModelState)));
            }
            try
            {
                var userId = await _userRepository.ResetPassword(id, resetPasswordDto);

                return(Ok(new { id = userId }));
            }
            catch (Exception ex)
            {
                return(BadRequest(new ExceptionResponse(ex.Message)));
            }
        }
Exemplo n.º 6
0
        //[TransactionScopeAspect]
        public IResult ResetPassword(UserForResetPasswordDto userForResetPasswordDto)
        {
            var user = _userService.FindByName(userForResetPasswordDto.UserName);

            if (user == null)
            {
                return(new ErrorResult("User not found"));
            }

            var result = _userService.ResetPassword(user, userForResetPasswordDto.Code, userForResetPasswordDto.Password);

            if (!result.Success)
            {
                return(new ErrorResult(result.Message));
            }

            return(new SuccessResult());
        }
Exemplo n.º 7
0
        public IActionResult ResetPassword(UserForResetPasswordDto userForResetPasswordDto)
        {
            if (!ModelState.IsValid)
            {
                return(View(userForResetPasswordDto));
            }

            var result = _authService.ResetPassword(userForResetPasswordDto);

            if (result.Success)
            {
                return(RedirectToAction("ResetPasswordConfirm"));
            }

            ModelState.AddModelError("", result.Message);

            return(View());
        }
Exemplo n.º 8
0
        public async Task <Guid> ResetPassword(Guid id, UserForResetPasswordDto resetPasswordDto)
        {
            var user = await _entity.SingleOrDefaultAsync(r => r.Id == id);

            if (user == null)
            {
                throw new InvalidOperationException("Can not find object with this Id.");
            }
            var resetToken = await _userManager.GeneratePasswordResetTokenAsync(user);

            await _userManager.ResetPasswordAsync(user, resetToken, resetPasswordDto.Password);

            _entity.Update(user);
            var updated = await _context.SaveChangesAsync();

            if (updated < 1)
            {
                throw new InvalidOperationException("Database context could not update data.");
            }
            return(id);
        }
Exemplo n.º 9
0
        public async Task <IActionResult> ResetPassword([FromBody] UserForResetPasswordDto userForResetPassword)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var user = await _userManager.FindByNameAsync(userForResetPassword.UserName);

            if (user == null)
            {
                return(BadRequest("User Not Found"));
            }

            var passwordResetResult = await _userManager.ChangePasswordAsync(user, userForResetPassword.OldPassword, userForResetPassword.Password);

            if (!passwordResetResult.Succeeded)
            {
                return(BadRequest());
            }
            return(Ok());
        }
Exemplo n.º 10
0
        public IActionResult ResetPassword(string userName, string code)
        {
            if (userName == null || code == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            code = code.Replace(" ", "+");

            var result = _authService.UserExists(userName);

            if (!result.Success)
            {
                throw new ApplicationException(result.Message);
            }
            UserForResetPasswordDto userForResetPasswordDto = new UserForResetPasswordDto {
                Code = code, UserName = userName
            };
            var model = new AccountViewModel {
                userForResetPasswordDto = userForResetPasswordDto
            };

            return(View(model));
        }