web-dev-qa-db-fra.com

Obtenir le niveau d'accès pour une URL

Comment puis-je obtenir le niveau d'accès pour une URL donnée?
J'ai besoin de savoir si une URL est accessible aux utilisateurs enregistrés ou uniquement aux invités.

2
mortalis

Je ne pense pas qu'il y ait des informations sur l'accès au niveau de l'URL, pas plus qu'il n'y a de "chose globale" qui contrôle l'accès à n'importe quelle URL/page, vous pouvez donc récupérer ces informations dans une liste.

Quelques informations générales sur ACL

Niveaux d'accès se produit beaucoup plus bas dans le système - Cela fonctionne sur chaque composant et ses éléments de contenu.

Avec ACL vous ne définissez pas l'accès aux URL, vous le faites plutôt pour les éléments de contenu individuellement.

Généralement, les composants ont des options pour spécifier les niveaux d'accès pour leurs éléments de conten, qui sont stockés dans le tableau des éléments associatifs = dans la base de données.

Après avoir demandé une page via une URL, Joomla renverra le contenu de cette page en fonction de la requête url, qui spécifie généralement un composant, une vue et un élément de contenu.
Habituellement, le code du composant chargé d’afficher le contenu ci-dessus vérifie le niveau d’accès de l’objet de contenu stocké dans la base de données et le compare au niveau d’accès à la vue de l’utilisateur actuel, afin de décider s’il affichera ou pas le contenu à cet utilisateur.

Donc, ceci conclut en ce qui concerne la liste de contrôle d'accès, que ce que vous devez vérifier concerne les niveaux d'accès aux éléments de contenu spécifiques.


Niveau d'accès de l'élément de menu actuel

Ce que je peux penser est proche de ce que vous voudrez peut-être, c’est de vérifier le niveau d’accès à l’élément de men, puisque Éléments de men joue un grand rôle dans affichage du conten = et construction des URL. Mais gardez à l'esprit qu'il peut y avoir tellement de situations, où un élément de menu peut avoir un niveau d'accès public, alors que le contenu inclus est à un niveau restreint.

Dans tous les cas, si vous devez vérifier le niveau d'accès pour un élément de menu, vous pouvez procéder comme suit:

$app = JFactory::getApplication();
$menu = $app->getMenu();
$menuActive = $menu->getActive();
$menuActive->access;


Obtenir le niveau d'accès à l'article par ID

Pour un article, vous pouvez aller comme ceci:

jimport('joomla.application.component.model');
JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_content/models');
$articleModel = JModelLegacy::getInstance( 'Article', 'ContentModel' );
$article = $articleModel->getItem($articleID);
$article->access;

* Il serait utile d’obtenir une meilleure réponse si vous précisiez l’endroit où vous voulez obtenir ces informations et décrivez ce que vous essayez d’atteindre.

6
FFrewin

De Joomla 3.8 et supérieur vous pouvez utiliser Namespacing

use Joomla\CMS\MVC\Model\BaseDatabaseModel;

BaseDatabaseModel::addIncludePath(JPATH_SITE . '/components/com_content/models');
$articleModel = BaseDatabaseModel::getInstance('Article', 'ContentModel');
$article = $articleModel->getItem($articleId);
$access = $article->access;
0
pe7er