Installation
composer require creatissimo/user-bundle
Ensure your config/bundles.php includes:
Creatissimo\UserBundle\CreatissimoUserBundle::class => ['all' => true],
Database Configuration Run migrations (if using Doctrine):
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate
First Use Case: Registration
config/packages/creatissimo_user.yaml:
fos_user:
registration:
form:
type: App\Form\RegistrationType
app/src/Form/RegistrationType.php):
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class RegistrationType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('email');
$builder->add('password');
}
}
Routing
Ensure routes are loaded in config/routes.yaml:
fos_user:
resource: "@CreatissimoUserBundle/Resources/config/routing/all.xml"
prefix: /user
User Management
$user = new User();
$user->setEmail('[email protected]');
$user->setPlainPassword('secure123');
$userManager = $this->get('fos_user.user_manager');
$userManager->updateUser($user);
$user = $userManager->findUserBy(['email' => '[email protected]']);
Password Handling
/user/resetting/request.UserManager:
$tokenGenerator = $this->get('fos_user.util.token_generator');
$token = $tokenGenerator->generateToken();
Custom User Fields
User entity:
use Creatissimo\UserBundle\Model\User as BaseUser;
class User extends BaseUser {
/**
* @ORM\Column(type="string", length=255)
*/
private $customField;
}
Authentication Integration
UserProvider with Symfony’s SecurityBundle:
security:
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
fos_user with API Platform or custom controllers to expose user endpoints.Mercure or REST APIs.Deprecated Fork
Configuration Overrides
fos_user.yaml) may conflict with Symfony’s default security setup.Token Expiry
config/packages/creatissimo_user.yaml:
fos_user:
resetting:
token_ttl: 86400 # 1 day in seconds
Email Confirmation
User entity implements AdvancedUserInterface:
use Creatissimo\UserBundle\Model\AdvancedUserInterface;
class User implements AdvancedUserInterface { ... }
Event Listeners
fos_user.register.form.validate):
// src/EventListener/RegistrationListener.php
public function onRegistrationFormValidate(FormEvent $event) {
$form = $event->getForm();
$form->addError(new FormError('Custom validation error'));
}
services.yaml:
services:
App\EventListener\RegistrationListener:
tags:
- { name: kernel.event_listener, event: fos_user.register.form.validate }
Doctrine Migrations
Logging
APP_DEBUG=true) to log FOSUserBundle events:
$this->get('logger')->debug('User event triggered', ['event' => $event->getName()]);
Custom User Class
User entity by configuring fos_user.model.user.class:
fos_user:
model:
user:
class: App\Entity\User
Profile Management
class ProfileController extends AbstractController {
public function editAction() {
$user = $this->getUser();
$form = $this->createForm('App\Form\ProfileType', $user);
// ...
}
}
routing.yml:
app_profile_edit:
path: /profile/edit
methods: [GET, POST]
defaults: { _controller: App\Controller\ProfileController::edit }
Security Voters
use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
class CustomVoter implements VoterInterface {
public function supports(string $attribute, $subject): bool { ... }
public function vote(AuthorizationContext $context): int { ... }
}
security.yaml:
security:
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
How can I help you explore Laravel packages today?