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)
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 :
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 :
puis ajouter
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 !!
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