protected object GenerateJwtToken(BookshelfIdentityUser identityUser) { var claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.Jti, identityUser.Id.ToString()), new Claim(JwtRegisteredClaimNames.Sub, identityUser.IdInApplication.ToString()) }; var roles = userManager.GetRolesAsync(identityUser).Result; claims.AddRange(roles.Select(role => new Claim(ClaimsIdentity.DefaultRoleClaimType, role))); var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(globalConfig.JwtKey)); var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var expires = DateTime.Now.AddDays(Convert.ToDouble(globalConfig.JwtExpireDays)); var token = new JwtSecurityToken( globalConfig.JwtIssuer, globalConfig.JwtAudience, claims, expires: expires, signingCredentials: credentials ); return(new { Token = new JwtSecurityTokenHandler().WriteToken(token) }); }
public async Task <Guid> RegisterAsync(string email, string password, string firstName, string lastName) { var rolesInDb = roleManager.Roles.ToList(); if (rolesInDb.Count == 0) { await roleManager.CreateAsync(new IdentityRole <Guid> { Name = System.Enum.GetName(typeof(RoleType), RoleType.Account) }); await roleManager.CreateAsync(new IdentityRole <Guid> { Name = System.Enum.GetName(typeof(RoleType), RoleType.Root) }); } var aspnetUser = new BookshelfIdentityUser { UserName = email, Email = email }; var creationResult = await userManager.CreateAsync(aspnetUser, password); if (creationResult != IdentityResult.Success) { throw new ApplicationException($"Register failed. {string.Join("\r\n", creationResult.Errors)}"); } var identityUser = await userManager.FindByNameAsync(email); var roleAssignmentResult = await userManager.AddToRoleAsync(identityUser, System.Enum.GetName(typeof(RoleType), RoleType.Account)); if (roleAssignmentResult != IdentityResult.Success) { throw new ApplicationException($"Role assignment failed. {string.Join("\r\n", roleAssignmentResult.Errors)}"); } return(aspnetUser.Id); }