Commit 7e525a06b1fa213984de07f65a573920a15027bc

Authored by Wilmer Ramones
1 parent 5d8300b3ab
Exists in master

creada la gestion de los usuarios y la permisologia de vista de los servicios a traves del ROL

app/Resources/views/base_app.html.twig
... ... @@ -51,10 +51,10 @@
51 51 <div class="subnavbar-inner">
52 52 <div class="container">
53 53 <ul class="mainnav">
54   - <li {% if (app.request.attributes.get('_route') == 'cea_index') %} class="active" {% endif %}><a href="{{path('cea_index')}}"><i class="fa fa-list"></i><span>Principal</span> </a> </li>
  54 + <li {% if (app.request.attributes.get('_route') == 'cea_index') %} class="active" {% endif %}><a href="{{path('cea_index')}}"><i class="fa fa-leaf"></i><span>Principal</span> </a> </li>
55 55 {% if is_granted('ROLE_ADSCRITO') %}
56 56 <li class="dropdown">
57   - <a class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-dashboard"></i>
  57 + <a class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-gears"></i>
58 58 <span>Servicios Docente</span> <b class="caret"></b>
59 59 </a>
60 60 <ul class="dropdown-menu">
... ... @@ -66,8 +66,8 @@
66 66 {% endif %}
67 67 </ul>
68 68 <ul class="pull-right">
69   - {% if is_granted('ROLE_COORDINADOR_NACIONAL') %}
70   - <li class="dropdown"><a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-dashboard"></i><span>Ver Adscripciones</span> <b class="caret"></b></a>
  69 + {% if is_granted('ROLE_COORDINADOR_REGIONAL') %}
  70 + <li class="dropdown"><a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-list"></i><span>Ver Adscripciones</span> <b class="caret"></b></a>
71 71 <ul class="dropdown-menu">
72 72 <li> <a data-toggle="modal" data-target="#buscarAdscripcion">Buscar Adscripcion</a></li>
73 73 <li><a href="{{ path('cea_adscripciones')}}">En espera de Aprobación</a></li>
... ... @@ -76,7 +76,7 @@
76 76 </ul>
77 77 </li>
78 78  
79   - <li class="dropdown"><a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-dashboard"></i><span>Ver Solicitudes</span> <b class="caret"></b></a>
  79 + <li class="dropdown"><a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-group"></i><span>Ver Solicitudes</span> <b class="caret"></b></a>
80 80 <ul class="dropdown-menu">
81 81 <li> <a data-toggle="modal" data-target="#buscarServicios">Buscar Servicios</a></li>
82 82 <li><a href="{{ path('cea_servicios', {'tipo' : 'antiguedad'})}}">En espera de Aprobación</a></li>
... ... @@ -84,8 +84,12 @@
84 84 <li><a href="{{ path('cea_servicios', { 'tipo' : 'antiguedad', 'estatus': 3 })}}">Rechazadas</a></li>
85 85 </ul>
86 86 </li>
87   - </ul>
88 87 {% endif %}
  88 + {% if is_granted('ROLE_ADMINISTRADOR') %}
  89 + <li {% if (app.request.attributes.get('_route') == 'admin_usuarios_index') %} class="active" {% endif %}><a href="{{path('admin_usuarios_index')}}"><i class="fa fa-user"></i><span>Gestión de Usuarios</span> </a> </li>
  90 + {% endif %}
  91 + </ul>
  92 +
89 93 </div>
90 94 <!-- /container -->
91 95 </div>
... ...
app/Resources/views/cea/servicios.html.twig
... ... @@ -21,6 +21,8 @@
21 21 </thead>
22 22 <tbody>
23 23 {% for servicio in servicios %}
  24 + {% if not is_granted('ROLE_COORDINADOR_NACIONAL') %}
  25 + {% if servicio.idRolInstitucion.idInstitucion.idEjeParroquia.idEje == app.user.idRolInstitucion.idInstitucion.idEjeParroquia.idEje %}
24 26 <tr>
25 27 <td>{{servicio.id}}</td>
26 28 <td>
... ... @@ -31,7 +33,7 @@
31 33  
32 34 </td>
33 35 <td>
34   - {{servicio.idRolInstitucion.IdRol.IdAreaPersona.nombre}}
  36 + {{servicio.idRolInstitucion.IdRol.IdAreaInstitucion.nombre}}
