Symfony2 – Installer FOSUserBundle
janvier 9, 2015 7:12 2 ComentairesBonjour à 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 :
{{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 :Symfony
Cet article a été écrit par admin
2 commentaires
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 +
Salut Christophe,
Merci pour ton commentaire, je vais publier très prochainement d’autres tutoriels plus détaillés sur ce qu’il est possible de faire avec Symfony. A++