BackendJavier Eguiluz     Jornadas Symfony2 Galicia     25-26 noviembre 2011        #sf2Vigo
me presento •   Javier Eguiluz •   formador en Symfony2 y     nuevas tecnologías
creador de http://symfony.es
apasionado de Symfony           http://connect.sensiolabs.com/                 profile/javier.eguiluz
objetivos de la sesión •   Seguridad     • Symfony2     • entidades + Doctrine2 •   Admin generator     • manual     • Sym...
http://github.com/javiereguiluz/Cupon
Seguridad
autenticación      ¿Quién eres?   autorización¿Eres del nivel requerido?
autenticación   autorizaciónusuario                                  aplicación
autenticación   autorizaciónusuario                                  aplicación
firewall   access controlusuario                               aplicación
protegiendo el backend
security:    firewalls:        backend:            pattern:   ^/backend
security:    firewalls:        backend:            pattern:    ^/backend            http_basic: ~
security:    firewalls:        backend:            pattern:    ^/backend            http_basic: ~    access_control:      ...
security:    firewalls:        backend:            pattern:    ^/backend            http_basic: ~    access_control:      ...
security:    firewalls:        backend:            pattern:    ^/backend            http_basic: ~    access_control:      ...
security:    firewalls:        backend:            pattern:    ^/backend            http_basic: ~    access_control:      ...
demoprotegiendo el backend
protegiendo el frontend
1. Configurar firewall y control de   accceso
1. Configurar firewall y control de   accceso2. Configurar proveedor de usuarios y   asociarlo con la entidad
1. Configurar firewall y control de   accceso2. Configurar proveedor de usuarios y   asociarlo con la entidad3. Añadir rut...
1. Configurar firewall y control de   accceso2. Configurar proveedor de usuarios y   asociarlo con la entidad3. Añadir rut...
demoprotegiendo el frontend
admingenerator
1. Todo a mano2. Generador de Symfony23. Admin generator de terceros
planificación
Ciudad   Tienda    BackendBundle   Bundle     BundleOferta   UsuarioBundle   Bundle
Ciudad   Backend   Tienda    BackendBundle             BundleOferta   Backend                   Usuario   BackendBundle   ...
a mano
demoadmin generator a mano
! Flexibilidad total" Mucho esfuerzo" Código repetidoÚTIL PARA   Micro!proyectos
generador de código      de Symfony2
$ php app/console  generate:doctrine:crud  --entity=OfertaBundle:Oferta  --route-prefix=backend/oferta  --with-write  --fo...
1. Crea el controlador   OfertaBundle/Controller/OfertaController.php
1. Crea el controlador   OfertaBundle/Controller/OfertaController.php2. Crea el formulario   OfertaBundle/Form/OfertaType....
1. Crea el controlador   OfertaBundle/Controller/OfertaController.php2. Crea el formulario   OfertaBundle/Form/OfertaType....
1. Crea el controlador   OfertaBundle/Controller/OfertaController.php2. Crea el formulario   OfertaBundle/Form/OfertaType....
1. Crea el controlador   OfertaBundle/Controller/OfertaController.php2. Crea el formulario   OfertaBundle/Form/OfertaType....
demogenerador de código de Symfony2
! Flexibilidad (casi) total! CRUD completo" Está sin terminarÚTIL PARA   Prototipar, punto de partida
SonataAdminBundle
Thomas Rabaix   ekino.com
http://sonata!project.org
actualizar archivo deps[SonatajQueryBundle]  git=http://github.com/sonata-project/SonatajQueryBundle.git  target=/bundles/...
actualizar archivo deps[SonatajQueryBundle]  git=http://github.com/sonata-project/SonatajQueryBundle.git  target=/bundles/...
actualizar vendors$ php bin/vendors install
registrar los nuevos namespaces// app/autoload.php$loader = new UniversalClassLoader();$loader->registerNamespaces(array( ...
activar los nuevos bundles// app/AppKernel.phpclass AppKernel extends Kernel{  public function registerBundles()  {    $bu...
definir las nuevas rutas# app/config/routing.ymlsonata:    resource: @SonataAdminBundle/Resources/config/routing/sonata_ad...
/app_dev.php/admin/dashboard
demoSonata Admin Bundle
! Completo y fácil de usar! Integración con otros bundles" Es oficioso, no oficialÚTIL PARA   admin generator
muchasgracias
dudaspreguntascomentarios
contactajavier.eguiluz@gmail.comconectalinkedin.com/in/javiereguiluz
copyrightLos contenidos de estapresentación son propiedadde su autor. No se puedenreutilizar sin el consentimientoexpreso ...
Backend (sf2Vigo)
Upcoming SlideShare
Loading in...5
×

Backend (sf2Vigo)

5,102

