Installation:
composer require albegali/user-bundle
Ensure your AppKernel.php includes:
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle') // Extends FOSUserBundle
// OR
new Sonata\UserBundle\SonataUserBundle() // Standalone (no FOSUserBundle)
Database Migrations:
Run the bundle’s migrations (check vendor/albegali/user-bundle/Resources/doc/install.md for specifics). Example:
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate
First Use Case:
/admin to manage users/groups via SonataAdmin.Sonata\UserBundle\Form\Type\RegistrationFormType in your config.yml:
sonata_user:
class:
user: AppBundle\Entity\User
group: AppBundle\Entity\Group
User Management:
/admin/user) to create/edit users/groups.$user = $this->get('sonata.user.pool')->getUserManager()->findUserBy(['email' => 'user@example.com']);
Authentication:
security.yml:
providers:
sonata_user_provider:
entity: { class: AppBundle\Entity\User, property: username }
firewalls:
main:
form_login:
provider: sonata_user_provider
Google Authenticator:
config.yml:
sonata_user:
google_authenticator:
enabled: true
{{ form_row(form.google_authenticator_code) }}
EasyExtends:
User) via EasyExtendsBundle:
sonata_easy_extends:
user:
class: AppBundle\Entity\User
fields:
- { name: 'phone', type: 'string', length: 20 }
User entity and update the form type:
// src/AppBundle/Form/Type/AppRegistrationFormType.php
class AppRegistrationFormType extends RegistrationFormType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('phone', TextType::class);
}
}
FOSRestBundle for REST endpoints (e.g., /api/users).FOSUserBundle Dependency:
FOSUserBundle, ensure it’s installed (composer require friendsofsymfony/user-bundle).fos_user.user_manager).Doctrine Migrations:
sonata_project/doctrine-extensions for soft deletes. Conflicts may arise if using custom Doctrine behaviors.Admin Route Conflicts:
routing.yml:
sonata_user_admin:
resource: '@SonataUserBundle/Resources/config/routing/admin.xml'
prefix: /custom-admin
// config/packages/dev/sonata_user.yaml
sonata_user:
debug: true
var/log/dev.log for sonata.user entries.Custom User Classes:
sonata_user.class.user in config to use a custom entity (must extend Sonata\UserBundle\Entity\BaseUser).Event Listeners:
sonata.user.register or sonata.user.login events:
// src/EventListener/UserListener.php
class UserListener {
public function onUserRegister(GetResponseUserEvent $event) {
// Custom logic
}
}
Register in services.yaml:
services:
AppBundle\EventListener\UserListener:
tags:
- { name: kernel.event_listener, event: sonata.user.register, method: onUserRegister }
Templates:
registration.html.twig) in templates/SonataUserBundle/.How can I help you explore Laravel packages today?