コード例 #1
0
        public async Task <IActionResult> OnPostGenerateResetPasswordUrl([FromBody] GenerateResetPasswordUrlRequest request)
        {
            ModelState.Clear(); // needed to prevent other forms being included in validation
            if (TryValidateModel(request))
            {
                var response = await _userService.GenerateResetPasswordUrl(request);

                if (response.IsSuccessful)
                {
                    return(new JsonResult(response));
                }
                AddFormErrors(response);
                return(new UnprocessableEntityObjectResult(ModelState));
            }
            return(new BadRequestObjectResult(ModelState));
        }
コード例 #2
0
        public async Task <GenerateResetPasswordUrlResponse> GenerateResetPasswordUrl(GenerateResetPasswordUrlRequest request)
        {
            var response = new GenerateResetPasswordUrlResponse();

            var resetToken = string.Empty;

            UserEntity user;

            using (var uow = _uowFactory.GetUnitOfWork())
            {
                user = await uow.UserRepo.GetUserById(new Repositories.DatabaseRepos.UserRepo.Models.GetUserByIdRequest()
                {
                    Id = request.UserId
                });

                resetToken = GenerateUniqueUserToken(uow);

                await uow.UserRepo.CreateUserToken(new Repositories.DatabaseRepos.UserRepo.Models.CreateUserTokenRequest()
                {
                    User_Id    = request.UserId,
                    Token      = new Guid(resetToken),
                    Type_Id    = (int)TokenTypeEnum.ResetPassword,
                    Created_By = ApplicationConstants.SystemUserId,
                });

                uow.Commit();
            }

            var baseUrl = _httpContextAccessor.HttpContext.Request.GetBaseUrl();

            response.Url = $"{baseUrl}/Account/ResetPassword?token={resetToken}";

            await _sessionManager.WriteSessionLogEvent(new Models.ManagerModels.Session.CreateSessionLogEventRequest()
            {
                EventKey = SessionEventKeys.ResetPasswordUrlGenerated,
                Info     = new Dictionary <string, string>()
                {
                    { "User_Id", request.UserId.ToString() }
                }
            });

            return(response);
        }