Exemple #1
0
        public async Task <IActionResult> DemandPasswordReset(DemandPasswordResetModel model)
        {
            if (model.IsNotValid())
            {
                model.SetInputModelValues();
                return(View(model));
            }

            var request  = new DemandPasswordResetRequest(model.Email);
            var response = await OrganizationService.DemandPasswordReset(request);

            if (response.Status.IsNotSuccess)
            {
                return(RedirectToAccessDenied());
            }

            return(Redirect("/User/DemandPasswordResetDone"));
        }
        public async Task <DemandPasswordResetResponse> DemandPasswordReset(DemandPasswordResetRequest request)
        {
            var response = new DemandPasswordResetResponse();

            var user = await _userRepository.Select(x => x.Email == request.Email);

            if (!user.IsExist())
            {
                response.SetInvalid();
                response.ErrorMessages.Add("user_not_found");
                return(response);
            }

            if (!user.IsActive)
            {
                response.ErrorMessages.Add("user_is_not_active");
                response.Status = ResponseStatus.Invalid;
                return(response);
            }

            if (user.PasswordResetRequestedAt.HasValue &&
                user.PasswordResetRequestedAt.Value.AddMinutes(2) < DateTime.UtcNow)
            {
                response.ErrorMessages.Add("already_requested_password_reset_in_last_two_minutes");
                response.Status = ResponseStatus.Invalid;
                return(response);
            }

            user.PasswordResetRequestedAt = DateTime.UtcNow;
            user.PasswordResetToken       = Guid.NewGuid();

            var result = await _userRepository.Update(user.Id, user);

            if (result)
            {
                //todo:send email

                response.Status = ResponseStatus.Success;
                return(response);
            }

            response.SetFailed();
            return(response);
        }
        public static DemandPasswordResetRequest GetDemandPasswordResetRequest()
        {
            var request = new DemandPasswordResetRequest(EmailOne);

            return(request);
        }