35 37 </td>
36 38 <td>
37 39 {{servicio.idRolInstitucion.idInstitucion.idEjeParroquia.IdEje}}
... ... @@ -44,6 +46,33 @@
44 46 </td>
45 47  
46 48 </tr>
  49 + {%endif%}
  50 + {%else%}
  51 +
  52 + <tr>
  53 + <td>{{servicio.id}}</td>
  54 + <td>
  55 + {{servicio.idRolInstitucion.idRol.idPersona.PrimerNombre}}
  56 + {{servicio.idRolInstitucion.idRol.idPersona.PrimerApellido}}
  57 + ( {{servicio.idRolInstitucion}} )
  58 +
  59 +
  60 + </td>
  61 + <td>
  62 + {{servicio.idRolInstitucion.IdRol.IdAreaInstitucion.nombre}}
  63 + </td>
  64 + <td>
  65 + {{servicio.idRolInstitucion.idInstitucion.idEjeParroquia.IdEje}}
  66 + </td>
  67 + <td>{{servicio.idRolInstitucion.idInstitucion.idEjeParroquia.idParroquia.idMunicipio.idEstado}} </td>
  68 + <td>
  69 + <a href="{{ path('cea_servicio_show', { 'id': servicio.id }) }}" class="btn btn-xs btn-info"><i class="fa fa-eye"> </i></a>
  70 + <a href="javascript:;" class="btn btn-xs btn-success"><i class="fa fa-check"> </i></a>
  71 + <a href="javascript:;" class="btn btn-danger btn-xs"><i class="fa fa-times"> </i></a></td>
  72 + </td>
  73 +
  74 + </tr>
  75 + {%endif%}
47 76 {% endfor %}
48 77  
49 78 </tbody>
... ...
app/Resources/views/cea/solicitudes.html.twig
... ... @@ -21,29 +21,58 @@
21 21 </thead>
22 22 <tbody>
23 23 {% for adscripcion in adscripciones %}
24   - <tr>
25   - <td>{{adscripcion.id}}</td>
26   - <td>
27   - {{adscripcion.idRolInstitucion.idRol.idPersona.PrimerNombre}}
28   - {{adscripcion.idRolInstitucion.idRol.idPersona.PrimerApellido}}
29   - ( {{adscripcion.idRolInstitucion}} )
30   -
31   -
32   - </td>
33   - <td>
34   - {{adscripcion.idRolInstitucion.IdRol.IdAreaPersona.nombre}}
35   - </td>
36   - <td>
37   - {{adscripcion.idRolInstitucion.idInstitucion.idEjeParroquia.IdEje}}
38   - </td>
39   - <td>{{adscripcion.idRolInstitucion.idInstitucion.idEjeParroquia.idParroquia.idMunicipio.idEstado}} </td>
40   - <td>
41   - <a href="{{ path('cea_solicitudes_show', { 'id': adscripcion.id }) }}" class="btn btn-xs btn-info"><i class="fa fa-eye"> </i></a>
42   - <a href="javascript:;" class="btn btn-xs btn-success"><i class="fa fa-check"> </i></a>
43   - <a href="javascript:;" class="btn btn-danger btn-xs"><i class="fa fa-times"> </i></a></td>
44   - </td>
45   -
46   - </tr>
  24 + {% if not is_granted('ROLE_COORDINADOR_NACIONAL') %}
  25 + {% if adscripcion.idRolInstitucion.idInstitucion.idEjeParroquia.idEje == app.user.idRolInstitucion.idInstitucion.idEjeParroquia.idEje %}
  26 + <tr>
  27 + <td>{{adscripcion.id}}</td>
  28 + <td>
  29 + {{adscripcion.idRolInstitucion.idRol.idPersona.PrimerNombre}}
  30 + {{adscripcion.idRolInstitucion.idRol.idPersona.PrimerApellido}}
  31 + ( {{adscripcion.idRolInstitucion}} )
  32 +
  33 +
  34 + </td>
  35 + <td>
  36 + {{adscripcion.idRolInstitucion.IdRol.IdAreaInstitucion.nombre}}
  37 + </td>
  38 + <td>
  39 + {{adscripcion.idRolInstitucion.idInstitucion.idEjeParroquia.IdEje}}
  40 + </td>
  41 + <td>{{adscripcion.idRolInstitucion.idInstitucion.idEjeParroquia.idParroquia.idMunicipio.idEstado}} </td>
  42 + <td>
  43 + <a href="{{ path('cea_solicitudes_show', { 'id': adscripcion.id }) }}" class="btn btn-xs btn-info"><i class="fa fa-eye"> </i></a>
  44 + <a href="javascript:;" class="btn btn-xs btn-success"><i class="fa fa-check"> </i></a>
  45 + <a href="javascript:;" class="btn btn-danger btn-xs"><i class="fa fa-times"> </i></a></td>
  46 + </td>
  47 +
  48 + </tr>
  49 + {% endif %}
  50 + {% else %}
  51 + <tr>
  52 + <td>{{adscripcion.id}}</td>
  53 + <td>
  54 + {{adscripcion.idRolInstitucion.idRol.idPersona.PrimerNombre}}
  55 + {{adscripcion.idRolInstitucion.idRol.idPersona.PrimerApellido}}
  56 + ( {{adscripcion.idRolInstitucion}} )
  57 +
  58 +
  59 + </td>
  60 + <td>
  61 + {{adscripcion.idRolInstitucion.IdRol.IdAreaInstitucion.nombre}}
  62 + </td>
  63 + <td>
  64 + {{adscripcion.idRolInstitucion.idInstitucion.idEjeParroquia.IdEje}}
  65 + </td>
  66 + <td>{{adscripcion.idRolInstitucion.idInstitucion.idEjeParroquia.idParroquia.idMunicipio.idEstado}} </td>
  67 + <td>
  68 + <a href="{{ path('cea_solicitudes_show', { 'id': adscripcion.id }) }}" class="btn btn-xs btn-info"><i class="fa fa-eye"> </i></a>
  69 + <a href="javascript:;" class="btn btn-xs btn-success"><i class="fa fa-check"> </i></a>
  70 + <a href="javascript:;" class="btn btn-danger btn-xs"><i class="fa fa-times"> </i></a></td>
  71 + </td>
  72 +
  73 + </tr>
  74 +
  75 + {% endif %}
