Drupal 7: otorgue permiso para administrar usuarios pero no permisos

11

Hemos configurado un sitio en Drupal 7 en el que nos gustaría que ciertos usuarios tengan acceso a la página de administración de usuarios y puedan crear nuevos usuarios, asignar roles, etc., pero no queremos darles acceso a Roles y páginas de permisos.

Actualmente Drupal solo tiene 2 permisos Administer Permissionsy Administer users.

Con el Administer userspermiso, el usuario tiene acceso a la página de Administración de usuarios y puede crear nuevos usuarios, pero no puede asignar roles a los usuarios.

Si el usuario tiene el Administer permissionspermiso, puede asignar roles a los usuarios y también acceder a las páginas de permisos y administración de roles.

¿Cómo le concedería a un usuario el derecho de asignar roles a los usuarios, pero evitarle que acceda a la página de permisos?

E. de Saint Chamas
fuente

Respuestas:

16

Tenía exactamente el mismo requisito, y pude usar el módulo de Delegación de Roles para construirlo a la perfección :-)

Aquí está mi escenario para darle más contexto:

  1. Tenía un sitio drupal con roles: A, B, C, Admin, Maint
  2. Quería que los usuarios con rol Maint pudieran crear nuevos usuarios y también asignarles roles al hacerlo.
  3. También quería limitar los usuarios de Maint para poder asignar solo los roles A, B, C a los nuevos usuarios y no el rol Admin.
  4. Todo fue solo unos pocos clics con el módulo de delegación de roles

Espero que esto ayude.

Sumeet Pareek
fuente
1
Uso de la delegación de roles No parece que pueda configurar quién puede crear usuarios. Pueden editarlos para asignar roles, pero no crearlos. ¿Me estoy perdiendo de algo?
Johnathan Elmore
2

Hmmm ... Interesante que no parece haber una forma clara de hacer esto. Parece que podría ser una característica común para las personas. Encontré un par de soluciones:

http://drupal.org/project/protect_permissions - Sin embargo, esto aún no está listo para su uso en producción.

Sin embargo, creo que puede lograr lo que quiere con: http://drupal.org/project/permissions_lock

También necesitará: http://drupal.org/project/user_permissions

El último parece hacer lo contrario de lo que quieres, pero el primero parece hacer exactamente lo que quieres. No he probado ninguno de estos en mi sitio de desarrollo para asegurarme al 100% de que esto es lo que funcionará para usted. Si me encuentro con algo más, actualizaré esta respuesta.

Brandon Bearden
fuente
1
También comencé a pensar en las mismas líneas que usted sugirió, pero luego encontré el módulo Delegación de roles ( drupal.org/project/role_delegation ). Verifíquelo para este tipo de requisitos. Funciona muy bien
Sumeet Pareek
¡Increíble! Marqué esto, un buen hallazgo.
Brandon Bearden
2

La delegación de roles deja un agujero de seguridad. Debe asignar a las personas los usuarios administradores para que puedan usar la página de administración y las herramientas que tiene.

Pero si lo hace, ese rol podrá editar incluso superadmin. Consulte Cuidado con el permiso Administrar usuarios de Drupal para obtener una descripción completa.

Mi solución es delegación de roles + este gancho


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');
        }
    }
}
Anthony Phillips
fuente
0

Últimamente hemos estado usando el módulo roleassign , que hace exactamente lo que estás pidiendo. Es fundamentalmente idéntico al módulo role_delegation, pero podría ser una alternativa si necesita algo ligeramente diferente.

Una diferencia clave es cómo decide qué roles están disponibles para ser asignados. Con roleassign, solo selecciona cuáles desea que estén disponibles, y solo agrega un nuevo permiso para asignar esos roles: roleassign

El módulo role_delegation parece dar un nuevo permiso para cada rol que existe en el sitio: permisos del módulo role_delegation

El módulo role_delegation también parece tener casi el triple del número de instalaciones y una versión "recomendada" de Drupal 8. La cola de problemas también parece estar en mejor forma, ¿entonces es probablemente la mejor opción?

davidneedham
fuente