/// <summary> /// Generate default clients, identity and api resources /// </summary> private static async Task EnsureSeedIdentityServerData(SsoContext context, IConfiguration configuration) { if (!context.Clients.Any()) { foreach (var client in Clients.GetAdminClient(configuration).ToList()) { await context.Clients.AddAsync(client.ToEntity()); } await context.SaveChangesAsync(); } if (!context.IdentityResources.Any()) { var identityResources = ClientResources.GetIdentityResources().ToList(); foreach (var resource in identityResources) { await context.IdentityResources.AddAsync(resource.ToEntity()); } await context.SaveChangesAsync(); } if (!context.ApiResources.Any()) { foreach (var resource in ClientResources.GetApiResources().ToList()) { await context.ApiResources.AddAsync(resource.ToEntity()); } await context.SaveChangesAsync(); } }
/// <summary> /// Generate default clients, identity and api resources /// </summary> private static async Task EnsureSeedIdentityServerData(SsoContext context, IConfiguration configuration, IConfigurationOptions configOptions) { #region clients foreach (var client in Clients.GetAdminClient(configuration).ToList()) { if (context.Clients.FirstOrDefault(s => s.ClientId == client.ClientId) == null) { await context.Clients.AddAsync(client.ToEntity()); } } await context.SaveChangesAsync(); #endregion #region ClientResources var identityResources = ClientResources.GetIdentityResources().ToList(); foreach (var resource in identityResources) { if (context.IdentityResources.FirstOrDefault(s => s.Name == resource.Name) == null) { await context.IdentityResources.AddAsync(resource.ToEntity()); } } await context.SaveChangesAsync(); #endregion #region ApiResources foreach (var resource in ClientResources.GetApiResources(configOptions).ToList()) { if (context.ApiResources.FirstOrDefault(s => s.Name == resource.Name) == null) { await context.ApiResources.AddAsync(resource.ToEntity()); } } await context.SaveChangesAsync(); #endregion }
private static async Task EnsureSeedGlobalConfigurationData(SsoContext context, IConfiguration configuration, IWebHostEnvironment env) { var ssoVersion = context.GlobalConfigurationSettings.FirstOrDefault(w => w.Key == "SSO:Version"); if (ssoVersion == null) { SsoVersion.Current = new Version(ssoVersion?.Value ?? "3.1.1"); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("SSO:Version", "3.1.1", false, true)); await context.SaveChangesAsync(); } if (!context.GlobalConfigurationSettings.Any()) { await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("SendEmail", configuration.GetSection("EmailConfiguration:SendEmail").Value, false, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("UseStorage", configuration.GetSection("Storage:UseStorage").Value, false, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Smtp:Server", configuration.GetSection("EmailConfiguration:SmtpServer").Value, false, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Smtp:Port", configuration.GetSection("EmailConfiguration:SmtpPort").Value, false, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Smtp:UseSsl", configuration.GetSection("EmailConfiguration:UseSsl").Value, false, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Smtp:Username", configuration.GetSection("EmailConfiguration:SmtpUsername").Value, true, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Smtp:Password", configuration.GetSection("EmailConfiguration:SmtpPassword").Value, true, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Storage:Service", configuration.GetSection("Storage:Service").Value, false, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Storage:VirtualPath", configuration.GetSection("Storage:VirtualPath").Value, false, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Storage:Username", configuration.GetSection("Storage:Username").Value, true, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Storage:Password", configuration.GetSection("Storage:Password").Value, true, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Storage:StorageName", configuration.GetSection("Storage:StorageName").Value, false, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Storage:BasePath", configuration.GetSection("Storage:BasePath").Value, false, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Storage:PhysicalPath", env.WebRootPath, false, false)); await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("Storage:Region", configuration.GetSection("Storage:Region").Value, false, false)); await context.SaveChangesAsync(); } if (!context.Emails.Any()) { var newUserEmail = File.ReadAllText(Path.Combine(env.ContentRootPath, @"Assets/templates/new-user-email.html")); var resetPasswordEmail = File.ReadAllText(Path.Combine(env.ContentRootPath, @"Assets/templates/reset-password-email.html")); var template = File.ReadAllText(Path.Combine(env.ContentRootPath, @"Assets/templates/default-template.html")); await context.Emails.AddAsync(new Email(newUserEmail, "Welcome to JP Project - Confirm your e-mail", new Sender("*****@*****.**", "JP Team"), EmailType.NewUser, null)); await context.Emails.AddAsync(new Email(newUserEmail, "Welcome to JP Project - Confirm your e-mail", new Sender("*****@*****.**", "JP Team"), EmailType.NewUserWithoutPassword, null)); await context.Emails.AddAsync(new Email(resetPasswordEmail, "JP Project - Reset Password", new Sender("*****@*****.**", "JP Team"), EmailType.RecoverPassword, null)); await context.Templates.AddRangeAsync(new Template(template, "JP Team", "default-template", Users.GetEmail(configuration))); await context.SaveChangesAsync(); } if (SsoVersion.Current <= Version.Parse("3.1.0")) { await context.GlobalConfigurationSettings.AddAsync(new GlobalConfigurationSettings("SSO:Version", "3.1.1", false, true)); SsoVersion.Current = Version.Parse("3.1.1"); var claims = await context.UserClaims.Where(w => w.ClaimType == "username" || w.ClaimType == "email" || w.ClaimType == "picture").ToListAsync(); context.UserClaims.RemoveRange(claims); if (context.Clients.Include(c => c.AllowedGrantTypes).Any(s => s.ClientId == "IS4-Admin" && s.AllowedGrantTypes.Any(a => a.GrantType == "implicit"))) { var clientAdmin = context.Clients.Include(c => c.AllowedGrantTypes).FirstOrDefault(s => s.ClientId == "IS4-Admin"); clientAdmin.RequireClientSecret = false; clientAdmin.AllowedGrantTypes.RemoveAll(a => a.ClientId == clientAdmin.Id); clientAdmin.AllowedGrantTypes.Add(new ClientGrantType() { ClientId = clientAdmin.Id, GrantType = "authorization_code" }); context.Update(clientAdmin); } await context.SaveChangesAsync(); } if (SsoVersion.Current == Version.Parse("3.1.1")) { ssoVersion = context.GlobalConfigurationSettings.FirstOrDefault(w => w.Key == "SSO:Version"); ssoVersion.Update("3.2.0", true, false); SsoVersion.Current = new Version(ssoVersion.Value); await context.SaveChangesAsync(); } if (SsoVersion.Current == Version.Parse("3.2.0")) { ssoVersion = context.GlobalConfigurationSettings.FirstOrDefault(w => w.Key == "SSO:Version"); ssoVersion.Update("3.2.2", true, false); SsoVersion.Current = new Version(ssoVersion.Value); await context.SaveChangesAsync(); } }