Neuigkeiten:

still alive...

Hauptmenü

Benutzer -> Gruppen -> Rechte

Begonnen von Powie, 01. Februar 2008, 13:01:29

Vorheriges Thema - Nächstes Thema

Powie

Ich mache mir aktuell einige Gedanken darüber wie ich ein neues Rechtesystem in das pSys einbringen könnte. Das System hätte das dringend notwendig. Das Ziel dabei müsste sein, dies so aufzubauen, das man es Quasi \"live\" benutzen kann um so im laufenden Betrieb Rechte auf Boards / Script Teile etc. auswerten zu können. Dies sollte \"ohne\" aufwendig viele mySQL Abfragen passieren. ich gehe davon aus das ein \"Usertyp\" nicht mehr notwendig wäre, Rechte selbst nur an Gruppen vergeben werden müssen und der User immer erst über die Gruppenzuordnung ein besonderes Recht erhält.  
Der Wege über Tabellen und Assigner Tabellen hinweg wäre normaerweise
Usertabelle -> AssignerzuGruppe -> Gruppentabelle -> Assigner zu Rechtetabelle -> Script
Dieser Weg ist meiner Meinung nach zu aufwendig (auch wenn machbar) um ihn in allen möglichen SQL\'s zusätzlich noch mit aufzunehmen um die Berechtigungen zu prüfen.
Ideen?

k00ni

Man könnte zu Beginn des Starts in bspw. der pmain.inc.php ein Array mit Rechten laden. Dieses Array enthält alle Rechte des Users. Nun wird im Skript immer an den vorgesehenen Stellen geprüft, welches Recht der User an der Stelle hat. Man hat also pro Aufruf der Seite nur einmal das Auslesen aller Rechte des Users und kann dann dem Skript überlassen, wie es damit umgeht.
Ich selbst stelle mir das relativ einfach vor. Die Frage wäre jetzt die Art der Rechte. Gibt man die 3 Rechte, welche auch schon in Unix verwendet werden?
- Lesen- Schreiben
- Löschen
[/quote]
Oder überlässt man jedem Skript dies selbst. Wie könnten Rechte aussehen? Will man vielleicht auch skriptübergreifende Dinge realsisieren und wie müssten dann die Rechte aussehen?
Wie schon angemerkt, ich würde ein Array anlegen. Dies wird mit den Daten aus der vom Powie angemerkten Tabelle / Tabellen befüllt. Dabei könnte dies dann so aussehen.
- $A_rights [ Skriptname ] [ Rechtename ]  Stichwort: Exceptions /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
So erstmal dazu meine Ideen. /uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-o\" />
[/quote]

Powie

Das wichtige dabei ist, es in den SQLs auch auf die Daten aus Tabellen anwenden zu können, um so nur Datensätze geliefert zu bekommen auf welche der User Zugriff hat.... Dies im Nachgang erst gegen Arrys zu vergleichen ist nicht die Lösung, da man so nicht mit Pagern und Limits arbeiten kann.

k00ni

Was für Daten wären das denn?
Threads, Posts? Die kann man über die Gruppenzugehörigkeit setzen und beim Auslesen berücksichtigen. Wäre +1 Abfrage mehr.
Allgemein Kategorien (Artikel, Bilder etc.) Das Gleiche wie bei den Threads und Posts.
 
Ich denke, man sollte hier vielleicht geteilt vorgehen. Einerseits packt man sich alle Daten zusammen, auf die der User zugreifen darf (SQL).
Andererseits prüft man an vorgesehen Stellen im Skript, ob er für bestimmte Aktionen die Rechte hat.
Ich würde dies nicht sehr so ins Detail treiben und versuchen alles irgendwie mit Rechten einschränkbar zu machen. Das wird zu fummelig und relativiert den Nutzen. Was genau fällt dir zu den SQL-Dingen noch ein (neben meinen)?
 
Grüße

mahe

User -> User-zu-Gruppe -> Gruppe (schon mit Rechten)

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


Powie

@k00ni: Das Problem ist Beispielsweise:
Ich lese 20 Threads aus, für eine Seite. Der User hat dann aber nur auf 12 mit seinen Rechten Zugriff. Somit funktioniert ein sauberes Seiten wechseln garnicht mehr. Diese Problematik wäre überall der Fall, wo man spezielle Rechte vergeben will. Hat mans nicht direkt per Query verfügbar wirds schlecht zur Benutzung.
@mahe: ja so ist es ja aufgebaut, ich suche aber nach einem einfacheren Weg um der Datenbank die unzähligen Joins zu ersparen.

mahe

Moooment.
-) Die UserID hast du ja schon bei der Überprüfung des Logins, sprich auf die musst du dir eigentlich nichtmehr holen.
-) Wie die Gruppe nun heißt und welche Beschreibung die Gruppe hat ist für die Rechte unintressant.
Sprich du brauchst eigentlich nur diesen Weg gehn:
In welcher/n Gruppe(n) ist der User
und welche Rechte hat/haben diese
User-zu-Gruppe -> Gruppenrechte -> Script
Von den Tabellen her:
User-zu-Gruppe: userid | groupid (eh klar)
Gruppenrechte: groupid | script | right
Ist ein Recht nicht gesetzt gilt automatisch verweigern (oder nur lesen).
Das wär ein Weg um die Rechte mal global über pSys zu verwalten.
 
Wenn man das Forum noch dazu nimmt könnte man einfach die Tabelle \"Gruppenrechte\" noch um die BoardID erweitern (groupid | script | boardid | right), wobei 0 dem ganzen Forum entspricht.
 
Oder aber, du baust das ganze komplett auf Kategorien auf (ein Modul ==  eine Hauptkategorie).
Dazu musst du dann wohl aber das komplette pSys umschreiben /uploads/emoticons/icon_e_biggrin.gif.1a84f5257b36e14b36d04985314f877f.gif\" alt=\":-D\" />

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


all your base are belong to us / Discord