Backend (sf2Vigo)
Click here to load reader
-
Upload
javier-eguiluz -
Category
Technology
-
view
5.013 -
download
1
description
Transcript of Backend (sf2Vigo)
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.