- Symfony2 - Installer FOSUserBundle - Licence Fondamentale d'Informatique
dimanche 15 mars 2015

Symfony2 - Installer FOSUserBundle



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 6.
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 6)

Intallation de FOSUserBundle via composer :

Notre composer.phar se situe sur /var/www/
cd /var/www/symfonyphp ./composer.phar require friendsofsymfony/user-bundle "~2.0@dev"
Installer les dépendances :
php composer.phar update

Génération du Bundle UserBundle

php app/console generate:bundle
Bundle Namespace : tuto/UserBundle
Bundle Name : tutoUserBundle
Target directory /var/www/symfony2/src
Configuration format :  annotation
Whole directory : yes
Confirm generation : yes
Update kernel : yes
Update routing : yes
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 :
cd tuto/UserBundlenano 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 :
php app/console generate:doctrine:entity
The Entity shortcut name: tutoUserBundle:Post
Configuration format (yml, xml, php, or annotation) [annotation]
Création du fichier User.php :

cd tuto/UserBundle/Entity
nano 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
fos_user:
    db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
    firewall_name: main
    user_class: tuto\UserBundle\Entity\User
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 :
[root@dev symfony]# app/console router:debug
[router] Current routes
 Name                              Method   Scheme Host Path
 _wdt                              ANY      ANY    ANY  /_wdt/{token}
 _profiler_home                    ANY      ANY    ANY  /_profiler/
 _profiler_search                  ANY      ANY    ANY  /_profiler/search
 _profiler_search_bar              ANY      ANY    ANY  /_profiler/search_bar
 _profiler_purge                   ANY      ANY    ANY  /_profiler/purge
 _profiler_info                    ANY      ANY    ANY  /_profiler/info/{about}
 _profiler_phpinfo                 ANY      ANY    ANY  /_profiler/phpinfo
 _profiler_search_results          ANY      ANY    ANY  /_profiler/{token}/search/results
 _profiler                         ANY      ANY    ANY  /_profiler/{token}
 _profiler_router                  ANY      ANY    ANY  /_profiler/{token}/router
 _profiler_exception               ANY      ANY    ANY  /_profiler/{token}/exception
 _profiler_exception_css           ANY      ANY    ANY  /_profiler/{token}/exception.css
 _configurator_home                ANY      ANY    ANY  /_configurator/
 _configurator_step                ANY      ANY    ANY  /_configurator/step/{index}
 _configurator_final               ANY      ANY    ANY  /_configurator/final
 _twig_error_test                  ANY      ANY    ANY  /_error/{code}.{_format}
 tuto_hello_test                   ANY      ANY    ANY  /hello-world-test
 fos_user_security_login           ANY      ANY    ANY  /login
 fos_user_security_check           POST     ANY    ANY  /login_check
 fos_user_security_logout          ANY      ANY    ANY  /logout
 fos_user_profile_show             GET      ANY    ANY  /profile/
 fos_user_profile_edit             ANY      ANY    ANY  /profile/edit
 fos_user_registration_register    ANY      ANY    ANY  /register/
 fos_user_registration_check_email GET      ANY    ANY  /register/check-email
 fos_user_registration_confirm     GET      ANY    ANY  /register/confirm/{token}
 fos_user_registration_confirmed   GET      ANY    ANY  /register/confirmed
 fos_user_resetting_request        GET      ANY    ANY  /resetting/request
 fos_user_resetting_send_email     POST     ANY    ANY  /resetting/send-email
 fos_user_resetting_check_email    GET      ANY    ANY  /resetting/check-email
 fos_user_resetting_reset          GET|POST ANY    ANY  /resetting/reset/{token}
 fos_user_change_password          GET|POST ANY    ANY  /profile/change-password
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 :
[root@dev symfony]# app/console doctrine:schema:update --force
Updating database schema...
Database schema updated successfully! "1" queries were executed
[root@dev symfony]#
Testez ensuite l’url suivante :

Yes !!
Création d’un utilisateur :
[root@dev symfony]# app/console fos:user:create
Please choose a username:toto
Please choose an email:toto@localhost
Please choose a password:
Created user toto
Modifiez le rôle d’un utilisateur :

[root@dev symfony]# app/console fos:user:promote
Please choose a username:toto
Please choose a role:ROLE_ADMIN
Role "ROLE_ADMIN" has been added to user "toto".

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 :)


0 commentaires:

Enregistrer un commentaire

 
-