public async Task <string> GenerateAccessToken(KmUser user) { var mySecret = this.jwtOptions.Secret; var mySecurityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(mySecret)); var myIssuer = this.jwtOptions.Issuer; var myAudience = this.jwtOptions.Audience; var claims = await this.userManager.GetClaimsAsync(user); claims.Add(new Claim(ClaimTypes.Email, user.Email)); claims.Add(new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())); claims.Add(new Claim("firstname", user.FirstName)); claims.Add(new Claim("lastname", user.LastName)); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.UtcNow.AddDays(7), Issuer = myIssuer, Audience = myAudience, SigningCredentials = new SigningCredentials(mySecurityKey, SecurityAlgorithms.HmacSha256) }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); return(tokenHandler.WriteToken(token)); }
public async Task <IActionResult> Register(EmailPasswordModel model) { var user = await this.userManager.FindByEmailAsync(model.Email); if (user == null) { user = new KmUser() { Email = model.Email, UserName = model.Email }; user.Email = model.Email; var result = await this.userManager.CreateAsync(user, model.Password); if (!result.Succeeded) { return(BadRequest(result.Errors.First().Code)); } await this.accountConfirmationService.SendAccountConfirmationEmail(user); return(Ok()); } else { return(BadRequest("The email has been registered.")); } }
public async Task SendAccountConfirmationEmail(KmUser user) { var token = await userManager.GenerateEmailConfirmationTokenAsync(user); this.emailSender.To = user.Email; this.emailSender.ConfirmationToken = WebUtility.UrlEncode(token); this.emailSender.SendEmail(); }