0

ユーザー フィールドの 1 つに特定の値がある場合にのみ、ユーザーにサイトへのアクセスを許可しようとしています。

そうでない場合、サイトはアクセスが拒否されたことを示すはずです。

これを達成する効率的な方法はありますか?

ありがとう

4

1 に答える 1

0

ここにあなたがそれを行う方法があります

オプション1

カスタムロールを作成します。たとえば、彼のアカウントを作成することを除いて、ウェブサイトでのアクセス許可(編集/削除/表示)のない「制限付きアクセス」としましょう。これがユーザーのデフォルトのロールになります

次に、コンテンツ(または何でも)を表示する権限を持つ「プレミアムアクセス」と言うカスタムロールを作成します

アカウント設定で、カスタム フィールド (「アクセス」) に希望の値 (「限定」、「プレミアム」) を追加します。

/admin/config/people/accounts/fields

ルール モジュールを追加し、フィールド アクセス == プレミアムの場合にアカウントの作成/更新時にロールを「プレミアム アクセス」に更新するカスタム ルールを作成します。

これを行った後、ユーザーの役割からユーザーを管理できます

オプション2

ここでもルール モジュールを使用して、ユーザーのプロファイルに必要な値があるかどうかを確認し、ユーザーをページにリダイレクトできます。

オプション3

hook_init() および/または hook_boot() は、ユーザー アカウント プロファイル フィールドの値をチェックし、リダイレクトします。

function hook_init(){
    global $user;
    $user_data=user_load($user->id);
    if($user_data->field_access['LANGUAGE_NONE'][0]['value']=='limited'){
        drupal_go_to('/content/limited');
    }
}
于 2016-04-05T16:14:45.967 に答える