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.

-komplexe- Strings parsen / auf Gültigkeit prüfen

Hallo allerseits,

ich programmiere gerade ein kleines Rechtesystem. Mann kann ein Recht durch Angabe mehrerer Situationen definieren - zb wenn ich ID 5 editieren will und die aktuelle Benutzergruppe gleich Administrator ist.

Als Beispiel:

Die Definition des Rechts sieht so aus:

( [4] OR ( [1] AND [2] AND [3] ) )

Die Definition der einzelnen Token wäre folgende:

1 -> Die zu bearbeitende ID ist 5 ( $_GET['id'] => 5 )
2 -> Die bearbeitende ID gehört zur Gruppe News ( $daten['gruppe'] => "news" )
3 -> Benutzer gehört zur News-Admin Gruppe ( $_SESSION[...]['gruppe'] => "newsadmin" )
4 -> Benutzer ist Administrator ( $_SESSION[...]['gruppe'] => "admin" )

In diesem Falle prüfe ich also, ob der Benutzer Administrator Status hat -oder- ob das Daten Element die ID 5 trägt, zum Bereich News gehört und der Benutzer zur Gruppe der News-Administratoren gehört. Sollte eines von beidem der Fall sein, wird diese Regel angewandt und schließlich geprüft, ob der Benutzer dieses Recht hat oder nicht hat.

Ohne auf den Sinn eines solchen Rechtesystems einzugehen ^^ ( es ist doch etwas komplexer und anders als hier vorgestellt - aber es soll mir hier nur auf die Definition ankommen ), frage ich mich, wie man diese Definition des Rechts auf seine Gültigkeit prüfen kann.

Ich habe es gelöst, indem ich einen endlichen Automaten umgesetzt habe und je nach Status entscheide, ob der nächste Schritt ( zb "jetzt muss eine Klammer zu kommen" ) gültig ist. Hier das Ergebniss.

Kennt Ihr bessere Lösungsansätze? Oder ist es vielleicht sogar möglich, einfach preg_match() zu verwenden? Falls ja, einfach Bescheid sagen, ob sich ein Einarbeiten zur preg_match() lohnt oder nicht :).

Danke & Gruß
Eike

Hier gehts zum Orginal Eintrag "-komplexe- Strings parsen / auf Gültigkeit prüfen" im Forum

Antworten

Endliche Automaten sind hier genau das Mittel der Wahl. Es wundert mich allerdings, dass Du ausgerechnet bei der Definition der Rechte einen so eigenen Weg gehst und dort nicht auch Standards verwendest.

Grundsätzlich muss man bei Rechteverwaltung arg darauf aufpassen, dass die Konfigurierbarkeit gewährleistet bleibt, denn wenn der Admin jedesmal ne halbe Studne braucht, um für einen Benutzer die Rechte zu verteilen oder sogar im schlimmsten Fall selber nicht durchblickt, wird das gemacht, was immer gemacht wird:

Alle bekommen alle Rechte damit auch immer alles funktioniert...

Hab ich oft genug erlebt und kennt sicher jeder auch aus Erzählungen.


2.

Zitat:
oimel postete
und dort nicht auch Standards verwendest.
Welche Standards meinst du? Wo gibt es bereits "Standards" für diese Art der Definition?


Zitat:
oimel postete
Alle bekommen alle Rechte damit auch immer alles funktioniert...
Wie denn sonst? ... :)


3.

Mit Standards meinte ich mehr sowas wie ACLs etc.


4.

Du willst deine Rechteverwaltung nicht ernsthaft durch einen Pseudo-Code definieren oder?


5.

Zitat:
McClane postete
Du willst deine Rechteverwaltung nicht ernsthaft durch einen Pseudo-Code definieren oder?
Ja hmmm in gewisser Weise schon. Der Administrator definiert selber Rechte für bestimmte Bereiche oder Elemente. Ich wollte die Möglichkeit haben explizit anzugeben, was gesperrt sein soll und was nicht (Bereiche oder einzelne Elemente). Oder zb ein Element automatisch sperren (automatischer Eintrag einer neuen Regel und Gültigkeitszeit), während es gerade editiert wird.

Ich gebe zu, die Idee ist wohl nicht ausgereift :), aber ich kenne derzeit keine -bessere- (alternatve) Methode. Mit ACLs kenne ich mich nicht besondern aus, bin aber dabei mich ein bißchen "ein-zu-googlen". Was für Alternativen habe ich denn, um die oben genannte Funktionalität zu gewährleisten? Hast du vielleicht informative/nützliche Links zu ACLs parat?

Gruß & Danke


Hier gehts zum Orginal Eintrag "-komplexe- Strings parsen / auf Gültigkeit prüfen" im Forum
 
phpforum.de | Impressum