Exemple #1
0
        /// <summary>
        /// Asynchronous Method To Complete Password Change
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <ResponseViewModel> CompleteResetPasswordAsync(CompleteForgotPasswordInputModel model)
        {
            try
            {
                AppUser user = new AppUser().Empty;

                if (model.Platform.ToLower() == Res.MOBILE_PLATFORM)
                {
                    user = await _userManager.FindByEmailAsync(model.Email);
                }
                else
                {
                    var otpCode = _otpService.VerifyToken(model.OtpCode, model.Platform);

                    user = _userManager.FindByIdAsync(otpCode.AppUserId.ToString()).Result;
                }

                if (!user.EmailConfirmed)
                {
                    return(Failed(ResponseMessageViewModel.EMAIL_NOT_CONFIRMED, ResponseErrorCodeStatus.EMAIL_NOT_CONFIRMED));
                }

                try
                {
                    _otpAppService.ValidateOTP(user.Id, model.OtpCode, model.Platform);
                }
                catch (InvalidTokenCodeExcepton e) {
                    return(Failed(e.Message, ResponseErrorCodeStatus.INVALID_CONFIRMATION_CODE));
                }
                catch (ExpiredTokenCodeException e) {
                    return(Failed(e.Message, ResponseErrorCodeStatus.EXPIRED_CONFIRMATION_CODE));
                }

                var token = await _userManager.ResetPasswordAsync(user, user.Token, model.Password);

                if (token.Succeeded)
                {
                    _ = _emailService.SendCompleteResetPassword(user.Email, user.FirstName);

                    return(Ok());
                }

                return(Failed(ResponseMessageViewModel.UNABLE_TO_RESET_PASSWORD, ResponseErrorCodeStatus.UNABLE_TO_RESET_PASSWORD));
            }
            catch (Exception e)
            {
                return(Create(false, ResponseMessageViewModel.UNSUCCESSFUL));
            }
        }
Exemple #2
0
        public async Task <IActionResult> CompleteResetAsync([FromBody] CompleteForgotPasswordInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var result = await _userService.CompleteResetPasswordAsync(model);

            if (result.Status)
            {
                return(Ok(result));
            }

            return(BadRequest(result));
        }