public static IServiceCollection AddAccessControl <TSecurityManager>( this IServiceCollection services, Action <SecurityAccessorBuilder> builder) where TSecurityManager : class, ISecurityManager { var configuration = new SecurityAccessorBuilder(); builder(configuration); if (configuration.AccessorFactory == null) { throw new NullReferenceException("Не задана фабрика аксессоров доступа"); } if (configuration.EventFactory == null) { throw new NullReferenceException("Не задана фабрика эвентов проверки прав"); } services.AddScoped(typeof(IAccessorFactory), configuration.AccessorFactory); services.AddScoped(typeof(IAccessEventFactory), configuration.EventFactory); services.AddScoped <ISecurityManager, TSecurityManager>(); var accessorBuilders = configuration.AccessorBuilders; //TODO Реализовать хэндлеры через контейнеры foreach (var accessorBuilder in accessorBuilders) { services.AddTransient(accessorBuilder.AccessorType, accessorBuilder.BuildAccessor); } return(services); }
private static SecurityAccessorBuilder AddAdminAccessControl(this SecurityAccessorBuilder builder) { builder.AddAccessor <AdminAccessor>(paramsBuilder => { }, (sp, dict) => { var accessor = new AdminAccessor(sp, dict); return(accessor); }); return(builder); }
private static SecurityAccessorBuilder AddEducationalInstitutionAccessControl( this SecurityAccessorBuilder builder) { builder.AddAccessor <EducationalInstitutionManagerAccessor>(paramsBuilder => { }, (sp, dict) => { var accessor = new EducationalInstitutionManagerAccessor(sp, dict); return(accessor); }); return(builder); }
private static SecurityAccessorBuilder AddApplicantAccessControl(this SecurityAccessorBuilder builder) { builder.AddAccessor <ApplicantAccessor>(paramsBuilder => { paramsBuilder.RegisterHandler <ApplicantAccessEvent <Resume>, ApplicantResumeAccessHandler, Resume>(); }, (sp, dict) => { var accessor = new ApplicantAccessor(sp, dict); return(accessor); }); return(builder); }
private static SecurityAccessorBuilder AddEmployerAccessControl( this SecurityAccessorBuilder builder) { builder.AddAccessor <EmployerManagerAccessor>(paramsBuilder => { paramsBuilder.RegisterHandler < EmployerAccessEvent <ResumeNegotiation>, EmployerNegotiationAccessHandler, ResumeNegotiation>(); }, (sp, dict) => { var accessor = new EmployerManagerAccessor(sp, dict); return(accessor); }); return(builder); }