Benutzergruppen

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

  • Benutzergruppen

    Hallo alle zusammen,
    ich beschäftige mich noch nicht all zu lange mit php und mySQL und habe daher folgende Frage zur Realisierung von Benutzergruppen:

    Die Idee dahinter ist ja, dass verschiedene Benutzer verschiedene Rechte haben (abhängig von ihrer zugewiesenen Gruppen) und auch unterschiedliche Darstellungen der Seite zu sehen bekommen.

    Wie realisiere ich dies?
    2 Ansätze sind mir auf anhieb eingefallen, doch gibt es bestimmt ein allgemeines Prinzip dafür.

    1) In der Usertabelle (Datenbank) ist die Benutzergruppen hinterlegt. Beim einloggen wird diese Info ausgelesen und je nachdem eine andere include datei eingebunden.

    2) Für jede Benutzergruppen existiert eine eigenen Tabelle in der Datenbank und hier sind die Inhalte hinterlegt (in Form von Linknamen und deren URL). Der Vorteil hierbei wäre, dass die Links (also die Zugänge zu bestimmten Bereichen) im Admin-Bereich geändert bzw. hinzugefügt werden könnten.


    Wie würdet ihr ein System, dass auf Benutzergruppen basiert realisieren.
    Ich bin für jeden Tipp dankbar.

    Gruß Marcel

  • #2
    Du legst in der Datenbank nicht ab, welche Seiten oder Links der Benutzer sehen darf, sondern welche Rechte der Benutzer hat, zum Beispiel "darf News lesen", "darf Inhalte erstellen" oder "darf Benutzerrechte ändern". Diese Rechte kannst du entweder einzeln in die Datenbank legen und den Benutzern/Gruppen zuordnen, oder du packst ein Integer-Bitflag an die Gruppe dran, welches die Rechte repräsentiert.
    Ersteres ist von der Datenbankrelation etwas sauberer und leichter erweiterbar, während ersteres meist ausreicht und weniger Speicher und keine zusätzliche Tabelle beansprucht!

    Kommentar


    • #3
      Erst einmal, danke für die schnelle Antwort.

      Habe ich es richtig verstanden es foglgendermaßen zu machen:

      - Ich lege eine Tabelle mit den Benutzergruppen an:

      Name Recht1 Recht 2 Recht3
      Amin: ja ja ja
      Gr. 2: ja nein nein
      usw.

      In der Userlist ist die Gruppe hinterlegt. Diese lese ich beim login aus, lasse mir die Rechte der entsprechenden Gruppen ausgeben und erstelle dementsprechend die Seite.


      Wenn ich es so realisiere, wie kann ich (vorausgesetzt das auf der linken seite sind alle links untereinander aufgeführt), Links hinzufüegen aus dem Admin bereich heraus?
      Zuletzt geändert von vbinfo; 12.12.2007, 11:07.

      Kommentar


      • #4
        Das mit den Tabellen meinte ich so:
        Code:
        tabelle user:
        user_id, group_id, ...
        1, 1, ...
        2, 1, ...
        3, 2, ...
        
        tabelle groups:
        group_id, name, ...
        1, Anwender, ...
        2, Admins, ...
        
        tabelle grouprights:
        group_id, right_id
        1, 1
        2, 1
        2, 2
        2, 3
        
        tabelle rights:
        right_id, right_name
        1, "Inhalte sehen"
        2, "Inhalte erstellen"
        3, "Inhalte löschen"
        Zur Anzeige des Menüs gehst du dann folgendermaßen vor (Pseudocode):
        PHP-Code:
        $menuEntries getAllEntries();
        foreach( 
        $menuEntries as $menuEntry ) {
            if( 
        $currentUser->hasRight$menuEntry->getNeededRights() ) ) {
                
        $menuEntry->show();
            }

        Diese Rechte kannst du im Adminbereich dann schön anzeigen lassen und modifizieren.
        Das sieht jetzt vielleicht etwas kompliziert aus, ist aber sehr flexibel und das gängiste Modell. Das wirst du auch nicht komplett neu schreiben müssen, gibt einen Haufen fertiger Klassen dafür!

        Kommentar

        Lädt...
        X