47 76 {% endfor %}
48 77  
49 78 </tbody>
... ...
app/Resources/views/usuarios/edit.html.twig
1   -{% extends 'base.html.twig' %}
  1 +{% extends 'base_app.html.twig' %}
2 2  
3 3 {% block body %}
4   - <h1>Usuarios edit</h1>
  4 + <div class="container">
  5 + {% form_theme edit_form 'bootstrap_3_horizontal_layout.html.twig' %}
  6 + <h1>Edición de Usuarios</h1>
5 7  
6 8 {{ form_start(edit_form) }}
7 9 {{ form_widget(edit_form) }}
... ... @@ -18,4 +20,5 @@
18 20 {{ form_end(delete_form) }}
19 21 </li>
20 22 </ul>
  23 + </div>
21 24 {% endblock %}
... ...
app/Resources/views/usuarios/index.html.twig
1   -{% extends 'base.html.twig' %}
  1 +{% extends 'base_app.html.twig' %}
2 2  
3 3 {% block body %}
4   - <h1>Usuarios list</h1>
5   -
6   - <table>
7   - <thead>
8   - <tr>
9   - <th>Username</th>
10   - <th>Password</th>
11   - <th>Id</th>
12   - <th>Actions</th>
13   - </tr>
14   - </thead>
15   - <tbody>
  4 + <div class="container">
  5 + <div class="widget widget-table action-table">
  6 + <div class="widget-header">
  7 + <div class="row">
  8 + <div class="col-sm-9"><i class="fa fa-list"></i>
  9 + <h3>Listado de usuarios Registrados</h3></div>
  10 + <div class="col-sm-2"><input type="text" class="form-control"></div>
  11 + </div>
  12 + </div>
  13 + <div class="widget-content">
  14 + <table class="table table-striped table-bordered table-condensed">
  15 + <thead>
  16 + <tr>
  17 + <th>Id</th>
  18 + <th>Nombres y Apellidos</th>
  19 + <th>Eje</th>
  20 + <th>Estado</th>
  21 + <th>Nombre de Usuario</th>
  22 + <th>Acciones</th>
  23 + </tr>
  24 + </thead>
  25 + <tbody>
