public async Task <IHttpActionResult> ForgottenPassword([FromBody] ForgottenUserPasswordRequest request) { try { if (ModelState.IsValid) { await _userService.SendRequestForgottenPassword(request); return(Ok()); } return(BadRequest(ModelState)); } catch (Exception ex) { HttpContext.Current.Response.StatusCode = 500; throw ex; } }
public async Task SendRequestForgottenPassword(ForgottenUserPasswordRequest request) { Users user = await _repository.GetDataAsync(x => x.UserName == request.UserName); if (user == null) { throw new Exception("User not found"); } var claimIdentity = new ClaimsIdentity(new Claim[] { new Claim("UserId", user.Id.ToString()), new Claim("RoleId", user.RoleId.ToString()), new Claim("UserName", user.UserName) }); var token = JwtTokenHelper.CreateToken( claimIdentity, Settings.TokenExpire, Settings.JwtSecretKey ); using (var client = new WebClient()) { var path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + Settings.ForgottenPasswordTemplate; var htmlCode = client.DownloadString(path); var url = string.Format("{0}{1}{2}?token={3}", Settings.CorsDomain, Settings.Domain, Settings.ResetPasswordUrl, token); var body = htmlCode.Replace("_@1_", url); var mailRequest = new MailRequest() { Body = body, Subject = "Mot de passe oublié", Recipient = user.UserName }; MailHelper.SendMailSuccess(mailRequest); } }