internal static IStructureAppBuilder AddSettingsServices(this IStructureAppBuilder builder) { builder.Services.AddScoped(typeof(ISettingsRepository <>), typeof(SettingsRepository <>)); builder.Services.AddScoped(typeof(ISettingsManager <>), typeof(SettingsManager <>)); builder.Services.AddScoped(typeof(ISettingsCache <>), typeof(SettingsCache <>)); return(builder); }
internal static IStructureAppBuilder AddMessaging(this IStructureAppBuilder builder) { builder.Services.AddSingleton <IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>(); builder.Services.AddSingleton <IEventBusProcessingContextProvider, UnitOfWorkEventBusProcessingContextProvider>(); builder.Services.AddScoped <IDistributedEventStore, InMemoryDistributedEventStore>(); return(builder); }
internal static IStructureAppBuilder AddDefaultAuthorizationService(this IStructureAppBuilder builder) { var type = typeof(AuthorizationService); builder.Services.AddScoped(type); builder.Services.AddScoped(typeof(IAuthorizationService), provider => provider.GetService(type)); return(builder); }
internal static IStructureAppBuilder AddDefaultSession(this IStructureAppBuilder builder) { var claimAppSessionType = typeof(ClaimsAppSession); builder.Services.AddScoped(claimAppSessionType); builder.Services.AddScoped(typeof(IAppSession), provider => provider.GetService(claimAppSessionType)); builder.Services.AddScoped <ICurrentUser, CurrentUser>(); return(builder); }
public static IStructureAppBuilder AddCache <TCacheManager>(this IStructureAppBuilder builder) where TCacheManager : ICacheManager { var cacheManagerType = typeof(TCacheManager); builder.Services.AddSingleton(cacheManagerType); builder.Services.AddSingleton(typeof(ICacheManager), provider => provider.GetService(cacheManagerType)); return(builder); }
internal static IStructureAppBuilder AddMultiTenancyServices(this IStructureAppBuilder builder) { builder.Services.AddScoped <ICurrentTenant, CurrentTenant>(); builder.Services.AddScoped <ITenantStore, DefaultTenantStore>(); builder.Services.AddScoped <ITenantResolver, TenantResolver>(); builder.Services.AddSingleton <ICurrentTenantAccessor, AsyncLocalCurrentTenantAccessor>(); builder.Services.AddTransient <MultiTenantFilter>(); builder.Services.Configure <DataFilterOptions>(c => c.Filters.Add(typeof(MultiTenantFilter), new DataFilterState(true))); return(builder); }
internal static IStructureAppBuilder AddOtherServices(this IStructureAppBuilder builder) { builder.Services.AddScoped <INotificationCollection, NotificationCollection>(); builder.Services.AddSingleton <IPluralizationService, PluralizationService>(); builder.Services.AddScoped <IErrorInfoBuilder, ErrorInfoBuilder>(); builder.Services.AddSingleton(typeof(IDataFilterHandler), typeof(DataFilterHandler)); builder.Services.AddTransient <SoftDeleteFilter>(); builder.Services.Configure <DataFilterOptions>(c => c.Filters.Add(typeof(SoftDeleteFilter), new DataFilterState(true))); return(builder); }
private void AddConventions(IStructureAppBuilder builder) { builder.Services.AddSingleton <IRouteModelConvention, DefaultRouteModelConvention>(); builder.Services.Configure <MvcOptions, IRouteModelConvention>((opts, convention) => { opts.Filters.Add(new HttpResponseExceptionFilter()); opts.Conventions.Add(convention); }); }
public void Configure(IStructureAppBuilder builder) { builder.Services.AddScoped( typeof(IGrantChecker), typeof(GrantChecker <,>).MakeGenericType( builder.EntityTypes.User, builder.EntityTypes.Role)); builder.Services.AddScoped(typeof(SignInManager <>).MakeGenericType(builder.EntityTypes.User)); }
private void ConfigureAddOns(IStructureAppBuilder builder) { //TODO: refactor the way to add addons var opts = new AspNetCoreOptions(); setupAction?.Invoke(opts); foreach (var addOn in opts.AddOns) { addOn.Configure(builder); } }
private void AddMultiTenancy(IStructureAppBuilder builder) { builder.Services.AddTransient <MultiTenancyMiddleware>(); builder.Services.Configure <TenantResolveOptions>(options => { options.TenantResolvers.Insert(0, new RouteTenantResolveContributor()); //TODO: Add contributors //options.TenantResolvers.Add(new RouteTenantResolveContributor()); //options.TenantResolvers.Add(new HeaderTenantResolveContributor()); //options.TenantResolvers.Add(new CookieTenantResolveContributor()); }); }
public void Configure(IStructureAppBuilder builder) { builder.Services.Configure(setupAction); builder.Services.AddScoped <IHttpContextAccessor, HttpContextAccessor>(); builder.Services.AddScoped <IPrincipalAccessor, AspNetCorePrincipalAccessor>(); builder.Services.TryAddEnumerable(ServiceDescriptor.Transient <IApiControllerSpecification, ApiControllerSpecification>()); builder.Services.AddScoped <IMethodInvocationValidator, MvcActionInvocationValidator>(); //TODO: check location IMethodInvocationValidator builder.Services.AddScoped <IActionExceptionHandler, ActionExceptionHandler>(); AddFilters(builder); AddConventions(builder); AddMultiTenancy(builder); ConfigureAddOns(builder); }
internal static IStructureAppBuilder AddDefaultServices(this IStructureAppBuilder builder) { return(builder.AddCache <InMemoryCacheManager>() .AddDefaultSession() .AddDefaultUnitOfWork() .AddDefaultAuthorizationService() .AddDefaultLocalizationServices() .AddDefaultStores() .AddAuditServices() .AddSettingsServices() .AddMultiTenancyServices() .AddMessaging() .AddOtherServices()); }
public void Configure(IStructureAppBuilder builder) { AsyncQueryableExecutor.SetExecutor(new NhAsyncQueryableExecutor()); builder.Services.AddSingleton <ISessionFactoryBuilder, FluentSessionFactoryBuilder>(); builder.Services.AddSingleton <IPersistenceConfigurerProvider, PersistenceConfigurerProvider>(); builder.Services.AddSingleton((c) => c.GetService <ISessionFactoryBuilder>().BuildSessionFactory()); builder.Services.AddScoped(typeof(IRepository <,>), typeof(Repository <,>)); builder.Services.AddScoped <ITransactionManager, NhTransactionManager>(); builder.Services.AddScoped <IDataContext, NhDataContext>(); builder.Services.AddScoped <INhDataContext, NhDataContext>(); builder.Services.AddScoped <INhSessionProvider, NhSessionProvider>(); builder.Services.Configure <NhibernateOptions>(builder.Configuration.GetSection("NHibernate")); }
private void AddFilters(IStructureAppBuilder builder) { builder.Services.AddScoped(typeof(AuthorizationFilter)); builder.Services.AddScoped(typeof(ValidationActionFilter)); builder.Services.AddScoped(typeof(UnitOfWorkActionFilter)); builder.Services.AddScoped(typeof(ExceptionFilter)); builder.Services.Configure <MvcOptions>(opts => { opts.Filters.AddService(typeof(AuthorizationFilter)); opts.Filters.AddService(typeof(ValidationActionFilter)); opts.Filters.AddService(typeof(UnitOfWorkActionFilter)); opts.Filters.AddService(typeof(ExceptionFilter)); }); }
public void Configure(IStructureAppBuilder builder) { if (configureOptions != null) { builder.Services.Configure(configureOptions); } builder.Services.AddSingleton <IEventBus, RabbitMQEventBus>(); builder.Services.AddSingleton <IRabbitMQPersistentConnection, DefaultRabbitMQPersistentConnection>(); builder.Services.AddSingleton <IConnectionFactory>((c) => { var options = c.GetOptions <RabbitMQEventBusOptions>(); return(new ConnectionFactory() { HostName = options.HostName, DispatchConsumersAsync = options.DispatchConsumersAsync }); }); }
public void Configure(IStructureAppBuilder builder) { //TODO: reactor AddAuthentication to allow mutiples authentication schemes builder.Services .AddAuthentication(c => { c.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; c.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, opts => { opts.RequireHttpsMetadata = false; opts.SaveToken = true; opts.Audience = options.Audience; opts.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = options.CreateSymmetricSecurityKey(), ValidateIssuer = false, ValidateAudience = false }; configureJwtBearer?.Invoke(opts); }); builder.Services.AddScoped( typeof(IGrantChecker), typeof(GrantChecker <,>).MakeGenericType( builder.EntityTypes.User, builder.EntityTypes.Role)); builder.Services.AddScoped(typeof(SignInManager <>).MakeGenericType(builder.EntityTypes.User)); builder.Services.AddScoped( typeof(IRefreshTokenStore <>), typeof(RefreshTokenStore <>)); }
internal static IStructureAppBuilder AddDefaultUnitOfWork(this IStructureAppBuilder builder) { builder.Services.AddScoped <IUnitOfWorkManager, UnitOfWorkManager>(); builder.Services.AddScoped <IUnitOfWork, UnitOfWork>(); return(builder); }
public void Configure(IStructureAppBuilder builder) { builder.Services.AddSingleton <IObjectAdapter, AutoMapperAdapter>(); builder.Services.AddAutoMapper(assemblies); }
internal static IStructureAppBuilder AddDefaultLocalizationServices(this IStructureAppBuilder builder) { builder.Services.AddScoped <ILocalizer, DefaultLocalizer>(); builder.Services.AddScoped <ILocalizableContext, LocalizableContext>(); return(builder); }
internal static IStructureAppBuilder AddAuditServices(this IStructureAppBuilder builder) { builder.Services.AddScoped <IEntityPropertySetter, EntityPropertySetter>(); return(builder); }
public void Configure(IStructureAppBuilder builder) { builder.Services.AddScoped( typeof(IUserValidator <>).MakeGenericType(builder.EntityTypes.User), typeof(UserValidator <>).MakeGenericType(builder.EntityTypes.User)); builder.Services.AddScoped( typeof(IPasswordValidator <>).MakeGenericType(builder.EntityTypes.User), typeof(PasswordValidator <>).MakeGenericType(builder.EntityTypes.User)); builder.Services.AddScoped( typeof(IPasswordHasher <>).MakeGenericType(builder.EntityTypes.User), typeof(PasswordHasher <>).MakeGenericType(builder.EntityTypes.User)); builder.Services.AddScoped( typeof(IUserClaimsPrincipalFactory <>).MakeGenericType(builder.EntityTypes.User), typeof(Identity.UserClaimsPrincipalFactory <>).MakeGenericType(builder.EntityTypes.User)); builder.Services.AddScoped( typeof(IUserConfirmation <>).MakeGenericType(builder.EntityTypes.User), typeof(DefaultUserConfirmation <>).MakeGenericType(builder.EntityTypes.User)); builder.Services.AddScoped <ILookupNormalizer, UpperInvariantLookupNormalizer>(); builder.Services.AddScoped <IdentityErrorDescriber>(); builder.Services.AddScoped( typeof(IRoleValidator <>).MakeGenericType(builder.EntityTypes.Role), typeof(RoleValidator <>).MakeGenericType(builder.EntityTypes.Role)); Type sceUserStoreType; if (builder.EntityTypes.UserPermission != null) { sceUserStoreType = (builder.EntityTypes.UserRole != null ? typeof(UserPermissionStore <, , ,>) : typeof(UserPermissionStore <, ,>)) .MakeGenericTypeNotNullArguments( builder.EntityTypes.User, builder.EntityTypes.UserRole, builder.EntityTypes.UserPermission, builder.EntityTypes.Role ); } else { sceUserStoreType = (builder.EntityTypes.UserRole != null ? typeof(UserStore <, ,>) : typeof(UserStore <,>)) .MakeGenericTypeNotNullArguments( builder.EntityTypes.User, builder.EntityTypes.UserRole, builder.EntityTypes.Role ); } var sceUserManagerType = (builder.EntityTypes.UserPermission != null ? typeof(UserManager <, ,>) : typeof(UserManager <,>)) .MakeGenericTypeNotNullArguments( builder.EntityTypes.User, builder.EntityTypes.UserPermission, builder.EntityTypes.Role); var roleManagerType = typeof(RoleManager <,>).MakeGenericType( builder.EntityTypes.Role, builder.EntityTypes.RolePermission); builder.Services.AddScoped(typeof(IUserStore <>).MakeGenericType(builder.EntityTypes.User), sceUserStoreType); builder.Services.AddScoped(typeof(IIdentityUserManager <>).MakeGenericType(builder.EntityTypes.User), sceUserManagerType); builder.Services.AddScoped(typeof(UserManager <>).MakeGenericType(builder.EntityTypes.User), sceUserManagerType); builder.Services.AddScoped(new Type[] { typeof(IRoleManager <>).MakeGenericType(builder.EntityTypes.Role), typeof(RoleManager <>).MakeGenericType(builder.EntityTypes.Role) }, roleManagerType); if (builder.EntityTypes.RolePermission != null) { builder.Services.AddScoped(typeof(IRoleStore <>).MakeGenericType(builder.EntityTypes.Role), typeof(RoleStore <,>).MakeGenericType( builder.EntityTypes.Role, builder.EntityTypes.RolePermission)); } else { builder.Services.AddScoped(typeof(IRoleStore <>).MakeGenericType(builder.EntityTypes.Role), typeof(RoleStore <>).MakeGenericTypeNotNullArguments( builder.EntityTypes.Role)); } }
internal static IStructureAppBuilder AddDefaultStores(this IStructureAppBuilder builder) { builder.Services.AddSingleton <IPermissionStore, PermissionStore>(); return(builder); }