5

Ich bin neu in Symfony2, und für die Bedürfnisse meiner Firma verwende ich Sonata Admin und User Bundles.Elemente im Dashboard entsprechend der Benutzerrolle anzeigen

Ich würde gerne wissen, ob es möglich ist, Elemente im Dashboard entsprechend der Rolle eines angemeldeten Benutzers auszublenden oder anzuzeigen.

Zum Beispiel habe ich mehrere Entitäten, die von Sonata AdminBundle verwaltet werden (Benutzer, Firma, Mission, Site, etc ... Management) und ich möchte die Benutzerverwaltung nur für die Super Admin, Unternehmen und Website-Management anzeigen zu einer anderen Rolle (zum Beispiel SITE_ADMIN) und Missionen zu einer dritten Rolle.

Haben Sie jemals diese Situation erlebt? Können Sie mir die Lösung oder Hinweise geben, um direkt zur Lösung zu kommen?

Vielen Dank,

Enes

Antwort

5

Verwenden Role handler und Benutzer verwandten Schutzrechte ermöglichen nur zum Beispiel Admins-Gruppe (erstellen Sie es). Weisen Sie dann Admin-Benutzer der Admins-Gruppe zu. Der Sonata-Administrator nimmt Einschränkungen entgegen und zeigt Dashboards nur für Administratoren an.

+2

Ja, Sie müssen 'sonata_admin: security: handler: sonata.admin.security.handler.role' in Ihrer Konfiguration einstellen. Dann können Sie die erforderlichen Rollen für den Zugriff auf die verschiedenen Bereiche von admin festlegen. –

+0

Vielen Dank für Ihre Antworten, ein bisschen spät, aber alles ist in Ordnung für mich jetzt :) – Enessari

2

Zusätzlich können Sie verbergen und Anzeigeblöcke im userboard auf diese Weise:

# app/config/config.yml 
sonata_admin: 
dashboard: 
    groups: 
     acme.admin.group.content: 
      label: acme.admin.group.content 
      label_catalogue: AcmeDemoBundle 
      items: 
       - sonata.admin.post 
     acme.admin.group.blog: 
      items: ~ 
      item_adds: 
       - sonata.admin.page 
      roles: [ ROLE_ONE, ROLE_TWO ] 
     acme.admin.group.misc: ~ 

Wie erwähnt in the docs.

Bitte beachten Sie, dass dies nur die Sichtbarkeit eines Blocks ändert, nicht die Zugänglichkeit. Wenn es keine Beschränkungen gibt, können Leute den Link im Browser noch öffnen, wenn sie es wissen.

Wenn Sie die vorherige Antwort verwenden, die sonata.admin.security.handler.role implementiert, sollte der Block automatisch ausgeblendet werden, wenn der Benutzer nicht die richtige Rolle hat.

Verwandte Themen