drupal - проверка пользователя сессии в отдельном скрипте модуле - проверка прав

посвящается КАМ-у =)

Общая идея проверки пользователя в строннем (отдельном) скрипте средствами друпала выглядит как-то так:

  • 1) стартуем друпал вручную (потому что вы обращаетесь к скрипту не через index.php друпала , например прямо указывая директорию на сервере - если же черещ index, то можно сказу обращаться к API друпала) - чтобы получить доступ к API
  • 2) использование готовых функций друпала для проверки роли данного пользователя
chdir('./../../../../'); // for relative path includes to work
include_once "includes/bootstrap.inc"; // или просто тут прописать норм. путь
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); // стартуем друпал
global $user; // после старта получаем доступ
if(in_array('administrator', $user->roles)) { // эта или любая другая проверка
     // тут код стороннего скрипта (модуля)
}

(взял отсюда)

Проверка может быть и иной, например:

// если юзер на авторизован
if($user->uid == 0) { // у неавториз. пользоватьля id = 0

// тут код стороннего скрипта (модуля)
// dsm("you are anonymous"); // dsm - выводит сообщение в месте для сообщений.
// krumo($user); // krumo - выводит содержимое объекта $user вверху в виде структурированного дерева
} 

гугл-ответы: otvety.google.ru/otvety/thread?tid=37776dee9b784e4e

Если скомбинировать то что выше - типа вам нужны только авторизированные пользователи, то "примерный" код будет выглядеть как-то так (за рабочесть в разных версиях не ручаюсь):

include_once "./includes/bootstrap.inc"; // или просто тут прописать норм. путь
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); // стартуем друпал
global $user; // после старта получаем доступ
if ($user->uid > 0) { // если это пользователь, причём авторизировавшийсял, то... 
   // ...то запускаем скрипт предназначенный для пользователей
} else 
   echo "а ты как здесь оказался?! давай - до свиданья!"; // типа не пускаем