Drupal 6: redirect url admin pour rôle d'utilisateur personnalisé
-
04-10-2019 - |
Question
Je dois rediriger une URL pour un rôle d'utilisateur.
URL à partir de: http://www.example.com/admin
URL pour: http://www.example.com / admin / content / filtre
Rôle utilisateur: Exemple-admin
Alors, quand un login utilisateur (rôle exemple-admin) sur le panneau d'administration avec le example.com/admin url, il ne verra pas la page Accès refusé, mais redirigé vers le contenu / filtre URL de connexion par défaut.
aide Appréciez! Merci beaucoup!
La solution
Si vous voulez le faire à partir du code dans un module personnalisé, vous pouvez mettre en œuvre hook_menu_alter()
et régler la fonction de rappel d'accès à utiliser une commande prioritaire personnalisée:
function yourModule_menu_alter(&$items) {
// Override the access callback for the 'admin' page
$items['admin']['access callback'] = 'yourModule_admin_access_override';
}
Dans ce override, vous effectuez le contrôle d'accès standard et renvoie le résultat, mais bien la vérification pour le rôle spécifique et redirect à la place, si nécessaire:
function yourModule_admin_access_override() {
global $user;
// Does the user have access anyway?
$has_access = user_access('access administration pages');
// Special case: If the user has no access, but is member of a specific role,
// redirect him instead of denying access:
if (!$has_access && in_array('example-admin', $user->roles)) {
drupal_goto('admin/content/filter'); // NOTE: Implicit exit() here.
}
return $has_access;
}
(NOTE: code non testé, méfiez-vous des fautes de frappe)
Vous devrez déclencher une reconstruction du registre de menu pour la modification de menu pour être repris.
Autres conseils
Vous devriez envisager d'utiliser le module Règles ( http://drupal.org/project/rules ). module de règles vous permet d'émettre des redirections vers connexion à une URL arbitraire. Vous pouvez également vérifier les conditions comme le rôle de l'utilisateur avant d'émettre la redirection.