Drupal 7: concedi le autorizzazioni per gestire gli utenti ma non le autorizzazioni


11

Abbiamo creato un sito in Drupal 7 sul quale vorremmo che determinati utenti avessero accesso alla pagina di gestione degli utenti e potessero creare nuovi utenti, assegnare ruoli, ecc., Ma non vogliamo dare loro l'accesso al Pagine dei ruoli e delle autorizzazioni.

Attualmente Drupal ha solo 2 permessi Administer Permissionse Administer users.

Con l' Administer usersautorizzazione, l'utente ha accesso alla pagina Gestione utenti e può creare nuovi utenti ma non può assegnare ruoli agli utenti.

Se l'utente dispone Administer permissionsdell'autorizzazione, può assegnare ruoli agli utenti e anche accedere alle pagine di autorizzazione e gestione dei ruoli.

Come garantiresti a un utente il diritto di assegnare ruoli agli utenti, ma impedirgli di accedere alla pagina delle autorizzazioni?

Risposte:


16

Avevo esattamente gli stessi requisiti e sono stato in grado di utilizzare il modulo di delega dei ruoli per costruirlo alla perfezione :-)

Ecco il mio scenario per darti più contesto -

  1. Avevo un sito di drupal con ruoli: A, B, C, Admin, Maint
  2. Volevo che gli utenti con ruolo Maint fossero in grado di creare nuovi utenti e anche assegnare loro ruoli mentre lo facevano
  3. Volevo anche limitare gli utenti di Maint a poter assegnare solo i ruoli A, B, C ai nuovi utenti e non il ruolo Amministratore
  4. Tutto è stato a pochi clic con il modulo di delega dei ruoli

Spero che questo ti aiuti.


1
Utilizzando la delega dei ruoli, non riesco a configurare chi può creare utenti. Possono modificarli per assegnare ruoli, ma non crearli. Mi sto perdendo qualcosa?
Johnathan Elmore,

2

Hmmm ... Interessante che non ci sia un modo chiaro per farlo. Sembra che potrebbe essere una caratteristica comune per le persone. Ho trovato un paio di soluzioni:

http://drupal.org/project/protect_permissions - Tuttavia, questo non è ancora pronto per l'uso in produzione.

Tuttavia, penso che puoi ottenere ciò che vuoi con: http://drupal.org/project/permissions_lock

Sarà inoltre necessario: http://drupal.org/project/user_permissions

Il secondo sembra fare il contrario di quello che vuoi, ma il primo sembra fare esattamente quello che vuoi. Non ho testato nessuno di questi sul mio sito di sviluppo per garantire al 100% questo è ciò che funzionerà per te. Se mi imbatto in qualcos'altro, aggiornerò questa risposta.


1
Ho anche iniziato a pensare sulle stesse linee che mi hai suggerito, ma poi ho trovato il modulo Roles Delegation ( drupal.org/project/role_delegation ). Dai un'occhiata per questo tipo di requisiti. Funziona benissimo.
Sumeet Pareek,

Eccezionale! L'ho aggiunto ai segnalibri, buona scoperta.
Brandon Bearden,

2

La delegazione dei ruoli lascia un buco nella sicurezza. È necessario assegnare agli utenti gli utenti amministrati affinché possano utilizzare la pagina di amministrazione e gli strumenti di cui dispone.

Ma se lo fai, quel ruolo sarà in grado di modificare anche Superadmin. Controlla la presenza di Drupal nell'Amministrazione degli utenti per una descrizione completa.

La mia soluzione è la delega dei ruoli + questo hook


function hook_user_presave(&$edit, $account, $category) {
    if( $account->uid == 1 || in_array('adminrole',$account->roles)){ //trying to edit an admin
        global $user;
        if($user->uid != 1){//only super admin can do that
            drupal_set_message( "You attempted to edit an admin or dev user name and you are not allowed, this attempt was logged." ,'error');
            watchdog('permissions_extra','Logged in user %user tried to edit account %account', array('%user' => $user->uid, '%account' => $account->uid), WATCHDOG_ERROR);
            drupal_goto('/admin/people');
        }
    }
}

0

Ultimamente abbiamo usato il modulo roleassign , che fa esattamente quello che stai chiedendo. È fondamentalmente identico al modulo role_delegation, ma potrebbe essere un'alternativa se avessi bisogno di qualcosa di leggermente diverso.

Una differenza fondamentale è il modo in cui decidi quali ruoli sono disponibili per essere assegnati. Con roleassign, devi solo selezionare quelli che vuoi rendere disponibili e aggiunge solo una nuova nuova autorizzazione per assegnare quei ruoli: roleassign

Il modulo role_delegation sembra dare una nuova autorizzazione per ogni ruolo esistente sul sito: Autorizzazioni del modulo ruolo_delegazione

Anche il modulo role_delegation sembra avere quasi il triplo del numero di installazioni e una versione "consigliata" di Drupal 8. Anche la coda dei problemi sembra essere in forma migliore, quindi è probabilmente l'opzione migliore?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.