hi leute!
bevor ich hier jetzt gesteinigt werde weil ich schon wieder einen neuen thread zu diesem thema erstelle möchte ich kurz loswerden dass ich da glaube ich gedanklich einen interessanten ansatz habe... und jetzt ohne lange umschweife...
ich gehe davon aus dass alles erstmal NICHT (daher standartwert 0) erlaubt ist und erst dann erlaubt ist wenn der wert 1 ist...
benutzer können in so vielen gruppen sein wie sie wollen (daher groupid in der users-tabelle auch als varchar)... welches gruppenrecht sich jetzt durchsetzt liegt an der grouprankid. benutzerrechte überschreiben jedes gruppenrecht (ist ja auch logisch weil wieso gebe ich einem benutzer denn sonst explizit ein bestimmtes recht?!? daher standartwert von rightid in der users-tabelle auch 0 weil)...
die erste sql-abfrage wäre wohl welcher/n gruppe(n) der user angehört... danach die sortierung welche den höheren rang hat und somit tlw. die rechte der untergeordneten gruppen überschreibt... ist in einer untergeordneten gruppe das schreiben eines postings erlaubt in der übergeordneten jedoch mit 0 dann ist es erlaubt... ist in der übergeordneten gruppe jedoch zb -1 dann ist es explizit verboten und überschreibt somit wieder die berechtigung der untergeordnete gruppe...
und sollte der user auch noch explizite userrechte haben so überschreiben die sofern -1 (explizit nicht erlaubt) bzw 1 (explizit erlaubt) wert gesetzt ist die gültigen gruppenrechte...
sooo... und jetzt würde ich um konstruktive kritik an meinem vorschlag bitten... bzw falls jemand einen bsp-code machen möchte so würde ich mich sehr darüber freuen... *ggg*
mfg
flow
bevor ich hier jetzt gesteinigt werde weil ich schon wieder einen neuen thread zu diesem thema erstelle möchte ich kurz loswerden dass ich da glaube ich gedanklich einen interessanten ansatz habe... und jetzt ohne lange umschweife...
Code:
benötigte tabellen: users: userid (int; unique; autoincr) groupid (varchar; zb: 3|5|6; standartwert: 2 (sollte wohl über config einstellbar sein)) rightid (int; staddartwert: 0) username (varchar; evtl unique) ... groups: groupid (int; unique; autoincr) grouprankid (int; evtl. unique) rightid (int; stadartwert: 2(sollte über config einstellbar sein)) groupname (varchar; evtl unique) rights: rightid (int; unique; autoincr) can_view_news (tinyint; standartwert: 0) can_edit_news (tinyint; standartwert: 0) ...
benutzer können in so vielen gruppen sein wie sie wollen (daher groupid in der users-tabelle auch als varchar)... welches gruppenrecht sich jetzt durchsetzt liegt an der grouprankid. benutzerrechte überschreiben jedes gruppenrecht (ist ja auch logisch weil wieso gebe ich einem benutzer denn sonst explizit ein bestimmtes recht?!? daher standartwert von rightid in der users-tabelle auch 0 weil)...
die erste sql-abfrage wäre wohl welcher/n gruppe(n) der user angehört... danach die sortierung welche den höheren rang hat und somit tlw. die rechte der untergeordneten gruppen überschreibt... ist in einer untergeordneten gruppe das schreiben eines postings erlaubt in der übergeordneten jedoch mit 0 dann ist es erlaubt... ist in der übergeordneten gruppe jedoch zb -1 dann ist es explizit verboten und überschreibt somit wieder die berechtigung der untergeordnete gruppe...
und sollte der user auch noch explizite userrechte haben so überschreiben die sofern -1 (explizit nicht erlaubt) bzw 1 (explizit erlaubt) wert gesetzt ist die gültigen gruppenrechte...
Code:
bsp: users: 1 | 1;2 | 3 | flow groups: 1 | 2 | 1 | rechte für user bzw.: 2 | 1 | 2 | rechte für admins rights: 1 | 1 | 1 | ... bzw: 2 | 1 | -1 | ... bzw: 3 | 0 | 1 | ... daraus ergibt sich: can_view_news: 1 can_edit_news: 1 erklärung: das recht für admins (rightid: 2) überschreibt das recht für user (rightid: 1) weil das gruppenranking sagt 1 kommt vor 2... das explizite benutzerrecht (rightid: 3) überschreibt das gültige gruppenrecht sodass der user jetzt news verändern darf...
mfg
flow
Kommentar