示例#1
0
        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));
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }