How to redirect user to a specific page after they login if they belong to a certain role?

后端 未结 9 848
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-11 04:26

We have certain users in our member list that have a role \"vendor\" attached to them. All such members are to be redirected to a certain page upon login. How can this be ac

相关标签:
9条回答
  • 2020-12-11 04:56

    For Drupal 7

    Action --> admin/config/system/actions - Redirect to URL

    then enable your trigger module

    Trigger --> /admin/structure/trigger/node

    if your are trying to login redirect just follow this(select user tab in the page)

    go to --> admin/structure/trigger/user

    then Trigger: After a user has logged in

    choose an action -->Redirect to URL and assign.

    Then clear the cache.

    It will work for you!

    0 讨论(0)
  • 2020-12-11 04:56

    There are 2 ways in DRUPAL 7

    1) Using action and trigger see this http://drupal.org/node/298506

    2)if using custom module

    function YOURMODULE_user_login(&$edit, $account) {
    
     if (!isset($_POST['form_id']) || $_POST['form_id'] != 'user_pass_reset' || variable_get('login_destination_immediate_redirect', FALSE)) {
    
     if(in_array('THE-ROLE-WANTED-TO-REDIRECT',$account->roles)): 
    
    drupal_goto('PATH');
    
     else: drupal_goto('user/'.$account->uid); 
    
    endif; 
    
    } 
    
    }
    
    0 讨论(0)
  • 2020-12-11 04:57

    You can use Rules

    Events: User has logged in.
    Condition: User has role
    Actions: Page redirect

    0 讨论(0)
  • 2020-12-11 04:59

    following condition for hook_user

    if($op =='login') drupal_goto("your path");
    
    0 讨论(0)
  • 2020-12-11 05:01

    You can define actions and triggers in Drupal:

    Action(admin/settings/actions) - Redirect to a specific page

    Trigger (admin/build/trigger/user) - After user has logged in

    Try this.

    EDIT (see comments):

    Create a small module to check on a user's login process what role he has and then redirect if neccesary. drupal_goto => redirect-function in drupal

    hook_user =>triggers on user operations

    And for the user's roles:

    GLOBAL $user;
    $roles = $user->roles;
    $vendor = in_array('vendor', $roles);
    

    $vendor then holds a true/false value will decide to redirect or not.

    If you don't know how to do this, just post here and I'll write the module for you. But this would be a good practice for writing future drupa modules for you perhaps. :)

    0 讨论(0)
  • 2020-12-11 05:01

    First set the conditions in form preprocess (for example I want to redirect only users that logged in using the form at node page)

    function YOURMODULE_form_user_login_alter(&$form, &$form_state, $form_id)
    {
        $pathArguments = explode('/', current_path());
        if (count($pathArguments) == 2 && $pathArguments[0] === 'node' && is_numeric($pathArguments[1])) {
            $form_state['nodepath'] = current_path();
        }
    
    }
    

    than define redirect:

    function YOURMODULE_user_login(&$edit, $account)
    {
        if (isset($edit['nodepath']) && !empty($edit['nodepath'])) {
            drupal_goto($edit['nodepath']);
        }
    }
    
    0 讨论(0)
提交回复
热议问题