Exemple #1
0
        public HttpResponseMessage ResetPassword([FromUri] string email)
        {
            //_emailManager = new EmailManager()
            HttpResponseMessage response = new HttpResponseMessage();

            ResponseFormat responseData;

            var dbUser = db.USERs.Where(c => c.Email == email).FirstOrDefault();

            if (dbUser != null)
            {
                Random r = new Random();
                string validationCode = r.Next(10000, 1000000).ToString("D6");
                var    jwtManager     = JwtTokenManager.GenerateJwtForPasswordReset(validationCode, email);

                _emailManager            = new EmailManager();
                _emailManager.Title      = StaticStrings.RESET_PASSWORD_TITLE;
                _emailManager.Content    = $"<a style='-webkit-appearance:button; -moz-appearance:button; appearance:button; text-decoration:none; background-color: #D93915; color: white; padding: 1em 1.5em; text-transform: uppercase;' href='{StaticStrings.ClientHost}reset_password?key={jwtManager}'>Reset password</a><p style='font-style: italic;'>This link will expire after 30 minutes.</p>";
                _emailManager.Recipients = new List <string>()
                {
                    email
                };
                _emailManager.SendEmail();
                if (_emailManager.isSent)
                {
                    dbUser.RememberMeToken = validationCode;
                    db.SaveChanges();
                    response.StatusCode = HttpStatusCode.OK;
                    responseData        = ResponseFormat.Success;
                }
                else
                {
                    response.StatusCode  = HttpStatusCode.InternalServerError;
                    responseData         = ResponseFormat.Fail;
                    responseData.message = ErrorMessages.EMAIL_SEND_FAILED;
                }
            }
            else
            {
                response.StatusCode  = HttpStatusCode.NotFound;
                responseData         = ResponseFormat.Fail;
                responseData.message = ErrorMessages.USER_NOT_FOUND;
            }
            var json = JsonConvert.SerializeObject(responseData);

            response.Content = new StringContent(json, Encoding.UTF8, "application/json");
            return(response);
        }