From: Raphaƫl Gertz Date: Mon, 11 Dec 2023 01:39:30 +0000 (+0100) Subject: Add checker, limit, page and security members X-Git-Tag: 0.3.1~16 X-Git-Url: https://git.rapsys.eu/userbundle/commitdiff_plain/43469deb349e799bbf590f5e3570d1ffd69ecb2c Add checker, limit, page and security members Fix canonical key --- diff --git a/Controller/AbstractController.php b/Controller/AbstractController.php index 19e4782..d6f34a2 100644 --- a/Controller/AbstractController.php +++ b/Controller/AbstractController.php @@ -16,13 +16,17 @@ use Doctrine\Persistence\ManagerRegistry; use Psr\Log\LoggerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as BaseAbstractController; use Symfony\Bundle\FrameworkBundle\Controller\ControllerTrait; +use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Routing\RouterInterface; +use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; +use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Contracts\Service\ServiceSubscriberInterface; use Symfony\Contracts\Translation\TranslatorInterface; use Twig\Environment; @@ -37,45 +41,95 @@ use Rapsys\UserBundle\RapsysUserBundle; * {@inheritdoc} */ abstract class AbstractController extends BaseAbstractController implements ServiceSubscriberInterface { - ///Config array + /** + * Config array + */ protected array $config; - ///Context array + /** + * Context array + */ protected array $context; - ///ManagerRegistry + /** + * Limit integer + */ + protected int $limit; + + /** + * Locale string + */ + protected string $locale; + + /** + * Page integer + */ + protected int $page; + + /** + * AuthorizationCheckerInterface instance + */ + protected AuthorizationCheckerInterface $checker; + + /** + * ManagerRegistry instance + */ protected ManagerRegistry $doctrine; - ///UserPasswordHasherInterface + /** + * UserPasswordHasherInterface instance + */ protected UserPasswordHasherInterface $hasher; - ///LoggerInterface + /** + * LoggerInterface instance + */ protected LoggerInterface $logger; - ///MailerInterface + /** + * MailerInterface instance + */ protected MailerInterface $mailer; - ///EntityManagerInterface + /** + * EntityManagerInterface instance + */ protected EntityManagerInterface $manager; - ///Router instance + /** + * Request instance + */ + protected Request $request; + + /** + * Router instance + */ protected RouterInterface $router; - ///Slugger util + /** + * Security instance + */ + protected Security $security; + + /** + * Slugger util instance + */ protected SluggerUtil $slugger; - ///Translator instance + /** + * Translator instance + */ protected TranslatorInterface $translator; - ///Twig\Environment instance + /** + * Twig\Environment instance + */ protected Environment $twig; - ///Locale - protected string $locale; - /** * Abstract constructor * + * @param AuthorizationCheckerInterface $checker The checker instance * @param ContainerInterface $container The container instance * @param ManagerRegistry $doctrine The doctrine instance * @param UserPasswordHasherInterface $hasher The password hasher instance @@ -83,15 +137,20 @@ abstract class AbstractController extends BaseAbstractController implements Serv * @param MailerInterface $mailer The mailer instance * @param EntityManagerInterface $manager The manager instance * @param RouterInterface $router The router instance + * @param Security $security The security instance * @param SluggerUtil $slugger The slugger instance * @param RequestStack $stack The stack instance * @param TranslatorInterface $translator The translator instance * @param Environment $twig The twig environment instance + * @param integer $limit The page limit */ - public function __construct(ContainerInterface $container, ManagerRegistry $doctrine, UserPasswordHasherInterface $hasher, LoggerInterface $logger, MailerInterface $mailer, EntityManagerInterface $manager, RouterInterface $router, SluggerUtil $slugger, RequestStack $stack, TranslatorInterface $translator, Environment $twig) { + public function __construct(AuthorizationCheckerInterface $checker, ContainerInterface $container, ManagerRegistry $doctrine, UserPasswordHasherInterface $hasher, LoggerInterface $logger, MailerInterface $mailer, EntityManagerInterface $manager, RouterInterface $router, Security $security, SluggerUtil $slugger, RequestStack $stack, TranslatorInterface $translator, Environment $twig, int $limit = 5) { //Retrieve config $this->config = $container->getParameter(RapsysUserBundle::getAlias()); + //Set checker + $this->checker = $checker; + //Set container $this->container = $container; @@ -104,6 +163,9 @@ abstract class AbstractController extends BaseAbstractController implements Serv //Set logger $this->logger = $logger; + //Set limit + $this->limit = $limit; + //Set mailer $this->mailer = $mailer; @@ -113,6 +175,9 @@ abstract class AbstractController extends BaseAbstractController implements Serv //Set router $this->router = $router; + //Set security + $this->security = $security; + //Set slugger $this->slugger = $slugger; @@ -123,10 +188,18 @@ abstract class AbstractController extends BaseAbstractController implements Serv $this->twig = $twig; //Get current request - $request = $stack->getCurrentRequest(); + $this->request = $stack->getCurrentRequest(); + + //Get current page + $this->page = (int) $this->request->query->get('page'); + + //With negative page + if ($this->page < 0) { + $this->page = 0; + } //Get current locale - $this->locale = $request->getLocale(); + $this->locale = $this->request->getLocale(); //Set translate array $translates = []; @@ -257,7 +330,7 @@ abstract class AbstractController extends BaseAbstractController implements Serv //With current locale if ($locale == $this->locale) { //Set locale locales context - $this->config[$tag][$view]['context']['canonical'] = $this->router->generate($name, ['_locale' => $locale]+$route, UrlGeneratorInterface::ABSOLUTE_URL); + $this->config[$tag][$view]['context']['head']['canonical'] = $this->router->generate($name, ['_locale' => $locale]+$route, UrlGeneratorInterface::ABSOLUTE_URL); } else { //Set locale locales context $this->config[$tag][$view]['context']['head']['alternates'][$locale] = [ @@ -339,7 +412,6 @@ abstract class AbstractController extends BaseAbstractController implements Serv public static function getSubscribedServices(): array { //Return subscribed services return [ - 'service_container' => ContainerInterface::class, 'doctrine' => ManagerRegistry::class, 'doctrine.orm.default_entity_manager' => EntityManagerInterface::class, 'logger' => LoggerInterface::class, @@ -347,7 +419,10 @@ abstract class AbstractController extends BaseAbstractController implements Serv 'rapsys_pack.slugger_util' => SluggerUtil::class, 'request_stack' => RequestStack::class, 'router' => RouterInterface::class, + 'security.authorization_checker' => AuthorizationCheckerInterface::class, + 'security' => Security::class, 'security.user_password_hasher' => UserPasswordHasherInterface::class, + 'service_container' => ContainerInterface::class, 'translator' => TranslatorInterface::class ]; }