viernes, 18 de octubre de 2013

Friends Of Symfony User Bundle - FOSUserBundle - Parte I - Instalación



Friends Of Symfony User Bundle


1.- Instalación:

En el archivo composer.json

nano composer.json


debajo de:

"require": {

agregar:

"friendsofsymfony/user-bundle": "~2.0@dev"

luego actualizar composer:

php composer.phar update

2.- Habilitación:

A continuación editar el archivo AppKernel.php

nano app/AppKernel.php

debajo de:

$bundles = array(

agregar:

new FOS\UserBundle\FOSUserBundle(),

3.- Personalización de Entidad Usuario

nano src/Petramas/MainBundle/Entity/Usuario.php

agregar debajo de namespace:

use FOS\UserBundle\Model\User as BaseUser;

que la clase herede de BaseUser:

class Usuario extends BaseUser

cambiar el id a protected:

protected $id;

usar el constructor del padre, debajo de:

public function __construct()
{

agregar:

parent::__construct();

4.- Configurar la seguridad

nano app/config/security.yml

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            pattern: ^/
            form_login:
                login_path: /
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
                default_target_path: /
                use_referer: true
                always_use_default_target_path: true
                target_path_parameter: _target_path
                failure_path: /
            logout:
                path: /logout
                target: /
                invalidate_session: false
            anonymous: true
            remember_me:
                key: %secret%
                lifetime: 3600
                path: /
                domain: local.petramas.com

    access_control:
        - { path: ^/admin/, roles: ROLE_ADMIN }

5.- Configurar FOSUserBundle

nano app/config.yml

habilitar librería traductora:

descomentar:

#translator:      { fallback: %locale% }

agregar al final de archivo:

fos_user:
db_driver: orm
    firewall_name: main
    user_class: Petramas\MainBundle\Entity\Usuario

6.- Importar las rutas de FOSUserBundle:

nano app/config/routing.yml

agregar al final de archivo:

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

7.- Actualizar base de datos

php app/console doctrine:schema:update --force