linkorb / flex-auth
This libraries provides flex auth for symfony security in runtime
Installs: 1 087
Dependents: 3
Suggesters: 0
Security: 0
Stars: 0
Watchers: 4
Forks: 2
Open Issues: 1
Requires
- php: >=7.0
- symfony/security: ^4.0
Requires (Dev)
- phpunit/phpunit: ^8
Suggests
- firebase/php-jwt: Required for support flex-auth jwt type format. Prefer ^5.0
- symfony/doctrine-bridge: Required for support flex-auth entity type format. Prefer ^4.0
- symfony/http-foundation: Required for support flex-auth jwt type format. Prefer ^4.0
- userbase/client: Required for support userbase type format
This package is auto-updated.
Last update: 2024-10-30 01:42:43 UTC
README
FlexAuth: independent library for symfony security
Allows switching the UserProvider
at Runtime using environment variables.
Dynamic UserProvider that supports multiple backends based on environment variables.
To override which should provider configuration as array for runtime
FlexAuth\FlexAuthTypeProviderInterface
Using FlexAuth\FlexAuthTypeProviderFactory::fromEnv('FLEX_AUTH'')
and define env variables in format
type?param1=value1¶m2=value2¶m3=value3
Example define environment variable
## Use memory provider
FLEX_AUTH=memory?users=alice:4l1c3:ROLE_ADMIN;ROLE_EXAMPLE,bob:b0b:ROLE_EXAMPLE)
## Or use userbase provider
FLEX_AUTH=userbase?dsn=https://username:password@userbase.example.com
## Or use the entity provider
FLEX_AUTH=entity?class=\App\Entities\User&property=username
## Or use a JWT provider
FLEX_AUTH=jwt?algo=RS256&publickey=@\cert\public_key.key&private_key=@\cert\privite_key.key&userField=username&groupField=permissions
A long form format could be supported like this:
FLEX_AUTH=entity
FLEX_AUTH_ENTITY_CLASS=\App\Entities\User
FLEX_AUTH_ENTITY_PROPERTY=username
Dynamically flex type provider example.
class MyFlexAuthTypeProvider implements FlexAuthTypeProviderInterface { protected $className = \App\Entities\User::class; // can be change in runtime protected $propery = 'id'; //... public function provide(): array { // will be call every time return [ 'type' => 'entity', 'class' => $this->className, 'propery' => $this->propery, // dynamic user identificator ]; } public function switchToEmail() { $this->propery = 'email'; } }
Full working example you can see /test/AuthenticationTest::testAuthenticate
Run tests
./vendor/bin/phpunit --bootstrap vendor/autoload.php tests/
Links
FlexAuthBundle - symfony bundle. Demo