public async Task <ActionResult> SendEmailConfirmationCode(ConfirmEmailViewModel confirmEmailViewModel) { if (!ModelState.IsValid) { return(View()); } List <Claim> claims = new List <Claim>() { new Claim(WellKnown.ConfirmEmailViewModelClaim, JsonConvert.SerializeObject(confirmEmailViewModel)) }; var now = DateTime.UtcNow; var lifetime = new Lifetime(now, now.AddMinutes(30)); var jwt = IdentityTokenHelper.BuildJWT(claims, WellKnown.ValidIssuer, WellKnown.EmailConfirmationAudience, lifetime); var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = confirmEmailViewModel.UserId, code = jwt }, protocol: Request.Url.Scheme); await UserManager.EmailService.SendAsync(new IdentityMessage() { Destination = confirmEmailViewModel.Email, Subject = "Confirm your account!", Body = "You have 30 minutes to confirm your account by clicking here: " + callbackUrl }); // Generate the token and send it return(RedirectToAction("EmailConfirmationSent", "Account", new { email = confirmEmailViewModel.Email })); }
public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl) { if (User.Identity.IsAuthenticated) { return(RedirectToAction("Index", "Manage")); } if (ModelState.IsValid) { var loginInfo = Session["UserLoginInfo"] as UserLoginInfo; if (loginInfo == null) { return(RedirectToAction("Login", "Account")); } List <Claim> claims = new List <Claim>() { new Claim(WellKnown.ConfirmEmailViewModelClaim, JsonConvert.SerializeObject(new ConfirmEmailViewModel() { ConfirmEmailPurpose = ConfirmEmailPurpose.ConfirmEmailPurpose_CreateExternalAccount, Email = model.Email })), new Claim(WellKnown.UserLoginInfoClaim, JsonConvert.SerializeObject(loginInfo)), }; var now = DateTime.UtcNow; var lifetime = new Lifetime(now, now.AddMinutes(30)); var jwt = IdentityTokenHelper.BuildJWT(claims, WellKnown.ValidIssuer, WellKnown.EmailConfirmationAudience, lifetime); var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = "na", code = jwt }, protocol: Request.Url.Scheme); await UserManager.EmailService.SendAsync(new IdentityMessage() { Destination = model.Email, Subject = "Confirm your account!", Body = "You have 30 minutes to confirm your account by clicking here: " + callbackUrl }); return(RedirectToAction("EmailConfirmationSent", "Account", new { email = model.Email })); // await UserManager.SendEmailAsync(userId, "Confirm your account", "You have 30 minutes to confirm your account by clicking here: " + callbackUrl); /* * * // Get the information about the user from the external login provider * var info = await AuthenticationManager.GetExternalLoginInfoAsync(); * if (info == null) * { * return View("ExternalLoginFailure"); * } * var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; * var result = await UserManager.CreateAsync(user); * if (result.Succeeded) * { * result = await UserManager.AddLoginAsync(user.Id, info.Login); * if (result.Succeeded) * { * await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); * return RedirectToLocal(returnUrl); * } * } * AddErrors(result); */ } ViewBag.ReturnUrl = returnUrl; return(View(model)); }