Chargement...

FOS Bundles


Installer FOSBundle avec composer

Tout d'abord installez curl et php5-curl

sudo aptitude install curl
sudo aptitude install php5-curl

Depuis le dossier racine de votre projet exécutez la commande suivante:

php composer.phar require friendsofsymfony/user-bundle "~2.0@dev

Il vous faudra ensuite activer le bundle dans le fichier app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new FOS\UserBundle\FOSUserBundle(),
    );
}
# 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:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            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 }
# app/config/config.yml
fos_user:
    db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
    firewall_name: main
    user_class: Acme\UserBundle\Entity\User

Vous pouvez créer l'entité User en ligne de commande et y ajouter les champs personnalisés que vous désirez:

php app/console generate:doctrine:entity
# app/config/routing.yml
fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"
php app/console doctrine:schema:update --force

Vous pourrez par la suite créer un utiliser en ligne de commande:

php app/console fos:user:create

Le formulaire d'identification

Votre formulaire est maintenant disponible à l'adresse /login

Ecraser le template par défaut de FOSUSerBundle

Ce qui nous vient tout de suite à l'esprit quand on voit le formulaire d'identification de base de FOSUSerBundle c'est : "Mon dieu que c'est moche!". Rassurez-vous, il est possible d'écraser le template.

Pouur cela, créez le fichier app/Resources/FOSUSerBundle/layout.html.twig

{% extends "MyAwesomeBundle:Front:layout.html.twig" %}

{% block content %}

{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
{{app.user.username}}
{% else %}
{% endif %}
      
<form action="{{ path("fos_user_security_check") }}" method="post" class="form-signin">
    
    <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />

    <label for="username">{{ 'Username'|trans({}, 'FOSUserBundle') }}</label>
    <input type="text" id="username" name="_username" class="form-control" value="{{ last_username }}" />

    <label for="password">{{ 'Password'|trans({}, 'FOSUserBundle') }}</label>
    <input type="password" id="password" name="_password" />

    <input type="checkbox" id="remember_me" name="_remember_me" value="on" />
    <label for="remember_me">{{ 'Se souvenir de moi'|trans({}, 'FOSUserBundle') }}</label>

    <input type="submit" id="_submit" class="btn btn-default btn-signin" name="_submit" value="{{ 'Entrer'|trans({}, 'FOSUserBundle') }}" />

</form>
         
{% endblock content %}

Liens utiles

Pour plus d'infos : FOSBundleUser

Configurer UserBundle en quelques secondes fosuserbundle




UNE QUESTION SUR L'ARTICLE?


CSSW Apprendre à créer son site web CSSW