Mailinglisten-Archive |
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