Пример #1
0
        public async Task <AuthenticationResponseModel> ConfirmEmailAsync(ConfirmEmailRequestModel confirmEmailRequestModel)
        {
            if (confirmEmailRequestModel == null)
            {
                throw new EShopperException("Please provide required information!");
            }

            EShopperUser getUserDetails = await _eShopperUserManager.FindByEmailAsync(confirmEmailRequestModel.Email);

            if (getUserDetails == null)
            {
                throw new EShopperException("User not found!");
            }

            bool isEmailConfirmed = await _eShopperUserManager.IsEmailConfirmedAsync(getUserDetails);

            if (isEmailConfirmed)
            {
                throw new EShopperException("Email address already confirmed!");
            }

            IdentityResult confirmEmailResult = await _eShopperUserManager.ConfirmEmailAsync(getUserDetails, confirmEmailRequestModel.ConfirmationToken);

            if (confirmEmailResult.Succeeded)
            {
                return(new AuthenticationResponseModel
                {
                    Message = "Email address successfully confirmed!"
                });
            }

            throw new EShopperException();
        }
        public async Task <LoginResponseModel> ConfirmEmail(ConfirmEmailRequestModel model)
        {
            var user = _unitOfWork.Repository <ApplicationUser>().Find(x => x.Email == model.Email);

            var token = HttpUtility.UrlDecode(model.Token).Replace(" ", "+");

            if (user == null)
            {
                throw new CustomException(HttpStatusCode.BadRequest, "email", "Email is invalid");
            }

            if (user.EmailConfirmed)
            {
                throw new CustomException(HttpStatusCode.BadRequest, "token", "The email address has been already verified");
            }

            // Confirm email
            var confirmResult = await _userManager.ConfirmEmailAsync(user, token);

            if (!confirmResult.Succeeded)
            {
                throw new CustomException(HttpStatusCode.BadRequest, "token", "The verification link is not active");
            }

            return(await _jwtService.BuildLoginResponse(user));
        }
Пример #3
0
        public async Task <IActionResult> ConfirmEmail(ConfirmEmailRequestModel model)
        {
            try
            {
                var user = await _accountService.ConfirmEmail(new ()
                {
                    Email = model.Email,
                    Pin   = model.Pin
                });

                if (user.EmailConfirmed == false)
                {
                    return(BadRequest(new ErrorViewModel()
                    {
                        ErrorKey = "pin_incorrect"
                    }));
                }

                return(Ok());
            }
            catch (UserNotFoundException)
            {
                return(BadRequest(new ErrorViewModel()
                {
                    ErrorKey = "username_not_found"
                }));
            }
            catch (UserLockedOutException)
            {
                return(BadRequest(new ErrorViewModel()
                {
                    ErrorKey = "user_locked_out"
                }));
            }
            catch (Exception)
            {
                return(StatusCode(500, ErrorViewModel.UNHANDLED_EXCEPTION));
            }
        }
        public async Task <IActionResult> ConfirmEmail([FromBody] ConfirmEmailRequestModel model)
        {
            var response = await _accountService.ConfirmEmail(model);

            return(Json(new JsonResponse <LoginResponseModel>(response)));
        }
Пример #5
0
        public async Task <IActionResult> ConfirmEmail([FromQuery] ConfirmEmailRequestModel confirmEmailRequestModel)
        {
            var response = await _authenticationService.ConfirmEmailAsync(confirmEmailRequestModel);

            return(Ok(response));
        }
Пример #6
0
        public virtual async Task <IActionResult> ConfirmEmail([FromBody] ConfirmEmailRequestModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = await UserManager.FindByIdAsync(model.UserId);

            if (user == null)
            {
                return(BadRequest());
            }

            var token        = model.Token;
            var isTokenValid = await UserManager.VerifyUserTokenAsync(user,
                                                                      UserManager.Options.Tokens.EmailConfirmationTokenProvider, "EmailConfirmation", token);

            if (!isTokenValid)
            {
                return(BadRequest(new[]
                {
                    new ErrorResponseModel
                    {
                        Code = "OperationFailed", Description = "The confirmation token is invalid or expired."
                    }
                }));
            }

            if (await UserManager.IsEmailConfirmedAsync(user))
            {
                return(BadRequest(new[]
                {
                    new ErrorResponseModel
                    {
                        Code = "OperationFailed", Description = "Your email address is already confirmed."
                    }
                }));
            }

            var result = await UserManager.ConfirmEmailAsync(user, token);

            if (!result.Succeeded)
            {
                return(BadRequest(new[]
                {
                    new ErrorResponseModel
                    {
                        Code = "OperationFailed", Description = "Could not confirm your email address. "
                    }
                }));
            }

            var roles = await UserManager.GetRolesAsync(user);

            return(Ok(new
            {
                message = "Your email is now confirmed.",
                session = _jwtFactory.GenerateSession(user.UserName, roles, user.Id)
            }
                      ));
        }