選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

49 行
1.3KB

  1. <?php
  2. /**
  3. * @author La clic ! <contact@laclic.fr>
  4. */
  5. namespace Lc\SovBundle\Resolver;
  6. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. class UrlResolver
  9. {
  10. protected ParameterBagInterface $parameterBag;
  11. protected RequestStack $requestStack;
  12. public function __construct(ParameterBagInterface $parameterBag, RequestStack $requestStack)
  13. {
  14. $this->parameterBag = $parameterBag;
  15. $this->requestStack = $requestStack;
  16. }
  17. public function isServerLocalhost(): bool
  18. {
  19. return in_array($_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1']);
  20. }
  21. public function isBot(): bool
  22. {
  23. if (isset($_SERVER['HTTP_USER_AGENT']) && preg_match(
  24. '/bot|crawl|slurp|spider/i',
  25. $_SERVER['HTTP_USER_AGENT']
  26. )) {
  27. return true;
  28. } else {
  29. return false;
  30. }
  31. }
  32. public function isInAdminArea(): bool
  33. {
  34. $requestAttributes = $this->requestStack->getCurrentRequest()->attributes->all();
  35. $route = isset($requestAttributes['_route']) ? $requestAttributes['_route'] : false;
  36. return $route && (in_array($route, ['sov_login', 'sov_logout']) || strpos($route, 'admin_') !== false) ;
  37. }
  38. }