User Bundle
A new Symfony bundle for basic user management.
Installation
composer require msgphp/user-bundleFeatures
- Symfony 3.4 / 4.0 ready
- Doctrine persistence
- Symfony console commands
- Symfony security infrastructure
- Symfony validators
- Credential independent (supports e-mail, nickname, etc.)
- Disabled / enabled users
- User roles
- User attribute values
- User secondary e-mails
Blog posts
- Commanding a decoupled User entity
- Decoupling the User entity with a new Symfony User Bundle
- Building a new Symfony User Bundle
Configuration
<?php
// config/packages/msgphp.php
use MsgPhp\User\Entity\User;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return function (ContainerConfigurator $container) {
$container->extension('msgphp_user', [
'class_mapping' => [
User::class => \App\Entity\User\User::class,
],
]);
};And be done.
Usage
With DoctrineBundle
Repositories from MsgPhp\User\Infra\Doctrine\Repository\* are registered as a service. Corresponding domain interfaces
from MsgPhp\User\Repository\* are aliased.
Minimal configuration:
# config/packages/doctrine.yaml
doctrine:
orm:
mappings:
app:
dir: '%kernel.project_dir%/src/Entity'
type: annotation
prefix: App\Entity- Requires
doctrine/orm
With SimpleBusCommandBusBundle
Command handlers from MsgPhp\User\Command\* are registered as a service.
- Requires
DoctrineBundle + doctrine/orm
With SecurityBundle
Security infrastructure from MsgPhp\User\Infra\Security\* is registered as a service.
In practice the security user is decoupled from your domain entity user. An approach described here.
MsgPhp\User\Infra\Security\SecurityUserimplementingSymfony\Component\Security\Core\User\UserInterfaceApp\Entity\User\UserextendingMsgPhp\User\Entity\User
Minimal configuration:
# config/packages/security.yaml
security:
encoders:
MsgPhp\User\Infra\Security\SecurityUser: bcrypt
providers:
msgphp_user: { id: MsgPhp\User\Infra\Security\SecurityUserProvider }
firewalls:
main:
provider: msgphp_user
anonymous: ~- Requires
DoctrineBundle + doctrine/orm - Suggests
SensioFrameworkExtraBundleto enable the parameter converter
With symfony/console
Console commands from MsgPhp\User\Infra\Console\Command\* are registered as a service.
- Requires
DoctrineBundle + doctrine/orm - Requires
SimpleBusCommandBusBundle
With symfony/form
Form types from MsgPhp\User\Infra\Form\Type\* are registered as a service.
With symfony/validator
Validators from MsgPhp\User\Infra\Validator\* are registered as a service.
- Requires
DoctrineBundle + doctrine/orm
Documentation
- Read the main documentation
- Browse the API documentation
- Try the Symfony demo application
Contributing
This repository is READ ONLY. Issues and pull requests should be submitted in the main development repository.