public IActionResult ResetPasswordRequest([FromBody] PasswordResetRequest model) { if (!ModelState.IsValid) { return(BadRequest("Valid email address is required")); } ActionResponse response = new ActionResponse(); var foundUser = userService.GetUserByEmail(model.Email); if (foundUser != null) { string adminEmail = HttpContext.RequestServices.GetRequiredService <IConfiguration>() .GetValue <String>("Email:Smtp:AdminEmail"); string resetPasswordUrl = configuration["ResetPasswordUrl"]; DateTime datedTime = DateTime.Now; PasswordTokenModel tModel = new PasswordTokenModel() { Email = foundUser.Email, TokenDate = datedTime }; TokenUtility utility = new TokenUtility(); string token = utility.GeneratePasswordResetToken(tModel); PasswordResetEmailModel resetModel = new PasswordResetEmailModel() { Email = foundUser.Email, Token = token, Url = resetPasswordUrl }; response = userService.ResetPasswordRequest(resetModel, datedTime, adminEmail); } return(Ok(response)); }
public string GeneratePasswordResetToken(PasswordTokenModel model) { byte[] time = BitConverter.GetBytes(DateTime.UtcNow.ToBinary()); byte[] key = Guid.NewGuid().ToByteArray(); string token = Convert.ToBase64String((time.Concat(key).ToArray())); return(token); }
public DateTime GetDecodedResetToken(string token) { DateTime tokenTime = DateTime.Now; try { byte[] data = Convert.FromBase64String(token); PasswordTokenModel model = new PasswordTokenModel(); tokenTime = DateTime.FromBinary(BitConverter.ToInt64(data, 0)); return(tokenTime); } catch (Exception ex) { string message = ex.Message; } return(tokenTime); }