3.45%
Syncom.org V3 Developing Progress (more...)
Stage 2 - Alpha-Version - Coding
FAQ Suchen Synapsis Wiki Projekte Mitgliederliste Benutzergruppen Profil Einloggen, um private Nachrichten zu lesen Registrieren Login

[PHP] User & Gruppen
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Syncom.org Foren-Übersicht -> Interpretersprachen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
thorn
Fortgeschrittener Benutzer


Anmeldedatum: 23.09.2007
Beiträge: 71
Wohnort: Niederried b.K. (CH)
Programmiersprachen: PHP, MySQL, (X)HTML, CSS, JS, C, VB

BeitragVerfasst am: 24.02.2009, 03:09    Titel: Antworten mit Zitat

Neiiiiiiiiiiiiiiiiiin Motzen
Verdammt!!!

Jetzt hab ich einen halben Roman geschrieben und am ende kackt mir der PC ab - Bluescreen.... Motzen Motzen Motzen

Argh!

*keks frisst* acht, geht mir schon wieder viel besser Mr. Green

Also, ich wollte meinen Senf loswerden bezüglich "Rechtevergebung"
(der Thementitel scheint mir etwas ungenau)

Ich hab ne halbe Philosophie geschrieben über ACL und deren Möglichkeiten.
Ich werde mich nämlich genauer damit auseinander setzen und auch etwas in der Form aufbauen...

ACL (Access Controll List) ermöglicht es, Benutzern und Gruppen einzelne Rechte zu vergeben und diese bei den Rechteobjekten nach oben hin zu vererben (wenn dem Objekt nichts zugewiesen wurde, suche im Elternteil weiter)

In Webanwendungen genügt es mir, wenn ich für ein Objekt eine Berechtigung habe (allow/deny)

Am Beispiel eines News-Bereiches folgende Rechteobjekte:
new, edit, delete, archive

Um Datenbankabfragen zu sparen, habe ich mir folgende XML-Struktur ausgedacht (<> durch {} ersetzt):
Code:
{acl}
  {news all="deny" order="allow"}
    {access}
      {group id="321" access="allow"/}
    {/access}
    {new/}
    {edit/}
    {delete all="deny" order="allow"}
      {access}
        {user id="44" access="allow"/}
      {/access}
    {/delete}
    {archive all="deny" order="allow"}
      {access}
        {user id="123" access="allow"/}
      {/access}
    {/archive}
  {/news}
{/acl}

Sollte soweit selbsterklärend sein. Das Schlüsselwort "access" kann in diesem Fall nicht verwendet werden, da es als Container verwendet wird.

Die Frage nun, ob man dies auch in einer Datenbank verwenden kann.
Hierzu habe ich mir folgende Tabellen ausgedacht:
Code:
acl_object:
acl_id | acl_parent_id | acl_name | acl_all | acl_order
1 | 0 | News | deny | allow
2 | 1 | New | inherit | allow
3 | 1 | Edit | inherit | allow
4 | 1 | Delete | deny | allow
5 | 1 | Archive | deny | allow

acl_user:
user_id | acl_id | acl_access
123 | 5 | allow
44 | 4 | allow

acl_group:
group_id | acl_id | acl_access
321 | 1 | allow


Braucht wenig Platz, kann meiner Meinung nach auch einfach editiert werden
Das Auslesen, ob ein Benutzer ein Recht hat, stelle ich mir hier aber wesentlich schwieriger vor als beim XML.
Hier ist, wie auch beim XML, die GUI-Administrationsoberfläche auch ein Problem... Wobei man das mit einer schönen Baum-Ansicht recht übersichtlich machen kann.
Idee für das Administrationstool - man kann eine Gruppe oder Rolle auswählen und es zeigt einem farblich in grün die Zugriffe an und mit einem klickt auf ein Rechteobjekt kann man diesen Zugriff von allow zu deny und umgekehrt machen...

Tja... wer hat lust da mitzuhelfen? Mr. Green

((So, jetzt aber erstmal speichern, wer weiss wann ich nächstes mal blau sehe!))
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
thorn
Fortgeschrittener Benutzer


Anmeldedatum: 23.09.2007
Beiträge: 71
Wohnort: Niederried b.K. (CH)
Programmiersprachen: PHP, MySQL, (X)HTML, CSS, JS, C, VB

BeitragVerfasst am: 24.02.2009, 04:58    Titel: Antworten mit Zitat

...und ich sehe grün! Very Happy

XML-Parsing fertiggestellt - der Code den ich geschrieben hab hat auf anhieb geklappt *schulter klopf* Mr. Green

Weitere Diskussionen über ein ACL-Plugin hab ich hier eröffnet: https://www.syncom.org/viewtopic.php?t=1514
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Syncom.org Foren-Übersicht -> Interpretersprachen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Anhänge in diesem Forum nicht anhängen.
Du kannst Dateien in diesem Forum nicht herunterladen.



Powered by php B. B. © 2001, 2005 php B. B. Group
Template xabbBlue für php B. B. Foren - created by php b. b. styles
Modified by synapsis
Protected by CTracker