Symfony2 - Installer FOSUserBundle

, par  admin

Bonjour à tous !

Voici un petit tuto pour tout ceux qui peinent à installer le fameux FOSuserBundle sur Symphony2. Veuillez suivre attentivement toutes les étapes et tout devrait se dérouler correctement. Ready ?

Préambule

Notre site sur situe sur une distribution Centos.
Racine du site : /var/www/symfony
projet tuto : /var/www/symfony/src/tuto
Symfony est installé et opérationnel (voir tuto Installer Symfony sur Centos)

Intallation de FOSUserBundle via composer :

Notre composer.phar se situe sur /var/www/

Installer les dépendances :

Génération du Bundle UserBundle

Les 2 lignes suivantes doivent être présentes dans le fichier app/AppKernel.php

new FOS\UserBundle\FOSUserBundle(),
new tuto\UserBundle\tutoUserBundle(),

Fichier tutoUserBundle.php :

<?php
namespace tuto\UserBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class tutoUserBundle extends Bundle
{
}

Création de l’entité :
Générons à présent une nouvelle entité pour notre Bundlle :

Création du fichier User.php :

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

namespace tuto\UserBundle\Entity;

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

/**
* @ORM\Entity
* @ORM\Table(name="tuto_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
   }
}

Configuration et Sécurité

Fichier app/config/security.yml :

# app/config/security.yml
security:
   encoders:
       FOS\UserBundle\Model\UserInterface: sha512

   role_hierarchy:
       ROLE_ADMIN:       ROLE_USER
       ROLE_SUPER_ADMIN: ROLE_ADMIN

   providers:
       fos_userbundle:
           id: fos_user.user_provider.username

   firewalls:
       main:
           pattern: ^/
           form_login:
               check_path: /login_check
               login_path: /login
               provider: fos_userbundle
           logout:
               path:    /logout
               target: /
              # provider: fos_userbundle
              # csrf_provider: form.csrf_provider

           anonymous:    true

   access_control:
       - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
       - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
       - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
       - { path: ^/admin/, role: ROLE_ADMIN }

Fichier app/config/config.yml
Dans la section framework :
translator: ~
puis ajouter

Créez le fichier (et les dossiers de l’arborescence si besoin) routing.yml dans le dossier tuto/UserBundle/Resources/config :

fos_user_security:
   resource: "@FOSUserBundle/Resources/config/routing/security.xml"

fos_user_profile:
   resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
   prefix: /profile

fos_user_register:
   resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
   prefix: /register

fos_user_resetting:
   resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
   prefix: /resetting

fos_user_change_password:
   resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
   prefix: /profile

Fichier app/config/routing.yml

user_bundle:
   resource: "@tutoUserBundle/Resources/config/routing.yml"

A partir de cette étape, nous pouvons commencer à tester notre configuration à l’aide de la commande de debug :

Très bien !!!!

Base de donnée :

Nous avions au préalable créé une base de donnée nommée symfony. Si ce n’est pas votre cas, vous pouvez la créer directement depuis votre console d’administration mysql ou dans symfony via la ligne de commande suivante : app/console doctrine:database:create

Dans tous les cas vous devons mettre à jour notre base :

Testez ensuite l’url suivante :
PNG
Yes !!

Création d’un utilisateur :

Modifiez le rôle d’un utilisateur :

Voilà pour une installation basique de ce Bundle. A présent c’est à vous de le configurer selon vos besoins.

A bientôt pour de nouveaux tutos :)

Un peu de théorie... Tous les cours théoriques