mirror of https://github.com/abpframework/abp
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							89 lines
						
					
					
						
							3.7 KiB
						
					
					
				
			
		
		
	
	
							89 lines
						
					
					
						
							3.7 KiB
						
					
					
				| using Microsoft.AspNetCore.Builder;
 | |
| using Microsoft.Extensions.DependencyInjection;
 | |
| using Ocelot.DependencyInjection;
 | |
| using Ocelot.Middleware;
 | |
| using ProductManagement;
 | |
| using Swashbuckle.AspNetCore.Swagger;
 | |
| using Volo.Abp;
 | |
| using Volo.Abp.Autofac;
 | |
| using Volo.Abp.EntityFrameworkCore;
 | |
| using Volo.Abp.EntityFrameworkCore.SqlServer;
 | |
| using Volo.Abp.Modularity;
 | |
| using Volo.Abp.PermissionManagement.EntityFrameworkCore;
 | |
| using Volo.Abp.Security.Claims;
 | |
| using Volo.Abp.SettingManagement.EntityFrameworkCore;
 | |
| using Volo.Blogging;
 | |
| 
 | |
| namespace PublicWebSiteGateway.Host
 | |
| {
 | |
|     [DependsOn(
 | |
|         typeof(AbpAutofacModule),
 | |
|         typeof(BloggingHttpApiModule),
 | |
|         typeof(ProductManagementHttpApiModule),
 | |
|         typeof(AbpEntityFrameworkCoreSqlServerModule),
 | |
|         typeof(AbpPermissionManagementEntityFrameworkCoreModule),
 | |
|         typeof(AbpSettingManagementEntityFrameworkCoreModule)
 | |
|         )]
 | |
|     public class PublicWebSiteGatewayHostModule : AbpModule
 | |
|     {
 | |
|         public override void ConfigureServices(ServiceConfigurationContext context)
 | |
|         {
 | |
|             var configuration = context.Services.GetConfiguration();
 | |
| 
 | |
|             context.Services.AddAuthentication("Bearer")
 | |
|                 .AddIdentityServerAuthentication(options =>
 | |
|                 {
 | |
|                     options.Authority = configuration["AuthServer:Authority"];
 | |
|                     options.ApiName = configuration["AuthServer:ApiName"];
 | |
|                     options.RequireHttpsMetadata = false;
 | |
|                     //TODO: Should create an extension method for that (may require to create a new ABP package depending on the IdentityServer4.AccessTokenValidation)
 | |
|                     options.InboundJwtClaimTypeMap["sub"] = AbpClaimTypes.UserId;
 | |
|                     options.InboundJwtClaimTypeMap["role"] = AbpClaimTypes.Role;
 | |
|                     options.InboundJwtClaimTypeMap["email"] = AbpClaimTypes.Email;
 | |
|                     options.InboundJwtClaimTypeMap["email_verified"] = AbpClaimTypes.EmailVerified;
 | |
|                     options.InboundJwtClaimTypeMap["phone_number"] = AbpClaimTypes.PhoneNumber;
 | |
|                     options.InboundJwtClaimTypeMap["phone_number_verified"] = AbpClaimTypes.PhoneNumberVerified;
 | |
|                     options.InboundJwtClaimTypeMap["name"] = AbpClaimTypes.UserName;
 | |
|                 });
 | |
| 
 | |
|             context.Services.AddSwaggerGen(options =>
 | |
|             {
 | |
|                 options.SwaggerDoc("v1", new Info { Title = "PublicWebSite Gateway API", Version = "v1" });
 | |
|                 options.DocInclusionPredicate((docName, description) => true);
 | |
|                 options.CustomSchemaIds(type => type.FullName);
 | |
|             });
 | |
| 
 | |
|             context.Services.AddOcelot(context.Services.GetConfiguration());
 | |
| 
 | |
|             Configure<AbpDbContextOptions>(options =>
 | |
|             {
 | |
|                 options.UseSqlServer();
 | |
|             });
 | |
| 
 | |
|             context.Services.AddDistributedRedisCache(options =>
 | |
|             {
 | |
|                 options.Configuration = configuration["Redis:Configuration"];
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         public override void OnApplicationInitialization(ApplicationInitializationContext context)
 | |
|         {
 | |
|             var app = context.GetApplicationBuilder();
 | |
| 
 | |
|             app.UseCorrelationId();
 | |
|             app.UseVirtualFiles();
 | |
|             app.UseAuthentication();
 | |
|             app.UseSwagger();
 | |
|             app.UseSwaggerUI(options =>
 | |
|             {
 | |
|                 options.SwaggerEndpoint("/swagger/v1/swagger.json", "PublicWebSite Gateway API");
 | |
|             });
 | |
| 
 | |
|             app.MapWhen(ctx => ctx.Request.Path.ToString().StartsWith("/api/abp/") || ctx.Request.Path.ToString().StartsWith("/Abp/"),
 | |
|                 app2 => { app2.UseMvcWithDefaultRouteAndArea(); });
 | |
| 
 | |
|             app.UseOcelot().Wait();
 | |
|         }
 | |
|     }
 | |
| }
 |