set(SecurityAuthorizationPolicy::class, static fn (AppContainer $c): SecurityAuthorizationPolicy => new SecurityAuthorizationPolicy( $c->get(PermissionService::class) )); // --- Thin BC layer --- $container->set(SecurityBcSettingsGateway::class, static fn (AppContainer $c): SecurityBcSettingsGateway => new SecurityBcSettingsGateway( $c->get(SettingsMetadataGateway::class), $c->get(SettingServicesFactory::class)->createSettingsCryptoGateway() )); $container->set(SecurityTokenRepository::class, static fn (AppContainer $c): SecurityTokenRepository => new SecurityTokenRepository( $c->get(SettingServicesFactory::class)->createSettingsCryptoGateway() )); $container->set(SecurityOAuthTokenService::class, static fn (AppContainer $c): SecurityOAuthTokenService => new SecurityOAuthTokenService( $c->get(SecurityBcSettingsGateway::class), $c->get(SecurityTokenRepository::class) )); $container->set(SecurityBcGateway::class, static fn (AppContainer $c): SecurityBcGateway => new SecurityBcGateway( $c->get(SecurityBcSettingsGateway::class), $c->get(SecurityOAuthTokenService::class), $c->get(SessionStoreInterface::class) )); // --- Check templates (per-product checklist catalog) --- $container->set(SecurityCheckTemplateRepository::class, static fn (): SecurityCheckTemplateRepository => new SecurityCheckTemplateRepository()); $container->set(SecurityCheckTemplateService::class, static fn (AppContainer $c): SecurityCheckTemplateService => new SecurityCheckTemplateService( $c->get(SecurityCheckTemplateRepository::class) )); $container->set(SecurityMarkdownGateway::class, static fn (): SecurityMarkdownGateway => new SecurityMarkdownGateway()); // --- Security checks (instances) --- $container->set(SecurityCheckProcess::class, static fn (): SecurityCheckProcess => new SecurityCheckProcess()); $container->set(SecurityCheckRepository::class, static fn (): SecurityCheckRepository => new SecurityCheckRepository()); $container->set(SecurityCheckService::class, static fn (AppContainer $c): SecurityCheckService => new SecurityCheckService( $c->get(SecurityCheckRepository::class), $c->get(SecurityCheckTemplateService::class), $c->get(SecurityCheckProcess::class) )); $container->set(SecurityReportPdfService::class, static fn (AppContainer $c): SecurityReportPdfService => new SecurityReportPdfService( $c->get(SecurityCheckProcess::class), $c->get(BrandingLogoService::class), $c->get(TenantLogoService::class) )); } }