protected virtual async Task <IEnumerable <Claim> > GetClaimsFromAccount(TUser user) { var claims = new List <Claim> { new Claim(Constants.ClaimTypes.Subject, user.Id.ToString()), new Claim(Constants.ClaimTypes.PreferredUserName, user.UserName), }; if (userManager.SupportsUserEmail) { var email = await userManager.GetEmailAsync(user.Id); if (!String.IsNullOrWhiteSpace(email)) { claims.Add(new Claim(Constants.ClaimTypes.Email, email)); var verified = await userManager.IsEmailConfirmedAsync(user.Id); claims.Add(new Claim(Constants.ClaimTypes.EmailVerified, verified ? "true" : "false")); } } if (userManager.SupportsUserPhoneNumber) { var phone = await userManager.GetPhoneNumberAsync(user.Id); if (!String.IsNullOrWhiteSpace(phone)) { claims.Add(new Claim(Constants.ClaimTypes.PhoneNumber, phone)); var verified = await userManager.IsPhoneNumberConfirmedAsync(user.Id); claims.Add(new Claim(Constants.ClaimTypes.PhoneNumberVerified, verified ? "true" : "false")); } } if (userManager.SupportsUserClaim) { claims.AddRange(await userManager.GetClaimsAsync(user.Id)); } if (userManager.SupportsUserRole) { var roleClaims = from role in await userManager.GetRolesAsync(user.Id) select new Claim(Constants.ClaimTypes.Role, role); claims.AddRange(roleClaims); } return(claims); }
public async Task <IActionResult> ForgotPassword(ForgotPasswordViewModel model) { if (ModelState.IsValid) { var user = await _userManager.FindByNameAsync(model.Email); if (user == null || !(await _userManager.IsEmailConfirmedAsync(user))) { // Don't reveal that the user does not exist or is not confirmed return(View("ForgotPasswordConfirmation")); } // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713 // Send an email with this link //var code = await _userManager.GeneratePasswordResetTokenAsync(user); //var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme); //await _emailSender.SendEmailAsync(model.Email, "Reset Password", // "Please reset your password by clicking here: <a href=\"" + callbackUrl + "\">link</a>"); //return View("ForgotPasswordConfirmation"); } // If we got this far, something failed, redisplay form return(View(model)); }