IsGrantedPreviousAdminExtension.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace Base\OAuthClientBundle\Twig;
  3. use Buzz\Message\RequestInterface as HttpRequestInterface;
  4. use WebserviceBundle\Services\Webservice;
  5. class IsGrantedPreviousAdminExtension extends \Twig_Extension
  6. {
  7. /**
  8. * @var Webservice
  9. */
  10. protected $webservice;
  11. /**
  12. * @var string
  13. */
  14. protected $urlBase;
  15. /**
  16. * @var RequestStack
  17. */
  18. protected $request;
  19. /**
  20. * @param Webservice $webservice
  21. * @param string $urlBase
  22. * @param RequestStack $request
  23. */
  24. public function __construct(Webservice $webservice, $urlBase, $request)
  25. {
  26. $this->webservice = $webservice;
  27. $this->urlBase = $urlBase;
  28. $this->request = $request->getCurrentRequest();
  29. }
  30. /**
  31. * @return array
  32. */
  33. public function getFunctions()
  34. {
  35. return array(
  36. new \Twig_SimpleFunction('is_granted_previous_admin', array($this, 'isGrantedPreviousAdmin')),
  37. new \Twig_SimpleFunction('switch_user_exit', array($this, 'switchUserExit')),
  38. );
  39. }
  40. /**
  41. * @return boolean
  42. */
  43. public function isGrantedPreviousAdmin()
  44. {
  45. try {
  46. $url = "https://{$this->urlBase}/admin/user/is_granted";
  47. $cookies = $this->request->cookies->all();
  48. $response = $this->webservice->makeGetRequest($url, HttpRequestInterface::METHOD_GET, [], null, $cookies);
  49. return json_decode($response);
  50. } catch (\Exception $e) {
  51. return false;
  52. }
  53. }
  54. /**
  55. * @return boolean
  56. */
  57. public function switchUserExit()
  58. {
  59. return 'https://' . $this->urlBase . '/?_switch_user=_exit';
  60. }
  61. /**
  62. * @return string
  63. */
  64. public function getName()
  65. {
  66. return 'is_granted_previous_admin_extension';
  67. }
  68. }