private async Task <string> GenerateJwtToken(string username, RepairTrackingUser user) { var roles = await userManager.GetRolesAsync(user); var claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.Sub, username), new Claim(JwtRegisteredClaimNames.Email, user.Email), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(ClaimTypes.NameIdentifier, user.Id) }; claims.AddRange(roles.Select(x => new Claim(ClaimTypes.Role, x))); var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(this.configuration["JWT:JwtKey"])); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var expires = DateTime.Now.AddDays(Convert.ToDouble(this.configuration["JWT:JwtExpireDays"])); var token = new JwtSecurityToken( this.configuration["JWT:JwtIssuer"], this.configuration["JWT:JwtIssuer"], claims, expires: expires, signingCredentials: creds ); return(new JwtSecurityTokenHandler().WriteToken(token)); }
public static async Task CreateAdmin(this IServiceProvider serviceProvider) { //initializing custom roles var UserManager = serviceProvider.GetRequiredService <UserManager <RepairTrackingUser> >(); string[] roleNames = { "Admin", "Employee" }; var admin = await UserManager.FindByEmailAsync("*****@*****.**"); if (admin == null) { admin = new RepairTrackingUser() { UserName = "******", Email = "*****@*****.**", }; var result = await UserManager.CreateAsync(admin, "1234ABab@"); if (result.Succeeded) { await UserManager.AddToRoleAsync(admin, "Admin"); } ; } }