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;
            }
        }
Exemplo n.º 2
0
        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);
            }
        }