2009-09-03 8 views
0

を拒否へのユーザーアクセスは、私は、ログインから人々を防ぐことができます許可をしたい(利用できる自分のプロフィールページを維持しながらので、ロールXのすべてのユーザーが一時的にブロックされる可能性があります。)のDrupal6:ログイン

抜粋。プロDrupalの開発第2版からのログインプロセス:

  • ユーザーがブロックされているログインフォームから

    1. POST?
    2. ユーザーがアクセス制御によって拒否されましたか?

    この手順の3番目の段階でユーザーを停止したいとします。私はモジュールを持っています:

    /** 
    * Implementation of hook_perm(). 
    */ 
    function odp_perm() { 
        return array('log in'); 
    } 
    
    /** 
    * Implementation of hook_user 
    * lock out without the 'log in' permission 
    */ 
    function odp_user($op, &$edit, &$account, $category = NULL) { 
        if ($op == 'login' && ! user_access('log in')) { 
         drupal_set_message("You do not have access to log in.", "error"); 
         drupal_goto('logout'); //doesn't work 
         drupal_goto('content/party-tonight'); //also doesn't work 
        } 
    } 
    

    おそらく私はdrupal_gotoを間違って使用しています。

  • 答えて

    0

    私はDrupalインスタンスを持っていませんATMでこれをテストし、私はあなたがこれをしたいと思うために:

    自分のユーザー情報を削除し、代わりに、匿名ユーザーに置き換え
    /** 
    * Implementation of hook_user 
    * lock out without the 'log in' permission 
    */ 
    function odp_user($op, &$edit, &$account, $category = NULL) { 
        if ($op == 'login' && ! user_access('log in')) { 
         global $user; 
         $user = drupal_anonymous_user(); 
         drupal_set_message("You don't have permission to log in"); 
    
        } 
    } 
    

    1

    私はこれがあなたがやろうとしていることを成し遂げていると信じています。

    /** 
    * Implementation of hook_user 
    * lock out without the 'log in' permission 
    */ 
    function odp_user($op, &$edit, &$account, $category = NULL) { 
        if ($op == 'login' && ! user_access('log in')) { 
         drupal_set_message("You don't have permission to log in"); 
    
         //prevent login 
         header("Location: http://www.example.com/?q=logout"); 
         // header("Location: http://www.example.com/logout"); if using clean URLs 
        } 
    } 
    

    これは、ユーザーをログアウトしてメッセージを表示します。私が正しいと覚えていれば、$ op loginのhook_userはユーザがログインした後に起動するので、すぐにログインすることができます。

    +0

    header()の代わりにこのユーザーdrupal_goto()を実行する方法はありますか?私のベースパスが変わった場合、このコードは問題になります。 –

    +0

    drupal_gotoは実際にその方法でheader()を使用します。ヘッダー()の代わりに直接使用してください。 – ceejayoz

    +0

    ソースコード:http://api.drupal.org/api/function/drupal_goto – ceejayoz

    関連する問題