backend (sf2vigo)

Post on 11-May-2015

5.016 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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.

TRANSCRIPT

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

linkedin.com/in/javiereguiluz

contacta

conecta

javier.eguiluz@gmail.com

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

top related