2016-04-01 3 views
0

Я пытаюсь предоставить пользователю только доступ к сайту, если одно из полей пользователя имеет конкретное значение.Контроль доступа к сайту через определенное поле пользователя в Drupal 7

Если нет, сайт должен показать отказ в доступе.

Есть ли эффективный способ достичь этого?

Благодаря

ответ

0

вот как вы могли бы сделать это

ОПЦИЯ1

создать пользовательскую роль, скажем, «ограниченный доступ» без каких-либо permisions в сайте (редактирование/удаление/просмотр), кроме для создания его учетной записи это будет ваша роль по умолчанию для пользователей

затем создайте пользовательскую роль, допустим, «премиальный доступ» с разрешением для просмотра вашего контента (или что-то еще)

В настройках учетной записи добавьте свое настраиваемое поле («доступ») со значениями, которые вы хотите («ограничено», «премиум»).

/admin/config/people/accounts/fields 

Добавить модуль rulles и создать собственный rulle, что за счет создания/обновления, если field_access == премии затем обновить роль «премиум доступ».

После этого вы можете управлять пользователями ролей пользователей

OPTION2

Снова используя модуль rulles вы можете проверить, если ваш пользователь имеет значение, вы должны в своем профиле и перенаправить его на страницу ,

OPTION3

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'); 
    } 
}