Shared Symfony security stack for OpenFinancy administration portals. The package bundles credential storage, composite credential providers, authenticator, user provider, setup redirect subscriber, and supporting form definitions under the OpenFinancy\Component\AdminSecurity namespace.
composer require openfinancy/admin-security-component:^0.1Requirements:
- PHP 8.4+
- Symfony 7.1 components: Security, Form, Validator, Routing, HTTP Foundation/Kernel, Doctrine ORM bundle.
AdminCredentialDoctrine entity and repository for storing hashed admin credentials.- Composite credential provider chain (
CompositeAdminCredentialProvider) combining database and default fallback providers. AdminCredentialManagerorchestrating setup, updates, and credential persistence.- Symfony security integration via
AdminAuthenticator,AdminUserProvider, andAdminUser. AdminSetupRedirectSubscriberenforcing setup flows until custom credentials are configured.- Reusable
AdminCredentialTypeform for the setup wizard.
- Register the services in your Symfony app:
# config/services.yaml
OpenFinancy\Component\AdminSecurity\Security\AdminUserProvider:
tags: ['security.user_provider']
OpenFinancy\Component\AdminSecurity\AdminCredentials\CompositeAdminCredentialProvider:
arguments:
$providers:
- '@OpenFinancy\Component\AdminSecurity\AdminCredentials\DatabaseAdminCredentialProvider'
- '@OpenFinancy\Component\AdminSecurity\AdminCredentials\DefaultAdminCredentialProvider'- Configure security:
security:
providers:
admin_provider:
id: OpenFinancy\Component\AdminSecurity\Security\AdminUserProvider
firewalls:
admin:
pattern: ^/admin
provider: admin_provider
custom_authenticator: OpenFinancy\Component\AdminSecurity\Security\AdminAuthenticator- Map the entity:
doctrine:
orm:
mappings:
OpenFinancyAdminSecurity:
type: attribute
dir: '%kernel.project_dir%/vendor/openfinancy/admin-security-component/src/AdminSecurity/Entity'
prefix: 'OpenFinancy\Component\AdminSecurity\Entity'Run quality tools locally:
composer analyse
composer lint
composer testCHANGELOG.mdenumerates release history.- Tests provide concrete usage examples for the service container.
Released under the European Union Public Licence v1.2 (EUPL-1.2). See LICENSE for details.