phpbar.de logo

Mailinglisten-Archive

[php] Benutzer und Gruppen für cms

[php] Benutzer und Gruppen für cms

Bjoern Schimpf php_(at)_phpcenter.de
Sat, 23 Feb 2002 15:29:31 +0100


Hi Enrico,

> wenn du den gruppennamen brauchst, warum dann nicht gleich:
>
> SELECT group.name WHERE group_member.groupID = group_member.groupID
> AND group_member.UID = $uid
>
es ist mir schon klar, dass ich wenn ich namen will auch die namen selecten
muss :-)
allerdings sollte Dein "group_member.groupID = group_member.groupID" uns
auch nicht
richtig voranbringen ;-)

was ich eigentlich damit sagen wollte ist, dass ich durch das speichern in
der user-tabelle einen kompletten sql-zugriff ausfallen lassen kann...

> > Und die Phplib arbeitet mit Kommaseparierten Gruppennamen...
> fuer kleinere anwendungen mag das durchaus ausreichen,
> wenn du es aber mit 10000 usern und 1000 gruppen zu tun hast,
> wirds ziemlich ineffizient ...
>
> ausserdem kannst du bei meiner variante leichter komplexere
> operationen mit den gruppen in der datenbank machen, beispielsweise
> wenn du leute suchst, die in bestimmten gruppen gleichzeitig sind etc.
> (so musst du halt ein langsames preg_match machen ...)

ich wollte mit möglichst wenig gruppen auskommen, und der standard-benutzer
ist
ja auch nicht in mehr als 1-2 Gruppen... Die admin-funktionen können ruhig
ein
wenig länger brauchen, da sie mit sicherheit nicht die hauptlast ausmachen
werden.

Ich habe mir die Lösung von Zope nochmal angeschaut, die arbeiten nicht
explizit
mit gruppen, sondern mit roles (editor, owner, admin) und speichern die
benutzer
und rechte an beliebigen Knoten des Baumes. Die Benutzersind dann oberhalb
einfach
nicht bekannt -> Gast, un können unterhalb alles editieren, was in ihrer
macht
steht.
Ich könnte so eine Lösung erreichen, indem ich bei jedem Benutzer eine
Parent_id anlege

> > wie meinst du das mit dem permission-feld in group members?
> wenn beispielsweise jemand innerhalb einer gruppe bestimmte rechte
> haben soll (ist sinnvoll, wenn du die gruppen nicht zur rechtesteuerung,
> sondern als agglomeration von leuten, z.b. in einer mailinglist
> verwendest)

das wäre mir ein wenn zu viel... ich gehe davon aus, dass es in jeder
Unterstruktur (z.B. Abteilung) verschiedene Aufgaben / Rechte geben muss.
Wenn ich dich richtig verstanden habe, muss ich dann ja bei dir bei jeder
benutzer-gruppen-zuordnung die Benutzerspezifischen Rechte angeben.

> > Problematisch wird es, wenn mehrere in der Baumstruktur
> > aufeinanderfolgende admins existieren. Der "ranghöchste" kann die
> > untergeordneten Seiten nicht editieren...
> warum nicht ?

weil man dann beim anlegen einer neuen untergruppe allen übergeordneten
benutzern mit schreibrechten(o.ä.) die gruppenzugehörigkeit geben müsste:
übergeordnete seiten suchen, gruppen daraus extrahieren, benutzer mit
schreibrechten finden und der gruppe zufügen....

> wenn du fuer jedes einzelne gruppen-mitglied (user + gruppe +
> permissions)
> einen extra eintrag hast, sollte das doch kein problem sein.
>
> btw: kennst du eine variante, solche baumstrukturen direkt in SQL
> aufzuloesen ?
bei oracle scheint es ein "select tree" zu geben, habe ich aber
(in ermangelung einer oracle db :-)) noch nie getestet.

ich mache ein select, sortiert nach der parent-id, in der
while-schleife erledige ich gleich die vererbung,
und weise jeden ergebnis-array gleich noch einem id-sortierten
array zu.
im zweiten schritt habe ich eine rekursive funktion, die den nach
parent-id sortierten array abarbeitet und mir einen xml-baum erstellt.

geht schön schnell, funktioniert aber nur, wenn die parent-id immer
kleiner als die id ist.

Gruß Björn

-- --------------------------------------------
Dipl. Ing. Björn Schimpf
visual4
bjoern_schimpf_(at)_visual4.de
0179.6098437 0711.649123.8


php::bar PHP Wiki   -   Listenarchive