bengor-user/user-bundle
Fully featured, well-tested Symfony user bundle built on BenGorUser. Supports multiple user types and HTML/JSON renderers. Includes registration (confirmation/invites), login/logout, JWT auth, password reset, user removal, role management, and token purging.
Installation
composer require bengor-user/user-bundle
Enable the bundle in AppKernel.php:
new BenGorUser\UserBundle\BenGorUserBundle(),
Basic Configuration
Define your user entity extending BenGorUser\User\Domain\Model\User:
// src/AppBundle/Entity/User.php
namespace AppBundle\Entity;
use BenGorUser\User\Domain\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class User extends BaseUser {}
Configure the bundle in config.yml:
ben_gor_user:
user_class:
user:
class: AppBundle\Entity\User
firewall: main
Security Configuration
Update security.yml:
security:
encoders:
AppBundle\Entity\User: bcrypt
providers:
bengor_user:
id: bengor_user.user.provider
firewalls:
main:
anonymous: ~
pattern: ^/
guard:
authenticators:
- bengor_user.user.form_login_authenticator
form_login:
check_path: bengor_user_user_login_check
login_path: bengor_user_user_login
logout: true
First Use Case
Access the default registration route at /user/sign-up or login at /user/login.
User Registration
/user/sign-up.config.yml:
ben_gor_user:
registration:
strategy: confirmation
config.yml:
ben_gor_user:
registration:
strategy: invitation
Password Management
/user/change-password.config.yml:
ben_gor_user:
password_change:
strategy: without_old_password
config.yml:
ben_gor_user:
password_change:
strategy: remember_password
Authentication
/user/login, /user/logout).config.yml:
ben_gor_user:
jwt_authentication: true
Role Management
RoleManager service:
$roleManager = $this->get('bengor_user.user.role_manager');
$roleManager->grantRole('ROLE_ADMIN', $user);
Multiple User Types
config.yml:
ben_gor_user:
user_class:
user:
class: AppBundle\Entity\User
firewall: main
employee:
class: AppBundle\Entity\Employee
firewall: employee
SignUpType, LoginType) by creating custom form classes and overriding the services in services.yml.UserRegisteredEvent or UserEnabledEvent for custom logic.php bin/console ben-gor-user:purge-outdated-invitation-tokens
Route Conflicts
extending_customize_urls.md to override routes.Doctrine ORM vs. ODM
DoctrineODMMongoDBBridgeBundle is installed and configured. The persistence key in config.yml must be set to doctrine_odm_mongodb.Firewall Configuration
firewall key in user_class will result in authentication failures. Example:
ben_gor_user:
user_class:
user:
class: AppBundle\Entity\User
firewall: main # <-- Required
Token Expiry
php bin/console ben-gor-user:purge-outdated-invitation-tokens
php bin/console ben-gor-user:purge-outdated-remember-password-tokens
Multiple User Types and Roles
ROLE_ADMIN to a User entity won’t affect an Employee entity unless explicitly granted.debug:event-dispatcher command to list available events:
php bin/console debug:event-dispatcher
use BenGorUser\User\Domain\Event\UserRegisteredEvent;
public function onUserRegistered(UserRegisteredEvent $event)
{
$this->logger->info('User registered', ['user' => $event->getUser()->getEmail()]);
}
Custom Use Cases
BenGorUser\User\Domain\UseCase\UseCase and register them as services.Custom Views
BenGorUserBundle/Resources/views/ to your project’s templates/BenGorUser/ directory.Adapters
services.yml. Refer to adapters_buses.md, adapters_mailers.md, and adapters_persistence.md.Configuration Overrides
config.yml. Use the reference_configuration.md for a full list of available options.How can I help you explore Laravel packages today?