Funciones de Wordpress - Proteger la función de administrador

2

Queremos proporcionar a los propietarios de su sitio, rol de administrador, pero no queremos que eliminen el usuario 1. Tampoco queremos una solución barata que impida que su cuenta de administrador pueda eliminar usuarios en general. necesitan permisos de usuario completos para agregar / editar / eliminar usuarios, simplemente no la cuenta del usuario 1 o un rol por encima de ellos.

En Drupal hay un módulo llamado: "Proteger al usuario 1" que permite la creación de varias cuentas de administrador, pero ninguna de ellas puede editar / eliminar al usuario 1. ¿Tiene el ecosistema WP algo como esto?

    
pregunta JohnDoe 11.04.2018 - 23:46

3 respuestas

-2
  1. Instala el complemento del Editor de roles de usuario
  2. Cree un Rol para ellos, asigne todo excepto eliminar admin.
respondido por el Milan Bastola 12.04.2018 - 00:00
4

Es un poco diferente en WP que en Drupal. Primero, el rol admin está diseñado específicamente para ser el rol que puede hacer todo. En lugar de intentar restringir la función de administrador, es una práctica recomendada crear las funciones personalizadas que necesite; debe configurar una función de tipo almost-admin que tenga todas las capacidades, excepto la que desea restringir. De todas formas, esto es lo mejor para los propietarios del sitio, ya que puede eliminar algunas de las capacidades más técnicas que solo un desarrollador realmente necesitaría, y al tener los inicios de sesión de los propietarios un poco más restringidos, no tiene tantos administradores. -los usuarios de nivel flotante alrededor de donde es cada vez más probable que el sitio podría ser hackeado. Si el sitio es pirateado pero obtuvo un inicio de sesión de usuario de nivel inferior, es posible que pueda evitar algunos daños.

El otro problema es que el sistema de funciones y capacidades de WP no está configurado para permitir que los usuarios tengan acceso parcial a las capacidades. Por lo tanto, no puede permitir que ningún rol tenga la capacidad de delete_users para algunos roles y no para otros, incluso si utiliza complementos populares de administración de usuarios. Pero quizás los otros roles bastarían: si les niegas la posibilidad de delete_users en todos los ámbitos, aún puedes otorgarles la posibilidad de add_users , edit_users y promote_users si esos son los que realmente necesitas restringir. .

    
respondido por el WebElaine 11.04.2018 - 23:56
2

Este es un uso perfecto para el filtro map_meta_cap .

function my_map_meta_cap( $caps, $cap, $user_id, $args ) {
  if( 'delete_user' !== $cap ) {
    return $caps;
  }
  if( isset( $args[0] ) && 1 === $args[0] ) {
    $caps[] = 'cant_do_this';
  }
  return $caps;
}
add_filter( 'map_meta_cap', 'my_map_meta_cap', 10, 4 );

Este código requiere que cualquier persona que intente eliminar al usuario con un id_usuario de 1 debe tener la capacidad cant_do_this . Como nadie tiene esa capacidad, nadie puede eliminar a este usuario.

Por supuesto, si sus administradores pueden editar los complementos, pueden deshabilitar el complemento y eliminar al usuario de todos modos. Probablemente sea mejor usarlo como un complemento de uso obligatorio.

    
respondido por el Nathan Johnson 12.04.2018 - 00:39

Lea otras preguntas en las etiquetas