it-swarm.com.de

Rufen Sie die Zugriffsebene für eine URL ab

Wie kann ich die Zugriffsebene für eine bestimmte URL erhalten?
Ich muss wissen, ob eine URL für registrierte oder nur für Gastbenutzer zugänglich ist.

2
mortalis

Ich glaube nicht, dass es Informationen über den Zugriff auf URL-Ebene gibt, noch gibt es eine "globale Sache", die den Zugriff auf eine URL/Seite steuert, so dass Sie diese Informationen in einer Liste abrufen können.

Einige kurze Hintergrundinformationen zu ACL

Zugriffsebenen tritt im System viel niedriger auf - Es funktioniert auf jeder Komponente und ihren Inhaltselementen.

Mit ACL legen Sie keinen Zugriff auf URLs fest, sondern Sie tun dies für einzelne Inhaltselemente.

Normalerweise haben die Komponenten Optionen, um die Zugriffsebenen für ihre Inhaltselemente anzugeben, die in der assoziativen Elementtabelle gespeichert sind = in der Datenbank.

Nachdem Sie eine Seite über eine URL angefordert haben, gibt Joomla den Inhalt dieser Seite basierend auf der URL-Abfrage zurück, die normalerweise eine Komponente, eine Ansicht und ein Inhaltselement angibt.
Normalerweise überprüft der Code der Komponente, die für die Anzeige des oben genannten Inhalts verantwortlich ist, die Zugriffsebene des in der Datenbank gespeicherten Inhaltselements und vergleicht sie mit der Zugriffsebene für die Ansicht des aktuellen Benutzers, um zu entscheiden, ob sie angezeigt wird oder nicht der Inhalt für diesen Benutzer.

In Bezug auf die Zugriffssteuerungsliste muss also geprüft werden, ob bestimmte Zugriffsstufen für Inhaltselemente vorhanden sind.


Zugriffsebene des aktuellen Menüelements

Ich kann mir vorstellen, dass Sie in der Nähe der gewünschten Informationen die Zugriffsebene Menüelement überprüfen müssen, da Menüelemente eine wichtige Rolle bei Anzeigen von Inhalten spielt = und Erstellen von URLs. Beachten Sie jedoch, dass es so viele Situationen geben kann, in denen ein Menüelement eine öffentliche Zugriffsebene haben kann, während sich der enthaltene Inhalt auf einer eingeschränkten Ebene befindet.

In jedem Fall können Sie folgendermaßen vorgehen, wenn Sie die Zugriffsebene für einen Menüeintrag überprüfen müssen:

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


Artikelzugriffsebene nach ID abrufen

Für einen Artikel können Sie folgendermaßen vorgehen:

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

* Es wäre hilfreich, eine noch bessere Antwort zu erhalten, wenn Sie angeben würden, von wo aus Sie diese Informationen erhalten möchten, und beschreiben würden, was Sie erreichen möchten.

6
FFrewin

Ab Joomla 3.8 und höher können Sie Namespacing verwenden

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