2010-09-19 30 views
2

Je dois rediriger une URL pour un rôle d'utilisateur.drupal 6: rediriger l'URL d'administration pour le rôle d'utilisateur personnalisé

URL De:http://www.example.com/admin

URL pour:http://www.example.com/admin/content/filter

Rôle utilisateur: exemple-admin

Ainsi, lorsqu'un utilisateur (exemple-admin rôle) connexion à admin panneau avec l'URL example.com/admin, il ne verra pas la page Accès refusé, mais redirigé vers le contenu/filtre comme URL de connexion par défaut.

Aide appréciée! Merci beaucoup!

Répondre

2

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 remplacement, vous effectuez le contrôle d'accès standard et renvoyer le résultat, mais ajoutez le chèque pour le rôle spécifique et rediriger 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 que l'altération du menu soit prise en compte.

3

Vous devez envisager d'utiliser le module Règles (http://drupal.org/project/rules). Le module Règles vous permet d'émettre des redirections lors de la connexion à une URL arbitraire. Vous pouvez également vérifier des conditions telles que le rôle de l'utilisateur avant d'émettre la redirection.