ユーザー フィールドの 1 つに特定の値がある場合にのみ、ユーザーにサイトへのアクセスを許可しようとしています。
そうでない場合、サイトはアクセスが拒否されたことを示すはずです。
これを達成する効率的な方法はありますか?
ありがとう
ユーザー フィールドの 1 つに特定の値がある場合にのみ、ユーザーにサイトへのアクセスを許可しようとしています。
そうでない場合、サイトはアクセスが拒否されたことを示すはずです。
これを達成する効率的な方法はありますか?
ありがとう
ここにあなたがそれを行う方法があります
オプション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');
}
}