UserAdmin.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. /*
  3. * This file is part of the Sonata package.
  4. *
  5. * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Sonata\UserBundle\Admin\Model;
  11. use Sonata\AdminBundle\Admin\Admin;
  12. use Sonata\AdminBundle\Form\FormMapper;
  13. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  14. use Sonata\AdminBundle\Datagrid\ListMapper;
  15. use Sonata\AdminBundle\Show\ShowMapper;
  16. use FOS\UserBundle\Model\UserManagerInterface;
  17. class UserAdmin extends Admin
  18. {
  19. protected $formOptions = array(
  20. 'validation_groups' => 'Profile'
  21. );
  22. /**
  23. * {@inheritdoc}
  24. */
  25. protected function configureListFields(ListMapper $listMapper)
  26. {
  27. $listMapper
  28. ->addIdentifier('username')
  29. ->add('email')
  30. ->add('groups')
  31. ->add('enabled')
  32. ->add('locked')
  33. ->add('createdAt')
  34. ;
  35. if ($this->isGranted('ROLE_ALLOWED_TO_SWITCH')) {
  36. $listMapper
  37. ->add('impersonating', 'string', array('template' => 'SonataUserBundle:Admin:Field/impersonating.html.twig'))
  38. ;
  39. }
  40. }
  41. /**
  42. * {@inheritdoc}
  43. */
  44. protected function configureDatagridFilters(DatagridMapper $filterMapper)
  45. {
  46. $filterMapper
  47. ->add('id')
  48. ->add('username')
  49. ->add('locked')
  50. ->add('email')
  51. ->add('groups')
  52. ;
  53. }
  54. /**
  55. * {@inheritdoc}
  56. */
  57. protected function configureShowFields(ShowMapper $showMapper)
  58. {
  59. $showMapper
  60. ->with('General')
  61. ->add('username')
  62. ->add('email')
  63. ->end()
  64. ->with('Groups')
  65. ->add('groups')
  66. ->end()
  67. ->with('Profile')
  68. ->add('dateOfBirth', 'date')
  69. ->add('firstname')
  70. ->add('lastname')
  71. ->add('website')
  72. ->add('biography')
  73. ->add('gender')
  74. ->add('locale')
  75. ->add('timezone')
  76. ->add('phone')
  77. ->end()
  78. ->with('Social')
  79. ->add('facebookUid')
  80. ->add('facebookName')
  81. ->add('twitterUid')
  82. ->add('twitterName')
  83. ->add('gplusUid')
  84. ->add('gplusName')
  85. ->end()
  86. ->with('Security')
  87. ->add('token')
  88. ->add('twoStepVerificationCode')
  89. ->end();
  90. ;
  91. }
  92. /**
  93. * {@inheritdoc}
  94. */
  95. protected function configureFormFields(FormMapper $formMapper)
  96. {
  97. $formMapper
  98. ->with('General')
  99. ->add('username')
  100. ->add('email')
  101. ->add('plainPassword', 'text', array('required' => false))
  102. ->end()
  103. ->with('Groups')
  104. ->add('groups', 'sonata_type_model', array('required' => false))
  105. ->end()
  106. ->with('Profile')
  107. ->add('dateOfBirth', 'date', array('required' => false))
  108. ->add('firstname', null, array('required' => false))
  109. ->add('lastname', null, array('required' => false))
  110. ->add('website', 'url', array('required' => false))
  111. ->add('biography', 'text', array('required' => false))
  112. ->add('gender', null, array('required' => false))
  113. ->add('locale', null, array('required' => false))
  114. ->add('timezone', null, array('required' => false))
  115. ->add('phone', null, array('required' => false))
  116. ->end()
  117. ->with('Social')
  118. ->add('facebookUid', null, array('required' => false))
  119. ->add('facebookName', null, array('required' => false))
  120. ->add('twitterUid', null, array('required' => false))
  121. ->add('twitterName', null, array('required' => false))
  122. ->add('gplusUid', null, array('required' => false))
  123. ->add('gplusName', null, array('required' => false))
  124. ->end()
  125. ;
  126. if (!$this->getSubject()->hasRole('ROLE_SUPER_ADMIN')) {
  127. $formMapper->with('Management')
  128. ->add('roles_user', 'sonata_security_roles', array(
  129. 'expanded' => true,
  130. 'multiple' => true,
  131. 'required' => false
  132. ))
  133. ->add('locked', null, array('required' => false))
  134. ->add('expired', null, array('required' => false))
  135. ->add('enabled', null, array('required' => false))
  136. ->add('credentialsExpired', null, array('required' => false))
  137. ->end();
  138. }
  139. $formMapper
  140. ->with('Security')
  141. ->add('token', null, array('required' => false))
  142. ->add('twoStepVerificationCode', null, array('required' => false))
  143. ->end();
  144. }
  145. /**
  146. * {@inheritdoc}
  147. */
  148. public function preUpdate($user)
  149. {
  150. $this->getUserManager()->updateCanonicalFields($user);
  151. $this->getUserManager()->updatePassword($user);
  152. }
  153. /**
  154. * @param UserManagerInterface $userManager
  155. */
  156. public function setUserManager(UserManagerInterface $userManager)
  157. {
  158. $this->userManager = $userManager;
  159. }
  160. /**
  161. * @return UserManagerInterface
  162. */
  163. public function getUserManager()
  164. {
  165. return $this->userManager;
  166. }
  167. }