16 26 {% for usuario in usuarios %}
17 27 <tr>
18   - <td><a href="{{ path('admin_usuarios_show', { 'id': usuario.id }) }}">{{ usuario.username }}</a></td>
19   - <td>{{ usuario.password }}</td>
20 28 <td>{{ usuario.id }}</td>
  29 + <td>{{ usuario.idRolInstitucion.idRol.idPersona.primerNombre }}, {{ usuario.idRolInstitucion.idRol.idPersona.primerApellido }}</td>
  30 + <td>{{usuario.idRolInstitucion.idInstitucion.idEjeParroquia.idEje}}</td>
  31 + <td>{{usuario.idRolInstitucion.idInstitucion.idEjeParroquia.idParroquia.idMunicipio.idEstado}}</td>
21 32 <td>
22   - <ul>
23   - <li>
24   - <a href="{{ path('admin_usuarios_show', { 'id': usuario.id }) }}">show</a>
25   - </li>
26   - <li>
27   - <a href="{{ path('admin_usuarios_edit', { 'id': usuario.id }) }}">edit</a>
28   - </li>
29   - </ul>
  33 + <a href="{{ path('admin_usuarios_show', { 'id': usuario.id }) }}">{{ usuario.username }}</a>
  34 + </td>
  35 + <td>
  36 + <a href="{{ path('admin_usuarios_show', { 'id': usuario.id }) }}" class="btn btn-xs btn-info"><i class="fa fa-eye" ></i></a>
  37 + <a href="{{ path('admin_usuarios_edit', { 'id': usuario.id }) }}" class="btn btn-xs btn-primary"><i class="fa fa-edit"></i></a>
30 38 </td>
31 39 </tr>
32 40 {% endfor %}
... ... @@ -38,4 +46,5 @@
38 46 <a href="{{ path('admin_usuarios_new') }}">Create a new entry</a>
39 47 </li>
40 48 </ul>
  49 + </div>
41 50 {% endblock %}
... ...
app/Resources/views/usuarios/new.html.twig
1   -{% extends 'base.html.twig' %}
  1 +{% extends 'base_app.html.twig' %}
2 2  
3 3 {% block body %}
4   - <h1>Usuarios creation</h1>
5   -
  4 + <div class="container">
  5 + <h1>Nuevo Usuario</h1>
  6 +{% form_theme form 'bootstrap_3_horizontal_layout.html.twig' %}
6 7 {{ form_start(form) }}
7 8 {{ form_widget(form) }}
8 9 <input type="submit" value="Create" />
... ... @@ -13,4 +14,5 @@
13 14 <a href="{{ path('admin_usuarios_index') }}">Back to the list</a>
14 15 </li>
15 16 </ul>
  17 + </div>
16 18 {% endblock %}
... ...
app/Resources/views/usuarios/show.html.twig
1   -{% extends 'base.html.twig' %}
  1 +{% extends 'base_app.html.twig' %}
2 2  
3 3 {% block body %}
4   - <h1>Usuarios</h1>
5   -
6   - <table>
7   - <tbody>
  4 + <div class="container">
  5 + <div class="widget widget-table action-table">
  6 + <div class="widget-header">
  7 + <div class="row">
  8 + <div class="col-sm-9"><i class="fa fa-list"></i>
  9 + <h3>Mostrando usuario</h3></div>
  10 + <div class="col-sm-2"><input type="text" class="form-control"></div>
  11 + </div>
  12 + </div>
  13 + <div class="widget-content">
  14 + <table class="table table-striped table-bordered table-condensed">
  15 + <thead></thead>
8 16 <tr>
9 17 <th>Username</th>
10 18 <td>{{ usuario.username }}</td>
... ... @@ -18,19 +26,18 @@
18 26 <td>{{ usuario.id }}</td>
19 27 </tr>
20 28 </tbody>
  29 + </table>
