Organische Gruppen
Eingetragen von Anonymous (0)
am 19.10.2005 - 14:07 Uhr in
am 19.10.2005 - 14:07 Uhr in
Ich brauche eine Gruppe, in der alle Gruppenmitglieder neue Gruppenmitglieder zulassen können, aber nicht wieder löschen. Es soll also diese eine Admin-Aufgabe auf alle übertragen werden, die in der Gruppe sind.
Mir ist aber völlig unklar, wie ich das in den Code packen soll, weil ich die Rechteverwaltung von Drupal nicht genau durchschaue...
- Anmelden oder Registrieren um Kommentare zu schreiben
Rechtemanagement in Drupal
am 21.10.2005 - 13:21 Uhr
1. der erste angemeldete User ist der "super Admin", d.h. er hat immer alle Rechte
2. man kann eine "Role" - BenutzerRolle erzeugen --> /admin/access/roles und für diese x-beliebige Rechte verteilen
Hinweis: - die Rechte für "access administration pages" + "administer site configuration" geben der Rolle effektiv das Recht sich selbst Rechte zuzuweisen, sind also gleichzusetzen mit SuperAdminRechten
Hinweis : dieser Punkt bezieht sich noch auf Erfahrungen mit 4.5 bis 4.6.2 kann sein, dass es sich geändert hat
3. die Benutzerrolle muss man nun noch einem Benutzer zuweisen, dann hat dieser die Rechte dieser Rolle, sind mehrere Rollen zugewiesen zählen alle Rechte zusammen
zu deinem Problem
um User zu erzeugen bräuchte man mindestens das "administer user" Recht, du könntest also eine Rolle mit diesem Recht erzeugen und den "Gruppenmitgliedern" einfach diese Rolle zuweisen
Probleme
- mit diesem Recht, könnte man das Passwort des "SuperAdmin" Users ändern
- Löschen User ist ebenfalls möglich
...ergo die Rechte für das User Management sind nicht granular genug
Lösung
hmm da ich noch kein entsprechendes Modul kenne, muss man das wohl selbst kodieren z.B so
- user.module nehmen
- function "user_menu" suchen, darin ganz nach unten in den else Zweig gehen und "'/delete'" suchen
- "$admin_access" steuert den Zugriff
- ich würd genau hier eine Anpassung machen und zwar ungefähr so (php syntax ist mir grad egal)
wenn $admin_access
dann pruefen_ob_user_bestimmte_rolle_hat_und_kein_super_admin_ist()
in dieser Funktion einen Datenbankzugriff oder auf die Variable "$perm" zugreifen (siehe function user_access)
und auf die entsprechende Rolle testen
falls der User die Rolle hat und kein SuperAdmin ist, $admin_access auf "FALSE" setzen
dasselbe dann ggf. nochmal für user_edit um Passwortänderungen etc. zu verhindern (das ist allerdings komplexer in der Anpassung)
da du (hoffentlich) nur den Gruppenmitgliedern die Rolle X zugewiesen hast, hätten nur diese das Recht User zu kreieren und durch den PHP Code wird verhindert, dass sie die User löschen können
wie immer gibts keine Gewähr, das obige ist nur ein Konzept, d.h. ich hoffe dass es so funktioniert :-)
MfG Micha
- work in progress mit Langmi.de