2017-12-06 5 views

Antwort

0

ja natürlich können Sie es tun, aber wir müssen hier einen Code schreiben.

können wir cms.object.listInTheme Ereignis

In Ihrem Plugin innerhalb Bootmethode verwenden Sie das Ereignis-Listener hinzufügen und statische Seiten filtern.

\Event::listen('cms.object.listInTheme', function ($cmsObject, $objectList) { 

    // lets check if we are really running in static pages 
    // you can also add more checks here based on controllers etc .. 
    if ($cmsObject instanceof \RainLab\Pages\Classes\Page) { 

     $user = \BackendAuth::getUser(); 
     // role code and role name are different things 
     // we should use role code as it act as constant 
     $hasRoleFromWhichIneedTohidePages = $user->role->code === 'blabla' ? true : false; 

     // if user has that role then we start filtering 
     if($hasRoleFromWhichIneedTohidePages) { 
      foreach ($objectList as $index => $page) { 

       // we can use different matching you can use one of them 
       // to identify your page which you want to hide. 
       // forgot method will hide that page 

       // match against filename 
       if ($page->fileName == 'hidethispage.htm') { 
        $objectList->forget($index); 
       } 

       // OR match against title 
       if ($page->title == 'hidethispage') { 
        $objectList->forget($index); 
       } 

       // OR match against url 
       if ($page->url == '/hidethispage') { 
        $objectList->forget($index); 
       } 
      } 
     } 
    } 
}); 

derzeit wird dieser Code Seite-URL/Titel/Datei-Namen Benutzer und beschränken prüfen statisch Seite in der Liste aus zeigt aber Sie können hier Ihre eigene Logik setzen und Dinge dynamisch machen.

wenn Sie es nicht bekommen oder dynamische Lösung dann bitte kommentieren, werde ich ausführlicher erklären.

+0

Danke. Wie kann ich den Code der aktuellen Benutzerrolle finden und die Berechtigungen prüfen? Wenn die Berechtigung mit dem Namen "Manager" aktiviert ist, dann fange an zu filtern ... Mache Dinge dynamisch. Dies sollte für alle Rollen funktionieren, bei denen das Kontrollkästchen "Manager" aktiviert ist. Ich werde sehr dankbar sein für die detaillierte Antwort :) – Elisseii

+0

Und kleines Problem: Unterseiten wird nicht angezeigt ... – Elisseii

+0

Ich kann kleine Plugin für das als seine schlechte Idee, einige Seiten zu zeigen, basierend auf Erlaubnis zu entwickeln. stattdessen denke ich Plugin zu machen, das Benutzergruppen annehmen und Seiten dazu zuweisen kann, dann können wir diese Benutzergruppe Benutzern zuweisen dann werden nur zugewiesene Seiten zugänglich sein. –

Verwandte Themen