phpbar.de logo

Mailinglisten-Archive

[php] Benutzer und Gruppen =?iso-8859-1?Q?f=FCr?= cms

[php] Benutzer und Gruppen für cms

php_(at)_phpcenter.de php_(at)_phpcenter.de
Fri, 22 Feb 2002 19:44:34 +0100


Bjoern Schimpf wrote:
> 
> > * table user (UID, name, ...)
> > * table group (GID, name, ...)
> > * table group_members ( GID, UID, permissions )
> 
> ich bin noch am Überlegen, ob ich in der user-tabelle einfach ein
> Gruppenfeld mit Kommaseparierten Gruppen, oder eine extra 1:n Tabelle,
fuer normale websites mag das ausreichen. 

> wie du es beschrieben hast einsetze. Wenn ich das in den user einbaue
> wird zwar die admin etwas komplizierter, ich spare mir aber bei jedem
> Besucher ein "select gid from group_members where uid=$uid".
wenn du den gruppennamen brauchst, warum dann nicht gleich:

SELECT group.name WHERE group_member.groupID = group_member.groupID 
AND group_member.UID = $uid

> 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 ...)

> > dann gibst du einfach jedem bereich eine gruppe
> > (aehnlich dem 'Require group' in der .htaccess) und kannst damit
> > die rechte steuern ( permission-feld in group_members )
> 
> 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)
 
> ich hatte eher daran gedacht die erlaubten Gruppe(n) zusammen mit den
> Seiten zu speichern. Leserechte in der gleichen Tabelle mit den
> Seitendaten (da es wohl am häufigsten gebraucht wird) und die anderen
> Rechte wie Edit, Useradmin, löschen etc. in einer 1:1 Tabelle mit
> einer Spalte pro Recht.
geht auch. mit meiner variante waere halt alles in einem feld codiert.

> Falls ein Feld leer ist, erbt die Seite das Recht von der nächsten
> Parent-Seite, bei der es eingetragen ist. (Rekursivfunktion)
macht sinn.

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

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 ?

~-n

--
_____________________________________________________________________
 Enrico Weigelt    ==   meTUX IT services 
 
 software development, IT service, internet security solutions

 www:     http://www.metux.de/        phone:     +49 36207 519931
 email:   contact_(at)_metux.de            cellphone: +49 174 7066481
_____________________________________________________________________


php::bar PHP Wiki   -   Listenarchive