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)); }
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); }