vendor/uvdesk/api-bundle/Controller/ApiSettings.php line 28

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\ApiBundle\Controller;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\HttpFoundation\JsonResponse;
  7. use Symfony\Component\HttpFoundation\RedirectResponse;
  8. use Webkul\UVDesk\ApiBundle\Entity\ApiAccessCredential;
  9. use Symfony\Component\Security\Core\User\UserInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Webkul\UVDesk\CoreFrameworkBundle\Utils\TokenGenerator;
  12. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  13. use Symfony\Component\DependencyInjection\ContainerInterface;
  14. class ApiSettings extends AbstractController
  15. {
  16. public function loadConfigurations(ContainerInterface $container)
  17. {
  18. if (!$container->get('user.service')->isAccessAuthorized('ROLE_ADMIN')) {
  19. throw new AccessDeniedException("Insufficient account privileges");
  20. }
  21. return $this->render('@UVDeskApi//accessCredentials.html.twig');
  22. }
  23. public function loadConfigurationsXHR(Request $request, UserInterface $user, EntityManagerInterface $entityManager)
  24. {
  25. if (!empty($user)) {
  26. $collection = array_map(function ($accessCredential) {
  27. return [
  28. 'id' => $accessCredential->getId(),
  29. 'name' => $accessCredential->getName(),
  30. 'token' => $accessCredential->getToken(),
  31. 'dateCreated' => $accessCredential->getCreatedOn()->format('(l) F d, Y \a\t H:i:s'),
  32. 'isEnabled' => $accessCredential->getIsEnabled(),
  33. ];
  34. }, $entityManager->getRepository(ApiAccessCredential::class)->findBy(['user' => $user]));
  35. }
  36. return new JsonResponse($collection ?? []);
  37. }
  38. public function createAccessCredentials(Request $request, UserInterface $user, EntityManagerInterface $entityManager)
  39. {
  40. if ($request->getMethod() == 'POST') {
  41. $params = $request->request->all();
  42. if (!empty($params['name']) && !empty($user)) {
  43. ($accessCredential = new ApiAccessCredential())
  44. ->setUser($user)
  45. ->setName($params['name'])
  46. ->setToken(strtoupper(TokenGenerator::generateToken(64)))
  47. ->setCreatedOn(new \DateTime('now'))
  48. ->setIsEnabled(true)
  49. ->setIsExpired(false);
  50. $entityManager->persist($accessCredential);
  51. $entityManager->flush();
  52. }
  53. $this->addFlash('success', 'Api access credentials created successfully.');
  54. return new RedirectResponse($this->generateUrl('uvdesk_api_load_configurations'));
  55. }
  56. return $this->render('@UVDeskApi//accessCredentialSettings.html.twig');
  57. }
  58. public function updateAccessCredentialsXHR(Request $request, UserInterface $user, EntityManagerInterface $entityManager)
  59. {
  60. $params = $request->request->all();
  61. if (empty($params)) {
  62. return new JsonResponse([], 404);
  63. } else {
  64. $accessCredential = $entityManager->getRepository(ApiAccessCredential::class)->findOneById($params['id']);
  65. if (empty($accessCredential) || $accessCredential->getUser()->getId() != $user->getId()) {
  66. return new JsonResponse([], 404);
  67. }
  68. }
  69. switch ($request->getMethod()) {
  70. case 'PATCH':
  71. $accessCredential
  72. ->setIsEnabled(("false" == $params['isEnabled']) ? false : true)
  73. ->setIsExpired(("false" == $params['isEnabled']) ? true : false);
  74. $entityManager->persist($accessCredential);
  75. $entityManager->flush();
  76. break;
  77. case 'DELETE':
  78. $entityManager->remove($accessCredential);
  79. $entityManager->flush();
  80. break;
  81. default:
  82. break;
  83. }
  84. return new JsonResponse([]);
  85. }
  86. }