Javier Eguiluz
Backend
Jornadas Symfony2 Galicia25-26 noviembre 2011 #sf2Vigo
• Javier Eguiluz
• formador en Symfony2 y nuevas tecnologías
me presento
creador de http://symfony.es
apasionado de Symfony
http://connect.sensiolabs.com/profile/javier.eguiluz
• Seguridad• Symfony2• entidades + Doctrine2
• Admin generator• manual• Symfony2• SonataAdminBundle
objetivos de la sesión
http://github.com/javiereguiluz/Cupon
Seguridad
autenticación¿Quién eres?
autorización¿Eres del nivel requerido?
usuario aplicación
autenticación autorización
usuario aplicación
autenticación autorización
firewall access control
usuario aplicación
protegiendoel backend
security:
firewalls: backend: pattern: ^/backend
security:
firewalls: backend: pattern: ^/backend http_basic: ~
security:
firewalls: backend: pattern: ^/backend http_basic: ~
access_control: - { path: '^/backend', role: 'ROLE_ADMIN' }
security:
firewalls: backend: pattern: ^/backend http_basic: ~
access_control: - { path: '^/backend', role: 'ROLE_ADMIN' }
providers: administradores:
security:
firewalls: backend: pattern: ^/backend http_basic: ~
access_control: - { path: '^/backend', role: 'ROLE_ADMIN' }
providers: administradores: users: admin: { password: 1234, roles: ['ROLE_ADMIN'] }
security:
firewalls: backend: pattern: ^/backend http_basic: ~
access_control: - { path: '^/backend', role: 'ROLE_ADMIN' }
providers: administradores: users: admin: { password: 1234, roles: ['ROLE_ADMIN'] }
encoders: Symfony\Component\Security\Core\User\User: plaintext
demoprotegiendo el backend
protegiendoel frontend
1. Configurar firewall y control de accceso
1. Configurar firewall y control de accceso
2. Configurar proveedor de usuarios y asociarlo con la entidad
1. Configurar firewall y control de accceso
2. Configurar proveedor de usuarios y asociarlo con la entidad
3. Añadir rutas /login, /login_check y /logout
1. Configurar firewall y control de accceso
2. Configurar proveedor de usuarios y asociarlo con la entidad
3. Añadir rutas /login, /login_check y /logout
4. Crear acción y formulario de login
demoprotegiendo el frontend
admingenerator
1. Todo a mano
2. Generador de Symfony2
3. Admin generator de terceros
planificación
CiudadBundle
BackendBundle
OfertaBundle
TiendaBundle
UsuarioBundle
CiudadBundle
Backend
OfertaBundle
TiendaBundle
UsuarioBundle
Backend Backend
Backend
a mano
demoadmin generator a mano
! Flexibilidad total
" Mucho esfuerzo
" Código repetido
Micro!proyectosÚTIL PARA
generador de códigode Symfony2
$ php app/console
generate:doctrine:crud
--entity=OfertaBundle:Oferta
--route-prefix=backend/oferta
--with-write
--format=yml
--no-interaction
1. Crea el controladorOfertaBundle/Controller/OfertaController.php
1. Crea el controladorOfertaBundle/Controller/OfertaController.php
2. Crea el formularioOfertaBundle/Form/OfertaType.php
1. Crea el controladorOfertaBundle/Controller/OfertaController.php
2. Crea el formularioOfertaBundle/Form/OfertaType.php
3. Crea las plantillas index, new, edit y show enOfertaBundle/Resources/views/Oferta/
1. Crea el controladorOfertaBundle/Controller/OfertaController.php
2. Crea el formularioOfertaBundle/Form/OfertaType.php
3. Crea las plantillas index, new, edit y show enOfertaBundle/Resources/views/Oferta/
4. Crea el archivo oferta.yml enOfertaBundle/Resources/config/routing/
1. Crea el controladorOfertaBundle/Controller/OfertaController.php
2. Crea el formularioOfertaBundle/Form/OfertaType.php
3. Crea las plantillas index, new, edit y show enOfertaBundle/Resources/views/Oferta/
4. Crea el archivo oferta.yml enOfertaBundle/Resources/config/routing/
5. Importa el archivo oferta.yml desde el archivoOfertaBundle/Resources/config/routing.yml
demogenerador de código de Symfony2
! Flexibilidad (casi) total
! CRUD completo
" Está sin terminar
Prototipar, punto de partidaÚTIL PARA
SonataAdminBundle
Thomas Rabaix ekino.com
http://sonata!project.org
[SonatajQueryBundle] git=http://github.com/sonata-project/SonatajQueryBundle.git !target=/bundles/Sonata/jQueryBundle
[SonataAdminBundle] !git=http://github.com/sonata-project/SonataAdminBundle.git !target=/bundles/Sonata/AdminBundle
[MenuBundle] !git=http://github.com/knplabs/KnpMenuBundle.git !target=/bundles/Knp/Bundle/MenuBundle
[KnpMenu] !git=https://github.com/knplabs/KnpMenu.git !target=/knp/menu
[SonataDoctrineORMAdminBundle] !git=http://github.com/sonata-project/SonataDoctrineORMAdminBundle.git !target=/bundles/Sonata/DoctrineORMAdminBundle
actualizar archivo deps
[SonatajQueryBundle] git=http://github.com/sonata-project/SonatajQueryBundle.git !target=/bundles/Sonata/jQueryBundle
[SonataAdminBundle] !git=http://github.com/sonata-project/SonataAdminBundle.git !target=/bundles/Sonata/AdminBundle
[MenuBundle] !git=http://github.com/knplabs/KnpMenuBundle.git !target=/bundles/Knp/Bundle/MenuBundle
[KnpMenu] !git=https://github.com/knplabs/KnpMenu.git !target=/knp/menu
[SonataDoctrineORMAdminBundle] !git=http://github.com/sonata-project/SonataDoctrineORMAdminBundle.git !target=/bundles/Sonata/DoctrineORMAdminBundle
actualizar archivo deps
actualizar vendors
$ php bin/vendors install
registrar los nuevos namespaces// app/autoload.php
$loader = new UniversalClassLoader();$loader->registerNamespaces(array( 'Symfony' => array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'), 'Sensio' => __DIR__.'/../vendor/bundles', // ... 'Sonata' => __DIR__.'/../vendor/bundles', 'Knp' => array(__DIR__.'/../vendor/bundles', __DIR__.'/../vendor/knp/menu/src')));
activar los nuevos bundles// app/AppKernel.php
class AppKernel extends Kernel{ public function registerBundles() { $bundles = array( new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), new Symfony\Bundle\SecurityBundle\SecurityBundle(), new Symfony\Bundle\TwigBundle\TwigBundle(), // ... new Sonata\jQueryBundle\SonatajQueryBundle(), new Sonata\AdminBundle\SonataAdminBundle(), new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(), new Knp\Bundle\MenuBundle\KnpMenuBundle(), );
# app/config/routing.yml
sonata:
resource: '@SonataAdminBundle/Resources/config/routing/sonata_admin.xml'
prefix: /admin
_sonata_admin:
resource: .
type: sonata_admin
prefix: /admin
definir las nuevas rutas
/app_dev.php/admin/dashboard
demoSonata Admin Bundle
! Completo y fácil de usar
! Integración con otros bundles
" Es oficioso, no oficial
admin generatorÚTIL PARA
muchas gracias
dudas preguntas comentarios
copyrightLos contenidos de esta presentación son propiedad de su autor. No se pueden reutilizar sin el consentimiento expreso de su autor.
Top Related