Guest User

Admin UserController

a guest
Nov 9th, 2016
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.42 KB | None | 0 0
  1. <?php
  2.  
  3. namespace SoftUniBlogBundle\Controller\Admin;
  4.  
  5. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  6. use SoftUniBlogBundle\Entity\User;
  7. use SoftUniBlogBundle\Form\UserEditType;
  8. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use SoftUniBlogBundle\Entity\Role;
  11.  
  12. /**
  13. * @Route("/admin/users")
  14. *
  15. * Class UserController
  16. * @package SoftUniBlogBundle\Controller\Admin
  17. */
  18. class UserController extends Controller
  19. {
  20. /**
  21. * @Route("/", name="admin_users")
  22. * @return \Symfony\Component\HttpFoundation\Response
  23. */
  24. public function listUsers()
  25. {
  26. $users = $this->getDoctrine()->getRepository(User::class)->findAll();
  27.  
  28. return $this->render('admin/user/list.html.twig', ['users' => $users]);
  29. }
  30.  
  31. /**
  32. * @Route("/edit/{id}", name="admin_user_edit")
  33. *
  34. * @param $id
  35. * @param Request $request
  36. *
  37. * @return \Symfony\Component\HttpFoundation\Response
  38. */
  39. public function editUser($id, Request $request)
  40. {
  41. $user = $this->getDoctrine()->getRepository(User::class)->find($id);
  42.  
  43. if ($user === null) {
  44. return $this->redirectToRoute('admin_users');
  45. }
  46.  
  47. $originalPassword = $user->getPassword();
  48.  
  49. $form = $this->createForm(UserEditType::class, $user);
  50. $form->handleRequest($request);
  51.  
  52. if ($form->isSubmitted() && $form->isValid()) {
  53.  
  54. $rolesRequest = $user->getRoles();
  55. $roleRepository = $this->getDoctrine()->getRepository(Role::class);
  56. $roles = [];
  57.  
  58. foreach ($rolesRequest as $roleName) {
  59. $roles[] = $roleRepository->findOneBy(['name' => $roleName]);
  60. }
  61.  
  62. $user->setRoles($roles);
  63.  
  64. if ($user->getPassword()) {
  65. $password = $this->get('security.password_encoder')->encodePassword($user, $user->getPassword());
  66. $user->setPassword($password);
  67. }
  68. else {
  69. $user->setPassword($originalPassword);
  70. }
  71.  
  72. $em = $this->getDoctrine()->getManager();
  73. $em->persist($user);
  74. $em->flush();
  75.  
  76. return $this->redirectToRoute('admin_users');
  77. }
  78.  
  79. return $this->render('admin/user/edit.html.twig', ['user' => $user, 'form' => $form->createView()]);
  80. }
  81.  
  82. /**
  83. * @Route("/delete/{id}", name="admin_user_delete")
  84. *
  85. * @param $id
  86. * @param Request $request
  87. *
  88. * @return \Symfony\Component\HttpFoundation\Response
  89. */
  90. public function deleteUser($id, Request $request)
  91. {
  92. $user = $this->getDoctrine()->getRepository(User::class)->find($id);
  93.  
  94. if ($user === null) {
  95. return $this->redirectToRoute('admin_users');
  96. }
  97.  
  98. $form = $this->createForm(UserEditType::class, $user);
  99. $form->handleRequest($request);
  100.  
  101. if ($form->isSubmitted() && $form->isValid()) {
  102. $em = $this->getDoctrine()->getManager();
  103.  
  104. foreach ($user->getArticles() as $article) {
  105. $em->remove($article);
  106. }
  107.  
  108. $em->remove($user);
  109. $em->flush();
  110.  
  111. return $this->redirectToRoute('admin_users');
  112. }
  113.  
  114. return $this->render('admin/user/delete.html.twig', ['user' => $user, 'form' => $form->createView()]);
  115. }
  116. }
Add Comment
Please, Sign In to add comment