У меня есть веб-сайт Drupal 7, который служит внутренней сетью компании. У меня также есть связанная система форм, которая работает за пределами Drupal. Я планирую перестроить эту систему форм под Laravel 4 (используя Doctrine 2 в качестве моего ORM, а не Eloquent).
Когда пользователь входит в Drupal 7, он / она также должен иметь возможность перейти в систему Laravel и иметь мгновенный доступ к внешним формам. Итак, вопрос: Как мне заставить Laravel получить учетные данные пользователя Drupal 7 (идентификатор сессии и хэш сессии) и использовать его в качестве аутентификации в этой системе? Это вообще возможно? Затем, очевидно, как только пользователь выходит из системы, Laravel должен знать об этом и перенаправить пользователя обратно для входа в Drupal.
Установите соединение с базой данных Drupal 7 в файле app / config / database.php Laravel:
'drupal' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'dpl',
'username' => 'user',
'password' => 'pass$5',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
Затем изнутри функции (в данном случае я создал класс под названием DrupalAuthorization), используйте фасад DB Laravel для вызова этого вновь созданного соединения следующим образом:
$users = DB::connection('drupal');
Наконец, просто используйте метод выбора Laravel для запуска запроса, собирающего информацию о сеансе пользователя Drupal:
$users = DB::connection('drupal')->select("SELECT uid, sid FROM d7_sessions WHERE hostname = ? AND uid > ? ORDER BY uid DESC", array($_SERVER["REMOTE_ADDR"], 0));
Других решений пока нет …