web-dev-qa-db-fra.com

La liste d'accès d'un élément de menu Front-End peut-elle être limitée à certains groupes d'utilisateurs?

Une vue de composant peut-elle être configurée pour afficher uniquement un sous-ensemble de groupes d'utilisateurs disponibles lors de l'ajout à un menu?

Mon composant a une vue frontale qui doit jamais être autorisée à être visualisée par quiconque, à l'exception des utilisateurs appartenant à un groupe d'utilisateurs frontal personnalisé. Je comprends que la personne qui ajoute l’élément de menu doit "savoir" ce qu’elle fait, mais je voudrais savoir si cela peut également être fait.

3
GDP

Pas dans un sens standard, c’est-à-dire l’interface utilisateur normale fournie par Joomla. (En supposant que vous parlez du moment où un élément de menu est créé ici?) Les extensions n'ont pas la possibilité d'exécuter du code lorsqu'un élément de menu est créé, donc, réponse courte: non.

Je suggérerais normalement un plug-in mais en regardant com_menu, Je ne peux voir que deux appels JEventDispatcher et ils ne sont pas très utiles.

Dans /administrator/components/com_menus/models/menutypes.php Vous avez:

// Allow a system plugin to insert dynamic menu types to the list shown in menus:
JEventDispatcher::getInstance()->trigger('onAfterGetMenuTypeOptions', array(&$list, $this));

Et dans /administrator/components/com_menus/views/items/view.html.php Vous avez:

// Allow a system plugin to insert dynamic menu types to the list shown in menus:
JEventDispatcher::getInstance()->trigger('onBeforeRenderMenuItems', array($this));

Si vous cherchez une couche plus profonde, la classe d’élément de menu MenusModelItem extends JModelAdmin, La bonne chose ici est que JModelAdmin déclenche un événement onContentChangeState() que vous pourriez intercepter et interdire à quiconque essayer de le définir. votre vue à publié si le groupe d'utilisateurs est erroné.

Cela dit, je ne le ferais pas. Les menus ne sont que des chemins faciles à deviner dans notre monde SEO/SEF. Le bon endroit pour le faire est dans le composant/la vue elle-même, rejetant toute personne qui ne fait pas partie du bon groupe. Vous pouvez le faire en renvoyant silencieusement les utilisateurs à la page d'accueil ou en envoyant un 404.

3
Craig