21 30 </table>
  31 +
  32 +
  33 + {{ form_start(delete_form) }}
  34 + <a href="{{ path('admin_usuarios_index') }}" class="btn btn-sm btn-warning">Regresar</a>
  35 + <a href="{{ path('admin_usuarios_edit', { 'id': usuario.id }) }}" class="btn btn-sm btn-info">Modificar</a>
  36 + <input type="submit" value="Delete" class="btn btn-sm btn-danger">
  37 + {{ form_end(delete_form) }}
22 38  
23   - <ul>
24   - <li>
25   - <a href="{{ path('admin_usuarios_index') }}">Back to the list</a>
26   - </li>
27   - <li>
28   - <a href="{{ path('admin_usuarios_edit', { 'id': usuario.id }) }}">Edit</a>
29   - </li>
30   - <li>
31   - {{ form_start(delete_form) }}
32   - <input type="submit" value="Delete">
33   - {{ form_end(delete_form) }}
34   - </li>
35   - </ul>
  39 +
  40 +
  41 +
  42 + </div>
36 43 {% endblock %}
... ...
app/config/security.yml
... ... @@ -5,7 +5,7 @@ security:
5 5 AppBundle\Entity\Usuarios:
6 6 algorithm: bcrypt
7 7 role_hierarchy:
8   - ROLE_COORDINADOR_NACIONAL: [ROLE_COORDINADOR]
  8 + ROLE_COORDINADOR_NACIONAL: [ROLE_COORDINADOR_REGIONAL]
9 9  
10 10 # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
11 11 providers:
... ...
src/AppBundle/Controller/AdscripcionController.php
... ... @@ -217,7 +217,7 @@ class AdscripcionController extends Controller
217 217 *
218 218 * @Route("/solicitudes/adscripcion/{estatus}", name="cea_adscripciones")
219 219 * @Method({"GET", "POST"})
220   - * @Security("has_role('ROLE_COORDINADOR')")
  220 + * @Security("has_role('ROLE_COORDINADOR_REGIONAL')")
