Andreas Korthaus: Modular programmieren #887: Benutzerrechte

Beitrag lesen

Hi Christian!

Ähm, ich sollte vielleicht dazu sagen, dass Access Control Lists bei Linux erst ab Kernel 2.5.irgendwas von Haus aus (ohne Kernel-Patch) unterstützt werden.

Ich hatte das nur gschrieben da ich die Techniken im Hintergrund nicht kenne, sondern nur als Anwender.

[...] das wird mir langsam alles zu kompliziert, ich blicke jetzt schon kaum noch durch [...]
Das ist natürlich ein Problem... :-(

Naja, wenn schon denn schon, jetzt habe ich mal angefangen dann will ich es jetzt vernünftig haben,m der Rest hat ja auch irgendwie merh oder weniger geklappt, und so langsam bekommt man auch allgemein ein besseres Verständnis für derartige Techniken, was nicht heißt das ich es alles verstehen würde.... :)
Jedenfalls Binde ich jetzt auch noch direkt ein komplexes Error-Handling mit ein(siehe [pref:t=34111&m=185654]),
btw: Wie hast Du das bei Dir gelöst?

aber zurück zum Thema:

Ich habe das so realisiert: Es gibt pro Objektart eine zusätzliche Tabelle, die die Rechte für jedes Objekt entählt. Beispiel anhand der Menüstruktur:

[...]

Folglich wird jedem Benutzer der Gruppe (idtype=1) 'admins' (id=40) der Zugriff auf den Eintrag 'Benutzerverwaltung' (menuid=3) erlaubt. (allow_access=TRUE) Somit kannst Du natürlich beliebig viele Rechteverknüpfungen hinzufügen. Police: Was nicht explizit erlaubt ist, ist verboten.

Puh, sowas hatte ich noch gar nicht in Betracht gezogen! Wobei ich diese Informationen ja nicht in der Datenbank speichern muß, ich habe ja auch ein Script "menu.php", welches das menü erzeugt. Ich hatte das jetzt so gedacht, dass sich dieses Script aus den verschiedenen Modulen oder Basis-Scripten die Informationen holt, die Du in der DB stehen hast. Das heißt alle Scripte die "menu.php" abfragt geben einen Menüeintrag und eine Rechte-Definition zurück, entsprechend des User-Gruppe, also ob Admin oder Lieferant werden ja jeweils andere Scripte abgefragt, also bekomme ich andere Menüstrukturen, Links und Rechte. In der Datenbank speichere ich wie gesagt nur die User und Gruppen. Muß mal überlegen ob das nicht vielleicht auch Sinn macht das in die Datenbank zu verlagern. Aber ich werde das vermutlich auch in Form einer eigenen Klasse bzw. eines internen Moduls(kein Plugin, so langsam versteh ich die Nomenklatur ;-)), so kann ich das auch nachher ändern.
Schwierig, schwierig. Aber ich mache mir sowieso langsam sorgen das mein Code zu kompex wird, wo frühr ein keines Script mit 100 Zeilen reichte lade ich mein Basismodul, da rein alle notwendigen Modul-Scripte, PEAR, SMARTY, Config-File, das eigentliche Script, das HTML-Template, die notwendigen Language-Files... das macht mir langsam Angst :o
Kann man irgendwie in PHP ermitteln wieviel Zeilen Code bei einem Script insgesamt geparst und ausgeführt werden? Würde mich mal interessieren!
ch hoffe das ganez bremst die Performance nicht zu sehr!

Das wäre auch mit so einer Rechteverwaltung, wie ich sie beschrieben habe, zu lösen. IMHO wäre es aber sinnvoller, eine m:n und nicht eine 1:n-Beziehung zwischen Benutzern und Gruppen herzustellen. Damit kannst Du Rechte noch feiner vergeben.

Das brau8che ich eigentlich nicht, ein Benutzer ist immer nur in einer Gruppe. Denn wenn ich das machen würde könnte ich  nicht emrh ermiteln in welcher Gruppe der User ist, und müßte das dann anders ermitteln, OK, das ginge wohl durch einen Partameter im Anmeld-Script, aber das hat ja weitreichede Folgen, ich will nicht Flexibilität um jeden preis, denn je flexibler das ganze wird desto komplizierter wird es, und wie gesagt, der Grad an Koplexität ist schon jetzt nah dran mich zu überfordern ;-)

ich nenne sie nur so da ich persönlich den Begriff passender finde.
ACK. ;-)

oder doch nicht -> s.o. ;-)

Bedenke immer, (das habe ich doch schon mal gesagt, oder?) dass ich meinen eigenen Stil habe. Du kannst auch Deinen eigenen Entwickeln. Von daher: Ich habe überhaupt nichts dagegen, wenn Du etwas konzeptionell komplett anders machst, als ich. Solange es funktioniert... :-)

Das weiß ich sehr wohl, aber das was Du mir schreibst ist mal so eine Richtung die halt funktioniert, wenn ich alleien da sitze denke ich die meiste Zeit im Kreis udn habe oft bei scheinbar einfachen Dingen keine Ahnung wie ich das nur im entferntesten umsetzen könnte. Wenn Du ein Beispiel gibts bekomme ich meist eine Idee die in mein Konzept passt, auch wenn es was ganz anderes ist als Du gemeint hast, meist reicht eine bestimmte Denkweise, wo man aber durch Nachdenken nicht selbst drauf kommt, ich zumindest nicht.

Also nochmals vielen Dank!

Viele Grüße
Andreas