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));
        }
Esempio n. 2
0
        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();
        }