Permission Management

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    So, ich muss nochmal diesen älteren Thread hochholen, da ich eigentlich genau so eine Tabellenstruktur mir erdacht habe, wie POD. Meine Frage ist jetzt, wie ich das ganze in PHP auswerte, ich habe es mir so gedacht:

    1. Ein User loggt sich ein
    2. Die Rechte der Gruppe(n) des Users werden ausgelesen und in einer Session gespeichert (sagen wir: $_SESSION['RIGHTS'])
    3. Die Rechte des einzelnen Users werden asugelesen und in der selben Session gespeichert, doppelte Einträge überschrieben
    4. Bei jedem Modul o.ä. wird erst etwas in der Art abgefragt:
    if($_SESSION['RIGHTS']['news_write'])..., d.h. $_SESSION ['RIGHTS'] müsste so in etwa aussehen:
    PHP-Code:
    Array(
    'news_write' => true,
    'news_edit' => true,
    ...

    Das ist bisher nicht sonderlich das Problem, ich habe aber zwei einzelne SQL Queries, einmal für die Gruppen Rights und einmal für die User Rights:
    PHP-Code:
    ### Rechte des Users mit der ID 1 ###
    SELECT t.`ID` as `User_ID`, r.`right`
    FROM `teamt
    LEFT JOIN 
    `user_rightsur
      ON ur
    .`user_id` = t.`ID`
    LEFT JOIN `rightsr
      ON r
    .`right_id` = ur.`right_id`
    WHERE `User_ID` = 1
    GROUP BY 
    `right`
    ### Rechte der Gruppe(n) des Users mit der ID 1 ###
    SELECT t.`ID` AS `User_ID` , r.`right`
    FROM `teamt
    LEFT JOIN 
    `group_usergu
      ON gu
    .`user_id` = t.`ID`
    LEFT JOIN `groupsg ON
      g
    .`group_id` = gu.`group_id`
    LEFT JOIN `group_rightsgr
      ON gr
    .`group_id` = gu.`group_id`
    LEFT JOIN `rightsr
      ON r
    .`right_id` = gr.`right_id`
    WHERE `User_ID` =1
    GROUP BY 
    `right

    Und so werden mir ja (leider) nur die Rechte aufgelistet, die ein User auch hat, aber ich möchte z.B. im Bereich, wo ich Usern Rechte zuordnen kann, erst alle Vorhandenen Rechte auflisten und dann die des Users markieren. Das würde heißen, ich müsste eine weitere Query machen.

    Könnte man nicht gleich in einer Query folgendes abfragen:
    a) alle Rechte der Gruppe(n) des Users
    b) alle Rechte des Users
    c) alle Rechte, die er nicht hat
    d) Format sollte dann sein:
    Recht | allowed
    string | bool
    d.h. ich könnte mit eine IF abfrage in der Query ein allowed hinzufügen, dass dann auf true oder false setzt.
    Ich hatte das ganze schonmal recht weit, aber sobald man eine WHERE abfrage eingesetzt hat, wurden nur noch die Rechte angezeigt, die ein User auch wirklich hat.

    Danke für jede Hilfe.

    Kommentar


    • #17
      Original geschrieben von Payne_of_Death
      Da passiert nichts jedes Script sehe ich als eine Gruppe an mit Einzelberechtigungen. Darunter gibt es ein Recht news_mod z.B. was es erlaubt auf einmal alle Einzelrechte wirken zu lassen.....

      So ist es in meinem alten Usermanagment.....

      Geplant ist das ganze via eines Nested Sets umzusetzen um eben höhere Rechte und niedrigere Rechte zu gewichten.......Via Forumsuche gibt es auch noch einen Thread der sich damit befasst speziell auf Berechtigungen mit Nested Sets.....
      Hallo!
      Via Forumsuche habe ich leider den Thread nicht finden können, der die Berechtigung mit Nested Sets behandelt. Ich suche also nach einer Möglichkeit, Rechte zu vererben. Mein erster Gedanke ist, den PHP-Code dynamisch zu generieren.
      Beispiel:

      Benutzer Rechte: (Rechte-Hierarchie von oben nach unten)
      * User lft 1 rgt 8
      * Editor lft 2 rgt 7
      * Admin lft 3 rgt 6
      * SuperAdmin lft 4 rgt 5

      Meldet sich nun ein Admin an, wird foldende Klassenhierarchie dynamisch generiert und die erforderlichen Module dynamisch hinzugeladen.

      class User {
      // Permissions User
      include Module für User
      }

      class Editor extends User {
      // Permissions Editor
      include Module für Editor
      }

      class Admin extends Editor{
      // Permissions Admin
      include Module für Admin
      }

      Die Module werden dann im Backend den einzelnen Benutzern zugeordnet.
      Dies ist vielleicht ein Ansatz, um Rechte und Code dynamisch zu halten. Was meint ihr dazu?

      Suche übrigens immer noch "Helfer", um ein Tutorial für die Autorisierung mit PHP und MySQL zu schreiben. Meine E-Mail: php_jan@freenet.de
      Zuletzt geändert von php_jan; 21.11.2005, 12:05.
      Ich möchte ein Tutorial über ein dynamisches Rechtemanagement-System schreiben (mit Rechtevererbung). Suche nach Freiwilligen! -> php_jan@freenet.de

      Kommentar

      Lädt...
      X