fastfony / identity-bundle
Symfony bundle focused on identification and the management of users, roles and groups
Package info
github.com/fastfony/identity-bundle
Type:symfony-bundle
pkg:composer/fastfony/identity-bundle
Requires
- php: >=8.1
- doctrine/doctrine-bundle: ^2.7|^3.2
- doctrine/orm: ^2.14|^3.0
- stof/doctrine-extensions-bundle: ^1.12
- symfony/config: ^7.4|^8.0
- symfony/dependency-injection: ^7.4|^8.0
- symfony/doctrine-bridge: ^7.4|^8.0
- symfony/form: ^7.4|^8.0
- symfony/framework-bundle: ^7.4|^8.0
- symfony/http-kernel: ^7.4|^8.0
- symfony/mailer: ^7.4|^8.0
- symfony/notifier: ^7.4|^8.0
- symfony/rate-limiter: ^7.4|^8.0
- symfony/security-bundle: ^7.4|^8.0
- symfony/translation: ^7.4|^8.0
- symfony/twig-bundle: ^7.4|^8.0
- symfony/uid: ^7.4|^8.0
- symfony/validator: ^7.4|^8.0
- twig/cssinliner-extra: ^3.21
- twig/extra-bundle: ^3.21
- twig/inky-extra: ^3.21
Requires (Dev)
- phpunit/phpunit: ^12.0
README
A Symfony bundle focused on identification and the management of users, roles and groups.
Features
- 👤 User Management: Complete user entity with email authentication
- 🆔 User Access: Login with form or magic login link
- ⏳ Account Activation: Optional email verification for new users
- 🔄 Password Management: Secure password hashing and reset functionality
- 📧 Email Integration: Built-in email templates for login links and password resets
- 🕒 Last Login Tracking: Automatically updates last login timestamp
- 🔐 Role-Based Access Control: Flexible role system with many-to-many relationships
- 👥 Group Support: Organize users into groups with inherited roles
- 🔒 Security Integration: Full integration with Symfony Security component
- 📊 Doctrine ORM: Ready-to-use entities with Doctrine annotations
- ⚙️ Configurable: Easy configuration through YAML files
Installation
Install the bundle via Composer:
composer require fastfony/identity-bundle
This will automatically install the required dependencies including:
stof/doctrine-extensions-bundlefor automatic timestamp managementsymfony/mailer symfony/notifier symfony/twig-bundle twig/extra-bundle twig/cssinliner-extra twig/inky-extrafor email functionalitiessymfony/rate-limiterfor login throttlingsymfony/translationfor translationssymfony/uidfor unique identifiers (in the reset functionality)symfony/formfor register, login and password request form view and handling
Configuration
1. Enable the Bundle
If you're using Symfony Flex and you have play the recipe for the bundle, the bundle will be automatically enabled and config files will be created and you can directly read the section Use the Bundle.
Otherwise, add it to config/bundles.php:
return [ // ... Fastfony\IdentityBundle\FastfonyIdentityBundle::class => ['all' => true], Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle::class => ['all' => true], ];
2. Configuration
If you don't use Symfony Flex, see Configuration for the configuration of the bundle.
Use the bundle
1. Create Database Schema
Option 1 - With migrations (recommended):
Generate and run migrations to create the database tables:
php bin/console doctrine:migrations:diff php bin/console doctrine:migrations:migrate
Option 2 - Without migrations:
Alternatively, you can create the schema directly:
php bin/console doctrine:schema:update --force
It's done! 🥳 You can now start using the bundle.
2. Register your first user
Option 1 - With command:
php bin/console fastfony:user:create
Option 2 - With your browser:
Go to the /register route in order to create the first user account, be sure that your MAILER_DSN is correctly configure and sending messages async is disabled (or your messages consumer command is running) for receive the login link e-mail.
3. Usage
By default, routes behind /secure-area require the user logged in (you can change that in config/packages/security.yaml).
More detailed usage instructions and customizations can be found in the Documentation.
License
This bundle is released under the MIT License. See the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Support
For issues, questions, or contributions, please visit the GitHub repository.