private async Task <JwtSecurityToken> GenerateJWT(VehicleTrackingUser vehicleTrackingUser) { var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Tokens:Key"])); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var expires = DateTime.UtcNow.AddMinutes(double.Parse(_configuration["Tokens:ExpiryMinutes"])).ToUniversalTime(); var claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.Sub, vehicleTrackingUser.Email), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(ClaimTypes.NameIdentifier, vehicleTrackingUser.Id.ToString()) }; //Assign Roles var roles = await _userManager.GetRolesAsync(vehicleTrackingUser); foreach (var r in roles) { claims.Add(new Claim(ClaimTypes.Role, r)); } return(new JwtSecurityToken( _configuration["Tokens:Issuer"], _configuration["Tokens:Audience"], claims, expires: expires, signingCredentials: creds)); }
public static async Task SeedData(UserManager <VehicleTrackingUser> userManager, RoleManager <IdentityRole <Guid> > roleManager) { //Add role var initRole = new string [] { "User", "Admin" }; foreach (var role in initRole) { var isExisted = await roleManager.RoleExistsAsync(role); if (!isExisted) { await roleManager.CreateAsync(new IdentityRole <Guid>(role)); } } //Add VehicleTrackingUser var user = await userManager.FindByEmailAsync("*****@*****.**"); if (user == null) { user = new VehicleTrackingUser() { UserName = "******", Email = "*****@*****.**" }; await userManager.CreateAsync(user, "12345"); } await userManager.AddToRoleAsync(user, "User"); //Add Admin var admin = await userManager.FindByEmailAsync("*****@*****.**"); if (admin == null) { admin = new VehicleTrackingUser() { UserName = "******", Email = "*****@*****.**" }; await userManager.CreateAsync(admin, "12345abc"); } await userManager.AddToRoleAsync(admin, "Admin"); }
public async Task <string> Register(RegisterRequest resigerInfo) { var user = new VehicleTrackingUser() { UserName = resigerInfo.UserName, Email = resigerInfo.Email }; var createResult = await _userManager.CreateAsync(user, resigerInfo.Password); if (!createResult.Succeeded) { throw new CreateUserFailException(ErrorCode.E003); } //Set default Role is vehicleTrackingUser await _userManager.AddToRoleAsync(user, "VehicleTrackingUser"); var token = await GenerateJWT(user); return(new JwtSecurityTokenHandler().WriteToken(token)); }