221 221 */
222 222 public function verSolicitudesAdscripcionAction($estatus = 2, Request $request)
223 223 {
... ... @@ -274,7 +274,7 @@ class AdscripcionController extends Controller
274 274 *
275 275 * @Route("/solicitudes/{id}", name="cea_solicitudes_show")
276 276 * @Method("GET")
277   - * @Security("has_role('ROLE_COORDINADOR')")
  277 + * @Security("has_role('ROLE_COORDINADOR_REGIONAL')")
278 278 */
279 279 public function solicitudesAdscripcionShowAction(Adscripcion $adscripcion)
280 280 {
... ... @@ -295,7 +295,7 @@ class AdscripcionController extends Controller
295 295 *
296 296 * @Route("/solicitudes/actualizar/{id}/{estatus}", name="cea_solicitudes_actualizar")
297 297 * @Method({"GET", "POST"})
298   - * @Security("has_role('ROLE_COORDINADOR')")
  298 + * @Security("has_role('ROLE_COORDINADOR_REGIONAL')")
299 299 */
300 300 public function solicitudesAdscripcionEditAction(Adscripcion $adscripcion, $estatus)
301 301 {
... ...
src/AppBundle/Controller/UsuariosController.php
... ... @@ -12,7 +12,7 @@ use AppBundle\Form\UsuariosType;
12 12 /**
13 13 * Usuarios controller.
14 14 *
15   - * @Route("/admin/usuarios")
  15 + * @Route("ceapp/admin/usuarios")
16 16 */
17 17 class UsuariosController extends Controller
18 18 {
... ... @@ -42,9 +42,10 @@ class UsuariosController extends Controller
42 42 public function newAction(Request $request)
43 43 {
44 44 $usuario = new Usuarios();
45   - $form = $this->createForm('AppBundle\Form\UsuariosType', $usuario);
  45 + $form = $this->createForm('AppBundle\Form\UsuarioNuevoType', $usuario);
46 46 $form->handleRequest($request);
47   -
  47 + $pass = $usuario->getPlainPassword();
  48 + if(!$pass) $usuario->setPlainPassword ("0000");
48 49 if ($form->isSubmitted() && $form->isValid()) {
49 50 $password = $this->get('security.password_encoder')
50 51 ->encodePassword($usuario, $usuario->getPlainPassword());
... ...
src/AppBundle/Entity/Usuarios.php
... ... @@ -47,7 +47,7 @@ class Usuarios implements UserInterface, \Serializable
47 47 protected $password;
48 48  
49 49 /**
50   - * @Assert\NotBlank()
  50 + *
51 51 * @Assert\Length(max=4096)
52 52 */
53 53 private $plainPassword;
... ...
src/AppBundle/Form/UsuarioNuevoType.php
... ... @@ -0,0 +1,59 @@
  1 +<?php
  2 +
  3 +namespace AppBundle\Form;
  4 +
  5 +use Symfony\Component\Form\AbstractType;
  6 +use Symfony\Component\Form\FormBuilderInterface;
  7 +use Symfony\Component\OptionsResolver\OptionsResolver;
  8 +use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  9 +use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  10 +use Symfony\Component\Form\Extension\Core\Type\EmailType;
  11 +
  12 +use Symfony\Component\Validator\Constraints\Email;
  13 +use Symfony\Component\Validator\Constraints\NotBlank;
  14 +use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  15 +
  16 +class UsuarioNuevoType extends AbstractType
  17 +{
  18 + /**
  19 + * @param FormBuilderInterface $builder
  20 + * @param array $options
  21 + */
  22 + public function buildForm(FormBuilderInterface $builder, array $options)
  23 + {
  24 + $builder
  25 + ->add('username')
  26 + ->add('idRolInstitucion',EntityType::class, array(
  27 + 'class' => 'AppBundle:RolInstitucion',
  28 + 'choice_label' => 'getIdRol.getIdPersona',
  29 + ))
  30 + ->add('rol', EntityType::class, array(
  31 + 'class' => 'AppBundle:Role',
  32 + 'multiple' => TRUE,
  33 + 'expanded' => TRUE,
  34 + ))
  35 + ->add('email', EmailType::class, array(
  36 + 'attr' => array('placeholder' => 'Dirección de Correo...'),
  37 + 'constraints' => array(
  38 + new NotBlank(),
  39 + new Email()
  40 + )
  41 + ))
  42 + ->add('plainPassword', RepeatedType::class, array(
  43 + 'type' => PasswordType::class,
  44 + 'first_options' => array('label' => 'Password'),
  45 + 'second_options' => array('label' => 'Repeat Password'),
  46 + ))
  47 + ;
  48 + }
  49 +
  50 + /**
  51 + * @param OptionsResolver $resolver
  52 + */
  53 + public function configureOptions(OptionsResolver $resolver)
  54 + {
  55 + $resolver->setDefaults(array(
  56 + 'data_class' => 'AppBundle\Entity\Usuarios'
  57 + ));
  58 + }
  59 +}
... ...
src/AppBundle/Form/UsuariosType.php
... ... @@ -7,6 +7,7 @@ use Symfony\Component\Form\FormBuilderInterface;
7 7 use Symfony\Component\OptionsResolver\OptionsResolver;
8 8 use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
9 9 use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  10 +use Symfony\Bridge\Doctrine\Form\Type\EntityType;
10 11  
11 12 class UsuariosType extends AbstractType
12 13 {
... ... @@ -18,13 +19,20 @@ class UsuariosType extends AbstractType
18 19 {
19 20 $builder
20 21 ->add('username')
21   - ->add('idRolInstitucion')
22   - ->add('rol')
23   - ->add('plainPassword', RepeatedType::class, array(
  22 + /*->add('idRolInstitucion',EntityType::class, array(
  23 + 'class' => 'AppBundle:RolInstitucion',
  24 + 'choice_label' => 'getIdRol.getIdPersona',
  25 + ))*/
  26 + ->add('rol', EntityType::class, array(
  27 + 'class' => 'AppBundle:Role',
  28 + 'multiple' => TRUE,
  29 + 'expanded' => TRUE,
  30 + ))
  31 + /*->add('plainPassword', RepeatedType::class, array(
24 32 'type' => PasswordType::class,
25 33 'first_options' => array('label' => 'Password'),
26 34 'second_options' => array('label' => 'Repeat Password'),
27   - ))
  35 + ))*/
28 36 ;
29 37 }
30 38  
... ...