Esempio n. 1
0
        public async Task <EmailTemplate> GetForgotPasswordEmailAsync(ForgotPasswordEmailViewModel forgotPasswordEmailViewModel, CultureInfo cultureInfo)
        {
            CultureInfo cultureInfoBackup = CultureInfo.CurrentCulture;

            CultureInfo.CurrentCulture   = cultureInfo;
            CultureInfo.CurrentUICulture = cultureInfo;

            string view = GetForgotPasswordEmailView(cultureInfo);

            if (string.IsNullOrEmpty(view))
            {
                throw new Exception("Forgot password email view model path is empty");
            }

            string subject = GetForgotPasswordEmailSubject(cultureInfo);

            if (string.IsNullOrEmpty(subject))
            {
                throw new Exception("Forgot password email subject is empty");
            }

            string body = await _templateRenderer.RenderViewAsync(view, forgotPasswordEmailViewModel).ConfigureAwait(false);

            CultureInfo.CurrentCulture   = cultureInfoBackup;
            CultureInfo.CurrentUICulture = cultureInfoBackup;

            return(new EmailTemplate(subject, body));
        }
Esempio n. 2
0
        public async Task <IActionResult> ResetPassword([FromBody] ForgotPasswordEmailViewModel forgotPasswordEmail)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Model State Is not valid!"));
            }

            var user = await _userManager.FindByEmailAsync(forgotPasswordEmail.Email);

            if (user == null)
            {
                return(BadRequest("Email is incorrect."));
            }

            var code = await _userManager.GeneratePasswordResetTokenAsync(user);


            var callbackUrlCode   = Uri.EscapeDataString(code);
            var callbackUrlString = $"https://localhost:44312/auth/resetpassword?userId={user.Id}&code={callbackUrlCode}&page=resetpassword";

            await _emailSender.SendEmailAsync(forgotPasswordEmail.Email, "Confirm your email",
                                              $"Hello, <br /> You can reset your password with <a href='{HtmlEncoder.Default.Encode(callbackUrlString)}'>clicking here</a>.");

            // await _signInManager.SignInAsync(user, isPersistent: false);
            return(new OkObjectResult("Message Sent"));
        }
Esempio n. 3
0
        public async Task <IActionResult> ForgotPassword(ForgotPasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            Adherent stolonsUser = _context.Adherents.FirstOrDefault(x => model.Email.Equals(x.Email, StringComparison.CurrentCultureIgnoreCase));

            if (stolonsUser == null)
            {
                return(View("ForgotPasswordConfirmation"));
            }
            ApplicationUser appUser = await _userManager.FindByEmailAsync(stolonsUser.Email.ToString());

            string resetPasswordToken = await _userManager.GeneratePasswordResetTokenAsync(appUser);

            resetPasswordToken = System.Net.WebUtility.UrlEncode(resetPasswordToken);
            string link = "http://" + Configurations.SiteUrl + "/Account/ResetPassword?token=" + resetPasswordToken + "&mail=" + stolonsUser.Email;

            //Send mail
            ForgotPasswordEmailViewModel vmodel = new ForgotPasswordEmailViewModel(stolonsUser, link);

            AuthMessageSender.SendEmail(Configurations.Application.StolonsLabel, stolonsUser.Email, stolonsUser.Name, "Stolons: Oubli de votre mot de passe", base.RenderPartialViewToString("ResetPasswordEmailTemplate", vmodel), null, null);
            return(View("ForgotPasswordConfirmation"));
        }