Skip to content
FOSUserBundle is certainly the most popular bundle for Symfony to manage users.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
config
public
src
templates
translations
.env
README.md
composer.json
composer.lock
symfony.lock

README.md

Comment installer FOSUserBundle avec Symfony 4

FOSUserBundle est certainement le bundle le plus populaire pour gérer les utilisateurs de Symfony.

Avec la dernière version majeure de Symfony (4), l’organisation du code du framework est un peu différente. La documentation officielle du processus d’installation de cet ensemble n’est pas claire.

Vous trouverez ci-dessous les étapes nécessaires à l’utilisation de FOSUserBundle. Vous pouvez obtenir toutes les sources de cette installation sur github.

Étape 1: Installation du squelette Symfony 4 et des composants obligatoires



Installation de Symfony 4 squelette


La première étape est l’installation du squelette de symfony pour partir d’une base propre.
	
  composer create-project symfony/skeleton fosUserBundleProject


Doctrine


Object-Relational-Mapper pour gérer la base de données

Vous devez pointer sur le project pour instaler l'ORM

	
  cd fosUserBundleProject/


	
  composer require doctrine


Ou

	
  composer require orm


A cette étape, vous devez modifier votre fichier de configuration .env et éventuellement config/packages/doctrine.yaml.
En .env, la chaîne à modifier est la suivante :

	
  DATABASE_URL=mysql://userbd:passbd@localhost:3306/dbname


Annotations


Docblock Annotations Parser utilisé avec Doctrine

	
  composer require annotations


SwiftMailerBundle


Swiftmailer, PHP messagerie gratuite et riche en fonctionnalités

	
  composer require swiftmailer-bundle


Twig


Twig, le langage de template flexible, rapide et sécurisé pour PHP

	
  composer require twig


Web Server


Symfony WebServerBundle

	
  composer require server --dev


Étape 2: Téléchargez FOSUserBundle à l'aide de composer



	
  composer require friendsofsymfony/user-bundle "~2.0"


A la fin de l'installation, vous aurez le message d'erreur suivant:

The child node "db_driver" at path "fos_user" must be configured.


C'est normal, vous devez créer votre classe d'utilisateurs et configurer FOSUserBundle.

Étape 3: Créez votre classe d'utilisateurs



Créez src/Entity/User.php qui étend de la classe FOSUserBundle BaseUser.


<?php
// src/Entity/User.php

namespace App\Entity;

use FOS\UserBundle\Model\User as BaseUser; use Doctrine\ORM\Mapping as ORM;

##/** ##* @ORM\Entity ##* @ORM\Table(name="fos_user") ##/ class User extends BaseUser { ##/** ## @ORM\Id ##* @ORM\Column(type="integer") ##* @ORM\GeneratedValue(strategy="AUTO") ##*/ protected $id;

public function __construct()
{
    parent::__construct();
    // your own logic
}

}

N'oublie pas de supprimer les "#"

Étape 4: configurez le fichier security.yml de votre application



Modifier le fichier security.yml sur le chemin config/packages/security.yaml (Configuration de symfony FOSUserBundle security)

	
security:
    encoders:
        FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_token_generator: security.csrf.token_manager

        logout:       true
        anonymous:    true

# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_USER }



Étape 5: Configurez le FOSUserBundle



Créer un fichier config/packages/fos_user.yaml

	
fos_user:
    db_driver: orm # other valid values are 'mongodb' and 'couchdb'
    firewall_name: main
    user_class: App\Entity\User
    from_email:
        address: "mezgani.said@gmail.com"
        sender_name: "mezgani.said@gmail.com"


Mettez à jour config/packages/framework.yaml pour ajouter une configuration de modèle

	
framework:
    templating:
        engines: ['twig', 'php']


Étape 6: Importer le routage FOSUserBundle



Créer config/routes/fos_user.yaml

	
fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"


Étape 7: mettez à jour votre schéma de base de données



	
### Créer la base de donnée 
php bin/console doctrine:database:create
### Voir les modifications sans rien faire
php bin/console doctrine:schema:update --dump-sql
### Forcer les modifications 
php bin/console doctrine:schema:update --force


À ce stade, tout est installé et configuré pour utiliser FOSUserBundle dans Symfony 4. Exécutez la commande suivante pour vérifier si tout va bien

	
  composer update


	
  php bin/console server:run


You can’t perform that action at this time.