Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Verständnis Frage bei einer Userverwaltung

Tach alle zusammen

Ich benötige für mein Project ne Userverwaltung. Die ich grade plane.
Das Login skript ist fertig. Ich arbeite hier mit sessions und einer Datenbank.

Die Userverwaltung sollte recht flexziebel sein.

Also in dem Projeckt gibt es mehrere Module. Mit Module meine ich z.b. Forum, Newsskript, usw

Der user sollte einer gruppe zugehören.

Mein ziel ist es bestimmen zu können welches Modul der User sehen darf und was er in den einzelnen Modulen darf, z.b. ob er schreiben darf oder editieren darf oder nur lesen kann.

Ich überlege die ganze Zeit wie ich dieses Umsätzen kann.

Für Tips die Praktisch sind wer ich sehr dankbar.

Hier gehts zum Orginal Eintrag "Verständnis Frage bei einer Userverwaltung" im Forum

Antworten

Du brauchst eine Tabelle Usergruppen mit der ID der Gruppe.
In dieser Tabelle listest die Eigenschaften
ID - Gruppenname - Gruppennummer - Gruppeneigenschaft.
(wenns mehrere eigenschaften sind dann mehrere Zeilen)

Die Usergruppenid vermerkst in der Tabelle User.
(Jeder User gehört einer Gruppe an).

Die Usereigenschaften des Users liest beim Login in die Session ein
und je nach Modul fragst diese Eigenschaft ab:

if (isset($_SESSION['Modul1_Schreiben']))


2.

Da gibt es mehrere Möglichkeiten.
Am besten du machst ein Feld in der Userdatenbank "Rechte".
Rechte kann entweder eine Zahl sein, z.B. 100010, wobei jede Stelle für ein Modul steht.
Wenn du unterscheiden willst zwischen Lesen und Bearbeiten, kannst du z.B. 1200211 nehmen, wobei eine 2 für Lesen&Bearbeiten steht und eine 1 nur für Lesen. Die 0 heißt: nicht sichtbar.
Wenn es mehrere unabhängige Attribute gibt, z.B. Bearbeiten, Lesen und Ausführen. 0 ist dann nichts, 1 ist nur ausführen, 2 ist nur Lesen, 3 (=1+2) ist Ausführen und Lesen, 4 ist nur Bearbeiten, 5 (=4+1) ist Bearbeiten + Ausführen, 6 (=4+2) ist Bearbeiten + Lesen, und 7 (=4+2+1) ist alles.
Nachteil:
Du musst dir immer merken, welche Stelle für welches Modul steht. Wenn Module dazu kommen oder wegfallen, muss immer noch auf die richtige Stelle zugegriffen werden.

Eine Andere Möglichkeit ist das Feld: Gruppe
Du bestimmst bestimmte Gruppen, z.B. 0 bis 10.
Dann gibst du jedem Modul auch eine Gruppenzahl. Wenn die Gruppe des Users >= Gruppe des Moduls, dann darf er es sehen. Nachteil: Unflexibel.

Dann kannst du noch SET in MySQL benutzen. Wenn aber Module dazukommen, musst du die Datenbankstruktur verändern. Dafür hat man aber einen besseren Überblick.


Wie du siehst, gibt es viele Möglichkeiten. Du musst wissen, was du brauchst und die richtige raussuchen.


3.

ich danke für die Ideen bzw. anregungen ich werde dieses mal zu Papier bringen und mir genaue gedanken dazu machen
ich werde mich melden wie ich dieses dann umgezätzt habe.


4.

noch eine möglichkeit:
3 tabellen: benutzer, gruppen, rechte
alle 3 sind untereinander nxm verbunden, also nochmal 3 tabellen: benutzer_gruppen, benutzer_rechte, gruppen_rechte

über joins kannst du dann immer abfragen, ob der entsprechende benutzer über ein bestimmtes recht verfügt und ob er das direkt besitzt oder über eine gruppenzugehörigkeit. man kann dann noch ein paar spielereien einfügen, z.b. in der rechte-tabelle zwei felder: benutzer_erlaubt, gruppen_erlaubt womit man kontrolliert, ob ein recht überhaupt einer gruppe zugeteilt werden darf oder nur einem benutzer.


Hier gehts zum Orginal Eintrag "Verständnis Frage bei einer Userverwaltung" im Forum
 
phpforum.de | Impressum