1.8k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo liebe Leute,

ich habe momentan ein PHP-System laufen, welches ich jetzt um ein Berechtigungssystem erweitern muss. Das ganze ist meiner Meinung nach ziemlich komplex und bevor ich irgendwelchen Unfug programmiere, wollt ich mal rumhören, was ihr für Vorschläge habt.

Es geht um folgendes:
Das PHP-System ist ein System zur Kundenverwaltung. Es besitzt mehrere Seiten, z. B. eine um Kunden per CSV zu importieren, E-Mail-Templates anzulegen (um die Kunden per php-Mail-Funktion anzuschreiben) oder E-Mail-Phrasen und noch einiges mehr.

Wenn ich dieses jetzt mit Berechtigungen für jeden User versehen will, ist das meiner Meinung nach bei der CSV-Import-Funktion ganz einfach: Hat der User die Berechtigung, darf er importieren, wenn nicht, wird der Menüpunkt nicht angezeigt und der User würde z. B. auf die Startseite weitergeleitet, wenn er manuell die Seite aufrufen wollen würde. Wenn ich mir jetzt aber die Seite mit den E-Mail-Templates mal anschaue, möchte ich das hier etwas komplizierter haben. Nämlich nicht nur eine Ja-Nein-Berechtigung wie beim Import, sondern eine "darf-lesen, darf-schreiben, darf-beides"-Berechtigung. Hoffe das ist so einigermaßen verständlich. Was mein Problem hierbei ist: ich arbeite mit einem Template-System. Müsste ich nun für jede Berechtigung (Lesen, Schreiben, ...) ein eigenes Template anlegen und entsprechend der Berechtigung laden? Generell wäre das kein Problem, aber wenn ich z. B. für 10 Unterseiten die o.g. Berechtigungen mache, müsste ich dann schon 30 Templates haben, was meiner Meinung nach viel zu umständlich wäre.
Habt ihr da Tipps oder wisst, wie das z. B. in CMS umgesetzt wurde?
Und könnt ihr mir einen Tipp geben, wie ich derartige Berechtigungen in der DB hinterlegen kann? Ich hatte mir gedacht, für jede Seite eine eigene Spalte anzulegen (z.B. Spalte priv_email_templates) als Datentyp enum mit den möglichen Werten r, w und rw. Was sagt ihr dazu? Irgendwo hatte ich mal sowas gesehen mit Bitmasken, aber da hab ich gar keinen Plan von...

Wäre nett wenn ihr hier mal ein paar Tips geben könntet!

Gruß Daniel

3 Antworten

0 Punkte
Beantwortet von
Hm kann hier wirklich keiner nen kleinen Tipp geben? Scheinbar doch zu kompliziert oder gar nicht umsetzbar mit HTML/PHP/MySQL?
0 Punkte
Beantwortet von
hi

ich bin mir nicht sicher ob dieser hierarchische Ansatz für Dich das richtige ist.
Auf meiner Website haben alle User einen Status zwischen 0 (gesperrt) und 9 (Admin).
Damit ist es möglich per

if($userstatus >= $seitenstatus)

einzelne Elemente der Seite anzuzeigen oder eben nicht.

man könnte auch eine zweistellige Zahl nehmen wobei der Zehner dann eine Gruppe repräsentiert. 10 = Vorstand, 20 = Einkauf u.s.w.
d.h. $userstatus == 19 wäre dann jemand mit Adminrechten aus dem Vorstand (der Chef des Ganzen)
dann muss die Variable aber vor dem if noch mit str_split zerlegt werden.
0 Punkte
Beantwortet von
Hallo,

schonmal danke für den Ansatz, ich werd mich damit mal irgendwie ranwagen!

Gruß
...