Symfony2 – Installer FOSUserBundle

janvier 9, 2015 7:12 Publié par 2 Comentaires

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/

cd /var/www/symfony
php ./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 src/tuto/UserBundle
nano tutoUserBundle.php


{{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

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 :

tutodidacte symfony4.png
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 🙂

Classés dans :

Cet article a été écrit par admin

2 commentaires

  • Christophe Houlet says:

    Merci beaucoup pour cet excellent tutoriel, qui m’a permis d’appréhender FosUserBundle.

    Ce serait génial si vous donniez des exemples de configuration, par exemple comment créer des espaces reservés sur un site avec accès d’un membre connecté à ses seules données personnelles (comme un client d’un site marchand qui veut retrouver en se connectant la liste de ses derniers achats, par exemple).

    A +

     

Laisser un commentaire