Drupal - ограничение доступа для пользователей - PullRequest
2 голосов
/ 01 февраля 2012

Мне нужно иметь возможность добавлять страницы, а затем ограничивать их для разных типов пользователей: анонимный, частичный и полный.

При регистрации пользователь может ввести все данные, чтобы получить полную регистрацию, или только половину своих данных, например, не нужно вводить адрес, телефон и т. Д., Чтобы получить частичный тип регистрации.

Тогда при добавлении страницы мне нужно будет выбрать, иметь ли к ней доступ анонимный, частичный и / или полный доступ.Если они этого не делают, то все равно необходимо показать сводку страницы в виде тизера, но у них не будет доступа к основному контенту, пока они не зарегистрируются и не войдут в систему.

Я установил Simple Accessплагин, который позволяет мне создавать группы, но не уверен, как реализовать регистрационную форму, чтобы, если пользователь только вводит обязательные поля, он становится Частичным пользователем, в противном случае он становится Полным пользователем.Какие-либо предложения?

Ответы [ 3 ]

3 голосов
/ 01 февраля 2012

Вы можете использовать модуль Rules .Создайте триггерное правило, которое запускается при создании нового пользователя, затем проверьте поля и, наконец, назначьте пользователю соответствующую роль.

2 голосов
/ 02 февраля 2012

Я закончил тем, что использовал ловушку, чтобы понять, является ли пользователь обычным авторизованным пользователем или полноценным пользователем.Может кто-нибудь, пожалуйста, проверьте правильность крюка ниже?Я новичок в Drupal, поэтому не уверен, влияют ли какие-либо другие таблицы на добавление / удаление ролей.

function module_user_update(&$edit, $account, $category) {

$dob = field_get_items('user', $account, 'field_dob');
$address1 = field_get_items('user', $account, 'field_address1');
$address2 = field_get_items('user', $account, 'field_address2');
$address3 = field_get_items('user', $account, 'field_address3');
$city = field_get_items('user', $account, 'field_city');
$postcode = field_get_items('user', $account, 'field_postcode');
$county = field_get_items('user', $account, 'field_county');
$telephone = field_get_items('user', $account, 'field_telephone');


    if(empty($dob[0]['value']) || empty($address1[0]['value']) || empty($address2[0]['value']) || empty($address3[0]['value']) || empty($city[0]['value']) || empty($postcode[0]['value']) || empty($county[0][$
    {
            $userid = $account->uid;
            //remove full role from db so user is only an authorised user
            db_query("DELETE FROM {users_roles} WHERE uid = '".$userid."' && rid = '5'");
    } else {
            $userid = $account->uid;
            //delete full role if it already exists so it doesnt go in twice
            db_query("DELETE FROM {users_roles} WHERE uid = '".$userid."' && rid = '5'");
            //insert full role
            db_query("INSERT INTO {users_roles} (rid, uid) VALUES ('5',$userid)");
    }

}

1 голос
/ 01 февраля 2012

Вы бы хорошо посмотрели некоторые из начальных уроков по Drupal.Роли, правила, триггеры и CCK (и content_permissions) - это те модули / концепции, о которых вы будете изучать.

Они вооружат вас тем, что вам нужно.CCK позволит вам создавать определенные типы контента, content_permissions (входит в CCK) позволит вам настроить видимость в зависимости от роли пользователя, роли позволят вам создать новую группу пользователей, и, как сказал @ Laxman13, правилапозволит вам установить правила для выполнения того, что нужно сделать (т.е. добавить этого пользователя в роль X), а триггеры предоставят вам функциональные возможности для этого.

...