Published on

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.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,102
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
129
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Backend (sf2Vigo)

  1. 1. BackendJavier Eguiluz Jornadas Symfony2 Galicia 25-26 noviembre 2011 #sf2Vigo
  2. 2. me presento • Javier Eguiluz • formador en Symfony2 y nuevas tecnologías
  3. 3. creador de http://symfony.es
  4. 4. apasionado de Symfony http://connect.sensiolabs.com/ profile/javier.eguiluz
  5. 5. objetivos de la sesión • Seguridad • Symfony2 • entidades + Doctrine2 • Admin generator • manual • Symfony2 • SonataAdminBundle
  6. 6. http://github.com/javiereguiluz/Cupon
  7. 7. Seguridad
  8. 8. autenticación ¿Quién eres? autorización¿Eres del nivel requerido?
  9. 9. autenticación autorizaciónusuario aplicación
  10. 10. autenticación autorizaciónusuario aplicación
  11. 11. firewall access controlusuario aplicación
  12. 12. protegiendo el backend
  13. 13. security: firewalls: backend: pattern: ^/backend
  14. 14. security: firewalls: backend: pattern: ^/backend http_basic: ~
  15. 15. security: firewalls: backend: pattern: ^/backend http_basic: ~ access_control: - { path: ^/backend, role: ROLE_ADMIN }
  16. 16. security: firewalls: backend: pattern: ^/backend http_basic: ~ access_control: - { path: ^/backend, role: ROLE_ADMIN } providers: administradores:
  17. 17. security: firewalls: backend: pattern: ^/backend http_basic: ~ access_control: - { path: ^/backend, role: ROLE_ADMIN } providers: administradores: users: admin: { password: 1234, roles: [ROLE_ADMIN] }
  18. 18. security: firewalls: backend: pattern: ^/backend http_basic: ~ access_control: - { path: ^/backend, role: ROLE_ADMIN } providers: administradores: users: admin: { password: 1234, roles: [ROLE_ADMIN] } encoders: SymfonyComponentSecurityCoreUserUser: plaintext
  19. 19. demoprotegiendo el backend
  20. 20. protegiendo el frontend
  21. 21. 1. Configurar firewall y control de accceso
  22. 22. 1. Configurar firewall y control de accceso2. Configurar proveedor de usuarios y asociarlo con la entidad
  23. 23. 1. Configurar firewall y control de accceso2. Configurar proveedor de usuarios y asociarlo con la entidad3. Añadir rutas /login, /login_check y /logout
  24. 24. 1. Configurar firewall y control de accceso2. Configurar proveedor de usuarios y asociarlo con la entidad3. Añadir rutas /login, /login_check y /logout4. Crear acción y formulario de login
  25. 25. demoprotegiendo el frontend
  26. 26. admingenerator
  27. 27. 1. Todo a mano2. Generador de Symfony23. Admin generator de terceros
  28. 28. planificación
  29. 29. Ciudad Tienda BackendBundle Bundle BundleOferta UsuarioBundle Bundle
  30. 30. Ciudad Backend Tienda BackendBundle BundleOferta Backend Usuario BackendBundle Bundle
  31. 31. a mano
  32. 32. demoadmin generator a mano
  33. 33. ! Flexibilidad total" Mucho esfuerzo" Código repetidoÚTIL PARA Micro!proyectos
  34. 34. generador de código de Symfony2
  35. 35. $ php app/console generate:doctrine:crud --entity=OfertaBundle:Oferta --route-prefix=backend/oferta --with-write --format=yml --no-interaction
  36. 36. 1. Crea el controlador OfertaBundle/Controller/OfertaController.php
  37. 37. 1. Crea el controlador OfertaBundle/Controller/OfertaController.php2. Crea el formulario OfertaBundle/Form/OfertaType.php
  38. 38. 1. Crea el controlador OfertaBundle/Controller/OfertaController.php2. Crea el formulario OfertaBundle/Form/OfertaType.php3. Crea las plantillas index, new, edit y show en OfertaBundle/Resources/views/Oferta/
  39. 39. 1. Crea el controlador OfertaBundle/Controller/OfertaController.php2. Crea el formulario OfertaBundle/Form/OfertaType.php3. Crea las plantillas index, new, edit y show en OfertaBundle/Resources/views/Oferta/4. Crea el archivo oferta.yml en OfertaBundle/Resources/config/routing/
  40. 40. 1. Crea el controlador OfertaBundle/Controller/OfertaController.php2. Crea el formulario OfertaBundle/Form/OfertaType.php3. Crea las plantillas index, new, edit y show en OfertaBundle/Resources/views/Oferta/4. Crea el archivo oferta.yml en OfertaBundle/Resources/config/routing/5. Importa el archivo oferta.yml desde el archivo OfertaBundle/Resources/config/routing.yml
  41. 41. demogenerador de código de Symfony2
  42. 42. ! Flexibilidad (casi) total! CRUD completo" Está sin terminarÚTIL PARA Prototipar, punto de partida
  43. 43. SonataAdminBundle
  44. 44. Thomas Rabaix ekino.com
  45. 45. http://sonata!project.org
  46. 46. 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
  47. 47. 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
  48. 48. actualizar vendors$ php bin/vendors install
  49. 49. 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)));
  50. 50. activar los nuevos bundles// app/AppKernel.phpclass AppKernel extends Kernel{ public function registerBundles() { $bundles = array( new SymfonyBundleFrameworkBundleFrameworkBundle(), new SymfonyBundleSecurityBundleSecurityBundle(), new SymfonyBundleTwigBundleTwigBundle(), // ... new SonatajQueryBundleSonatajQueryBundle(), new SonataAdminBundleSonataAdminBundle(), new SonataDoctrineORMAdminBundleSonataDoctrineORMAdminBundle(), new KnpBundleMenuBundleKnpMenuBundle(), );
  51. 51. definir las nuevas rutas# app/config/routing.ymlsonata: resource: @SonataAdminBundle/Resources/config/routing/sonata_admin.xml prefix: /admin_sonata_admin: resource: . type: sonata_admin prefix: /admin
  52. 52. /app_dev.php/admin/dashboard
  53. 53. demoSonata Admin Bundle
  54. 54. ! Completo y fácil de usar! Integración con otros bundles" Es oficioso, no oficialÚTIL PARA admin generator
  55. 55. muchasgracias
  56. 56. dudaspreguntascomentarios
  57. 57. contactajavier.eguiluz@gmail.comconectalinkedin.com/in/javiereguiluz
  58. 58. copyrightLos contenidos de estapresentación son propiedadde su autor. No se puedenreutilizar sin el consentimientoexpreso de su autor.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×