59

Click here to load reader

Backend (sf2Vigo)

Embed Size (px)

DESCRIPTION

La primera parte de la presentación trata de la seguridad en Symfony2, explicando los conceptos de autenticación y autorización.La segunda parte muestra cómo crear el backend o parte de administración de un sitio web. Primero se hace todo a mano, luego se utiliza el generador de código de Symfony2 y por último se utiliza el Sonata Admin Bundle.

Citation preview

Page 1: Backend (sf2Vigo)

Javier Eguiluz

Backend

Jornadas Symfony2 Galicia25-26 noviembre 2011 #sf2Vigo

Page 2: Backend (sf2Vigo)

• Javier Eguiluz

• formador en Symfony2 y nuevas tecnologías

me presento

Page 3: Backend (sf2Vigo)

creador de http://symfony.es

Page 4: Backend (sf2Vigo)

apasionado de Symfony

http://connect.sensiolabs.com/profile/javier.eguiluz

Page 5: Backend (sf2Vigo)

• Seguridad• Symfony2• entidades + Doctrine2

• Admin generator• manual• Symfony2• SonataAdminBundle

objetivos de la sesión

Page 6: Backend (sf2Vigo)

http://github.com/javiereguiluz/Cupon

Page 7: Backend (sf2Vigo)

Seguridad

Page 8: Backend (sf2Vigo)

autenticación¿Quién eres?

autorización¿Eres del nivel requerido?

Page 9: Backend (sf2Vigo)

usuario aplicación

autenticación autorización

Page 10: Backend (sf2Vigo)

usuario aplicación

autenticación autorización

Page 11: Backend (sf2Vigo)

firewall access control

usuario aplicación

Page 12: Backend (sf2Vigo)

protegiendoel backend

Page 13: Backend (sf2Vigo)

security:

firewalls: backend: pattern: ^/backend

Page 14: Backend (sf2Vigo)

security:

firewalls: backend: pattern: ^/backend http_basic: ~

Page 15: Backend (sf2Vigo)

security:

firewalls: backend: pattern: ^/backend http_basic: ~

access_control: - { path: '^/backend', role: 'ROLE_ADMIN' }

Page 16: Backend (sf2Vigo)

security:

firewalls: backend: pattern: ^/backend http_basic: ~

access_control: - { path: '^/backend', role: 'ROLE_ADMIN' }

providers: administradores:

Page 17: Backend (sf2Vigo)

security:

firewalls: backend: pattern: ^/backend http_basic: ~

access_control: - { path: '^/backend', role: 'ROLE_ADMIN' }

providers: administradores: users: admin: { password: 1234, roles: ['ROLE_ADMIN'] }

Page 18: Backend (sf2Vigo)

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

Page 19: Backend (sf2Vigo)

demoprotegiendo el backend

Page 20: Backend (sf2Vigo)

protegiendoel frontend

Page 21: Backend (sf2Vigo)
Page 22: Backend (sf2Vigo)

1. Configurar firewall y control de accceso

Page 23: Backend (sf2Vigo)

1. Configurar firewall y control de accceso

2. Configurar proveedor de usuarios y asociarlo con la entidad

Page 24: Backend (sf2Vigo)

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

Page 25: Backend (sf2Vigo)

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

Page 26: Backend (sf2Vigo)

demoprotegiendo el frontend

Page 27: Backend (sf2Vigo)

admingenerator

Page 28: Backend (sf2Vigo)

1. Todo a mano

2. Generador de Symfony2

3. Admin generator de terceros

Page 29: Backend (sf2Vigo)

planificación

Page 30: Backend (sf2Vigo)

CiudadBundle

BackendBundle

OfertaBundle

TiendaBundle

UsuarioBundle

Page 31: Backend (sf2Vigo)

CiudadBundle

Backend

OfertaBundle

TiendaBundle

UsuarioBundle

Backend Backend

Backend

Page 32: Backend (sf2Vigo)

a mano

Page 33: Backend (sf2Vigo)

demoadmin generator a mano

Page 34: Backend (sf2Vigo)

! Flexibilidad total

" Mucho esfuerzo

" Código repetido

Micro!proyectosÚTIL PARA

Page 35: Backend (sf2Vigo)

generador de códigode Symfony2

Page 36: Backend (sf2Vigo)

$ php app/console

generate:doctrine:crud

--entity=OfertaBundle:Oferta

--route-prefix=backend/oferta

--with-write

--format=yml

--no-interaction

Page 37: Backend (sf2Vigo)

1. Crea el controladorOfertaBundle/Controller/OfertaController.php

Page 38: Backend (sf2Vigo)

1. Crea el controladorOfertaBundle/Controller/OfertaController.php

2. Crea el formularioOfertaBundle/Form/OfertaType.php

Page 39: Backend (sf2Vigo)

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/

Page 40: Backend (sf2Vigo)

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/

Page 41: Backend (sf2Vigo)

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

Page 42: Backend (sf2Vigo)

demogenerador de código de Symfony2

Page 43: Backend (sf2Vigo)

! Flexibilidad (casi) total

! CRUD completo

" Está sin terminar

Prototipar, punto de partidaÚTIL PARA

Page 44: Backend (sf2Vigo)

SonataAdminBundle

Page 45: Backend (sf2Vigo)

Thomas Rabaix ekino.com

Page 46: Backend (sf2Vigo)

http://sonata!project.org

Page 47: Backend (sf2Vigo)

[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

Page 48: Backend (sf2Vigo)

[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

Page 49: Backend (sf2Vigo)

actualizar vendors

$ php bin/vendors install

Page 50: Backend (sf2Vigo)

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')));

Page 51: Backend (sf2Vigo)

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(), );

Page 52: Backend (sf2Vigo)

# 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

Page 53: Backend (sf2Vigo)

/app_dev.php/admin/dashboard

Page 54: Backend (sf2Vigo)

demoSonata Admin Bundle

Page 55: Backend (sf2Vigo)

! Completo y fácil de usar

! Integración con otros bundles

" Es oficioso, no oficial

admin generatorÚTIL PARA

Page 56: Backend (sf2Vigo)

muchas gracias

Page 57: Backend (sf2Vigo)

dudas preguntas comentarios

Page 58: Backend (sf2Vigo)

linkedin.com/in/javiereguiluz

contacta

conecta

[email protected]

Page 59: Backend (sf2Vigo)

copyrightLos contenidos de esta presentación son propiedad de su autor. No se pueden reutilizar sin el consentimiento expreso de su autor.