public static async Task SeedConfig(this ConfigurationDbContext context, SeedOptions options) { foreach (var client in options.Clients) { var exists = await context.Clients.AnyAsync(c => c.ClientId == client.ClientId); if (exists) { continue; } context.Clients.Add(client.ToEntity()); await context.SaveChangesAsync(); } foreach (var resource in options.IdentityResources) { var exists = await context.IdentityResources.AnyAsync(r => r.Name == resource.Name); if (exists) { continue; } context.IdentityResources.Add(resource.ToEntity()); await context.SaveChangesAsync(); } foreach (var resource in options.ApiResources) { var exists = await context.ApiResources.AnyAsync(a => a.Name == resource.Name); if (exists) { continue; } context.ApiResources.Add(resource.ToEntity()); await context.SaveChangesAsync(); } }
public static async Task SeedAdminUsers(this UserManager <AppUser> userManager, SeedOptions options) { var adminClaim = new Claim(JwtClaimTypes.Role, options.AdminRole); foreach (var seededUser in options.AdminUsers) { var existingUser = await userManager.FindByNameAsync(seededUser.Email); if (existingUser != null) { continue; } var appUser = new AppUser { UserName = seededUser.Email, Email = seededUser.Email, EmailConfirmed = true, }; var createResult = await userManager.CreateAsync(appUser, seededUser.Password); if (!createResult.Succeeded) { throw new Exception(createResult.Errors.First().Description); } await userManager.AddClaimAsync(appUser, adminClaim); } }