/
softailor
/
gridient
Обзор
Документация
Войти
/
softailor
/
gridient
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/Gridient.Infrastructure.Authorization.Local/Extensions/ServiceCollectionExtensions.cs
66 строк
3 KB
Jenkins
Auto add
18 фев 2026, 10:19
18 фев 2026, 10:19
1e6c4f8
Код
Авторство
О чём код?
using Gridient.Core.Authorization; using Gridient.Core.Features; using Gridient.Core.Services.Interfaces; using Gridient.Infrastructure.Authorization.Local.Authorization; using Gridient.Infrastructure.Authorization.Local.Features; using Gridient.Infrastructure.Authorization.Local.Policies; using Gridient.Infrastructure.Authorization.Local.Providers; using Gridient.Infrastructure.Authorization.Local.Services; using Gridient.Infrastructure.Authorization.Local.Services.Interfaces; using MediatR; using Microsoft.Extensions.DependencyInjection; namespace Gridient.Infrastructure.Authorization.Local.Extensions { public static class ServiceCollectionExtensions { /// <summary> /// Регистрирует модуль авторизации на основе локальных групп /// </summary> public static IServiceCollection AddGridientLocalAuthorization( this IServiceCollection services) { // Регистрируем сервисы модуля services.AddScoped<IAccessRightsService, AccessRightsService>(); var accessRoleCheckerRegistration = services.AddScoped<IAccessRoleChecker, AccessRoleChecker>(); services.AddScoped<IListAccessService, ListAccessService>(); services.AddScoped<IListAuthorSettingsService, ListAuthorSettingsService>(); // Регистрируем IListItemFilterProvider (реализуется в AccessRoleChecker) services.AddScoped<Core.Services.Interfaces.IListItemFilterProvider>(sp => (Core.Services.Interfaces.IListItemFilterProvider)sp.GetRequiredService<IAccessRoleChecker>()); // Регистрируем Policy Evaluator services.AddScoped<IPolicyEvaluator, LocalGroupsPolicyEvaluator>(); // Регистрируем AuthorizationService (фасад) - только если IPolicyEvaluator зарегистрирован services.AddScoped<IAuthorizationService, AuthorizationService>(); // Регистрируем модульный фасад авторизации для Core-домена services.AddScoped<ICoreAuthorization, CoreAuthorization>(); // Регистрируем модульный фасад авторизации для Authorization.Local модуля services.AddScoped<ILocalAuthorization, LocalAuthorization>(); // Регистрируем фичефлаг services.AddSingleton<IClientFeatureProvider, LocalAuthorizationFeatureProvider>(); // Регистрируем провайдер ресурсов и операций для групп services.AddSingleton<IResourceOperationProvider, GroupResourceOperationProvider>(); return services; } /// <summary> /// Регистрирует MediatR handlers из Authorization.Local сборки /// </summary> public static IServiceCollection AddGridientLocalAuthorizationMediatRHandlers(this IServiceCollection services) { services.AddMediatR(cfg => { cfg.RegisterServicesFromAssembly(typeof(ServiceCollectionExtensions).Assembly); }); return services; } } }