Esempio n. 1
0
        public async Task <IActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                UserApp user = new UserApp()
                {
                    Email = model.Email, UserName = model.Username, Country = model.Country
                };
                user.Token = TokenGenerator.Generate();
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await _signInManager.SignInAsync(user, false);

                    AuthMessageSender sender  = new AuthMessageSender();
                    string            baseUrl = $"{this.Request.Scheme}://{this.Request.Host}/";
                    string            url     = baseUrl + "EmailConfirmed/" + user.Token;
                    string            message = EmailMessageGenerator.GenerateEmailConfirmMessage(url);

                    sender.SendEmailAsync(user.Email, "Please confirm your email", message);
                    return(Redirect(baseUrl));
                }
                else
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                }
            }
            return(View(model));
        }
Esempio n. 2
0
        public async Task <IActionResult> ForgotPassword(ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByEmailAsync(model.Email);

                if (user == null) //|| !(await _userManager.IsEmailConfirmedAsync(user)))
                {
                    return(View("ForgotPasswordConfirmation"));
                }

                var token = await _userManager.GeneratePasswordResetTokenAsync(user);

                AuthMessageSender authMessage = new AuthMessageSender();
                string            header      = "Reset Password";
                var callbackUrl = Url.Action("ResetPassword", "User", new { userId = user.Id, token = token }, protocol: HttpContext.Request.Scheme);

                string message = EmailMessageGenerator.GenerateResetPasswordMessage(callbackUrl);
                await authMessage.SendEmailAsync(model.Email, "Reset Password", message);

                return(View("ForgotPasswordConfirmation"));
            }
            return(View(model));
        }