|
- using System;
- using System.Linq;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Builder;
- using Microsoft.AspNetCore.Cors;
- using Microsoft.AspNetCore.DataProtection;
- using Microsoft.AspNetCore.Extensions.DependencyInjection;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.DependencyInjection.Extensions;
- using Microsoft.Extensions.Hosting;
- using Himp.TaskScheduling.MultiTenancy;
- using StackExchange.Redis;
- using Microsoft.OpenApi.Models;
- using OpenIddict.Validation.AspNetCore;
- using Volo.Abp;
- using Volo.Abp.Account;
- using Volo.Abp.Account.Web;
- using Volo.Abp.AspNetCore.Mvc;
- using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy;
- using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic;
- using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
- using Volo.Abp.AspNetCore.Serilog;
- using Volo.Abp.Auditing;
- using Volo.Abp.AuditLogging.EntityFrameworkCore;
- using Volo.Abp.Autofac;
- using Volo.Abp.Caching;
- using Volo.Abp.Caching.StackExchangeRedis;
- using Volo.Abp.Data;
- using Volo.Abp.Emailing;
- using Volo.Abp.EntityFrameworkCore;
- using Volo.Abp.EntityFrameworkCore.SqlServer;
- using Volo.Abp.FeatureManagement;
- using Volo.Abp.FeatureManagement.EntityFrameworkCore;
- using Volo.Abp.Identity;
- using Volo.Abp.Identity.EntityFrameworkCore;
- using Volo.Abp.Localization;
- using Volo.Abp.Modularity;
- using Volo.Abp.MultiTenancy;
- using Volo.Abp.OpenIddict.EntityFrameworkCore;
- using Volo.Abp.PermissionManagement;
- using Volo.Abp.PermissionManagement.EntityFrameworkCore;
- using Volo.Abp.PermissionManagement.HttpApi;
- using Volo.Abp.PermissionManagement.Identity;
- using Volo.Abp.SettingManagement;
- using Volo.Abp.SettingManagement.EntityFrameworkCore;
- using Volo.Abp.Swashbuckle;
- using Volo.Abp.TenantManagement;
- using Volo.Abp.TenantManagement.EntityFrameworkCore;
- using Volo.Abp.UI.Navigation.Urls;
-
- namespace Himp.TaskScheduling;
-
- [DependsOn(
- typeof(AbpAccountWebOpenIddictModule),
- typeof(AbpAccountApplicationModule),
- typeof(AbpAccountHttpApiModule),
- typeof(AbpAspNetCoreMvcUiMultiTenancyModule),
- typeof(AbpAspNetCoreMvcModule),
- typeof(AbpAspNetCoreMvcUiBasicThemeModule),
- typeof(AbpAuditLoggingEntityFrameworkCoreModule),
- typeof(AbpAutofacModule),
- typeof(AbpCachingStackExchangeRedisModule),
- typeof(AbpEntityFrameworkCoreSqlServerModule),
- typeof(AbpIdentityEntityFrameworkCoreModule),
- typeof(AbpIdentityApplicationModule),
- typeof(AbpIdentityHttpApiModule),
- typeof(AbpOpenIddictEntityFrameworkCoreModule),
- typeof(AbpPermissionManagementDomainIdentityModule),
- typeof(AbpPermissionManagementEntityFrameworkCoreModule),
- typeof(AbpPermissionManagementApplicationModule),
- typeof(AbpPermissionManagementHttpApiModule),
- typeof(AbpSettingManagementEntityFrameworkCoreModule),
- typeof(AbpSettingManagementApplicationModule),
- typeof(AbpSettingManagementHttpApiModule),
- typeof(AbpFeatureManagementEntityFrameworkCoreModule),
- typeof(AbpFeatureManagementApplicationModule),
- typeof(AbpFeatureManagementHttpApiModule),
- typeof(AbpTenantManagementEntityFrameworkCoreModule),
- typeof(AbpTenantManagementApplicationModule),
- typeof(AbpTenantManagementHttpApiModule),
- typeof(TaskSchedulingApplicationContractsModule),
- typeof(AbpAspNetCoreSerilogModule),
- typeof(AbpSwashbuckleModule)
- )]
- public class TaskSchedulingAuthServerModule : AbpModule
- {
- public override void PreConfigureServices(ServiceConfigurationContext context)
- {
- PreConfigure<OpenIddictBuilder>(builder =>
- {
- builder.AddValidation(options =>
- {
- options.AddAudiences("TaskScheduling");
- options.UseLocalServer();
- options.UseAspNetCore();
- });
- });
- }
-
- public override void ConfigureServices(ServiceConfigurationContext context)
- {
- var hostingEnvironment = context.Services.GetHostingEnvironment();
- var configuration = context.Services.GetConfiguration();
-
- context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme);
-
- Configure<AbpDbContextOptions>(options =>
- {
- options.UseSqlServer();
- });
-
- context.Services.AddAbpSwaggerGen(
- options =>
- {
- options.SwaggerDoc("v1", new OpenApiInfo { Title = "TaskScheduling API", Version = "v1" });
- options.DocInclusionPredicate((docName, description) => true);
- options.CustomSchemaIds(type => type.FullName);
- });
-
- Configure<AbpLocalizationOptions>(options =>
- {
- options.Languages.Add(new LanguageInfo("ar", "ar", "العربية"));
- options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština"));
- options.Languages.Add(new LanguageInfo("en", "en", "English"));
- options.Languages.Add(new LanguageInfo("en-GB", "en-GB", "English (UK)"));
- options.Languages.Add(new LanguageInfo("fi", "fi", "Finnish"));
- options.Languages.Add(new LanguageInfo("fr", "fr", "Français"));
- options.Languages.Add(new LanguageInfo("hi", "hi", "Hindi"));
- options.Languages.Add(new LanguageInfo("is", "is", "Icelandic"));
- options.Languages.Add(new LanguageInfo("it", "it", "Italiano"));
- options.Languages.Add(new LanguageInfo("hu", "hu", "Magyar"));
- options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português"));
- options.Languages.Add(new LanguageInfo("ro-RO", "ro-RO", "Română"));
- options.Languages.Add(new LanguageInfo("ru", "ru", "Русский"));
- options.Languages.Add(new LanguageInfo("sk", "sk", "Slovak"));
- options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe"));
- options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
- options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中文"));
- options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch"));
- options.Languages.Add(new LanguageInfo("es", "es", "Español"));
- options.Languages.Add(new LanguageInfo("el", "el", "Ελληνικά"));
- });
-
- Configure<AbpAuditingOptions>(options =>
- {
- //options.IsEnabledForGetRequests = true;
- options.ApplicationName = "AuthServer";
- });
-
- Configure<AppUrlOptions>(options =>
- {
- options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"];
- });
-
- Configure<AbpDistributedCacheOptions>(options =>
- {
- options.KeyPrefix = "TaskScheduling:";
- });
-
- Configure<AbpMultiTenancyOptions>(options =>
- {
- options.IsEnabled = MultiTenancyConsts.IsEnabled;
- });
-
- var dataProtectionBuilder = context.Services.AddDataProtection().SetApplicationName("TaskScheduling");
- if (!hostingEnvironment.IsDevelopment())
- {
- var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]!);
- dataProtectionBuilder.PersistKeysToStackExchangeRedis(redis, "TaskScheduling-Protection-Keys");
- }
-
- context.Services.AddCors(options =>
- {
- options.AddDefaultPolicy(builder =>
- {
- builder
- .WithOrigins(
- configuration["App:CorsOrigins"]?
- .Split(",", StringSplitOptions.RemoveEmptyEntries)
- .Select(o => o.RemovePostFix("/"))
- .ToArray() ?? Array.Empty<string>()
- )
- .WithAbpExposedHeaders()
- .SetIsOriginAllowedToAllowWildcardSubdomains()
- .AllowAnyHeader()
- .AllowAnyMethod()
- .AllowCredentials();
- });
- });
-
- #if DEBUG
- context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>());
- #endif
- }
-
- public async override Task OnApplicationInitializationAsync(ApplicationInitializationContext context)
- {
- var app = context.GetApplicationBuilder();
- var env = context.GetEnvironment();
-
- if (env.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- }
- else
- {
- app.UseErrorPage();
- app.UseHsts();
- }
-
- app.UseHttpsRedirection();
- app.UseCorrelationId();
- app.UseStaticFiles();
- app.UseRouting();
- app.UseCors();
- app.UseAuthentication();
- app.UseAbpOpenIddictValidation();
-
- if (MultiTenancyConsts.IsEnabled)
- {
- app.UseMultiTenancy();
- }
-
- app.UseAbpRequestLocalization();
- app.UseAuthorization();
- app.UseSwagger();
- app.UseAbpSwaggerUI(options =>
- {
- options.SwaggerEndpoint("/swagger/v1/swagger.json", "Support APP API");
- });
- app.UseAuditing();
- app.UseAbpSerilogEnrichers();
- app.UseConfiguredEndpoints();
-
- await SeedData(context);
- }
-
- private async Task SeedData(ApplicationInitializationContext context)
- {
- using (var scope = context.ServiceProvider.CreateScope())
- {
- await scope.ServiceProvider
- .GetRequiredService<IDataSeeder>()
- .SeedAsync();
- }
- }
- }
|