¿Cómo depuro permisos en Drupal 7?
Utilizo informes centrales, registros de errores, registros de errores del módulo de desarrollo, traza inversa y bloqueo de permisos de acceso a nodos, pero a veces no es suficiente. ¿Qué más debo verificar para averiguar por qué ciertos campos, vistas o bloques no se muestran a un usuario?
También descubrí que hay un módulo para Drupal 6 para informar sobre los permisos llamados, pero no está disponible para Drupal 7.
Estoy usando varios módulos de terceros relacionados con permisos:
- devel node access 7.x-1.x-dev
- fast permissions administration 7.x-2.0
- organic groups access control 7.x-1.x
- profile2 group access 7.x-1.x-dev
- ur-node access 7.x-1.x-dev
Respuestas:
Una forma de hacerlo es crear un módulo personalizado, imprimir información de acceso en cada página, cada nodo, cada bloque.
La función menu_get_item () devuelve un elemento de enrutador que tiene la propiedad access_arguments para la página actual.
Luego puede hook_page_alter, para mostrar la información de acceso en la parte superior de cada página.
A continuación, puede mostrar la información de permiso de bloqueo de esta manera:
Y así sucesivamente, básicamente el mismo concepto, puede hacer lo mismo para nodo, formulario, vistas. Espero que esto ayude.
fuente
yourmodule_get_page_access()
no tienen sentido, puede echar un vistazo$router_item['access_callback']
y luego buscar la función con ese nombre en los módulos relevantes para ver qué está pasando allí. Gran respuesta.Edite el archivo principal del módulo de usuario; encuentre la
user_access()
función, agregue 2 líneas antes de lareturn
declaración y monitoree el registro de errores de PHP.fuente
error_log
no sale a la pantalla. Para mi instalación, escribió en el registro de errores de apache. php.net/manual/en/function.error-log.phpParece que ya tiene todas las herramientas basadas en GUI para solucionar problemas de permisos. Un truco más avanzado (y probablemente más difícil) que he usado efectivamente en el pasado es:
En muchos casos, las consultas que escupieron Vistas son bastante complejas (choque lleno de combinaciones) y construirlas manualmente tomaría un poco más de tiempo (además sería un poco más propenso a errores). Además, este enfoque garantiza que esté probando lo que el usuario está viendo. Si tiene habilitados los módulos de permisos (que utilizan los permisos principales de Drupal), sus uniones de tabla se mostrarán en la consulta utilizada por las Vistas. Una vez que recibí esta consulta, la modifico para mostrar cuántos nodos de tipo de contenido x están permitidos para el rol x, por ejemplo. Es tan preciso y preciso como los informes pueden ser. Y esos son mis informes "avanzados".
fuente
Con Drupal tengo que usar un depurador algunas veces (xdebug con netbeans). Se llaman muchas funciones indirectamente, lo que hace casi imposible seguir lo que realmente se agrega globalmente solo leyendo el código, imprimiendo una traza inversa o verificando el resultado final.
fuente