Создайте модуль Drupal 7 с помощью меню.Хук меню должен принимать имя пользователя и пароль в качестве переменных $ _POST, а затем следовать пути аутентификации user_login () .
Таким образом, по сути вы получите:
function my_module_authentication_menu_hook() {
// Note anywhere below that I put return FALSE you should return a failed auth response.
// Where there is a return TRUE you should return a successful auth response.
// The formatting of the auth response is up to you with how your Moodle call will react.
if (!isset($_POST['username']) || !isset($_POST['password'])) {
return FALSE;
}
$username = $_POST['username'];
$password = $_POST['password'];
// Functionality from user_login_name_validate().
if (user_is_blocked($username)) {
return FALSE;
}
// Functionality from user_login_authenticate_validate().
// You should add flood handling in here as well, but it can not be IP based, unless you
// supply the IP of the user through your Moodle functionality.
if (user_authenticate($username, $password) === FALSE) {
return FALSE;
}
// See user_login_final_validate() and implement failed login functionality before success.
return TRUE;
}
Другой вариант, который я не могу с чистой совестью рекомендовать, - это если вы не хотите маршрутизировать Drupal и хотите напрямую обращаться к базе данных.Вам нужно будет воспроизвести код user_check_password () вместе с зависимым кодом _password_crypt (), _password_get_count_log2 (), _password_base64_encode () и т. Д. Вам также нужно будет воспроизвести функциональность, чтобы определить, заблокирован ли пользователь или не прошел проверку подлинности.Вам также необходимо убедиться, что пользователю разрешено войти в систему с воспроизведением функциональности user_login_default_validators ().Затем, если какой-либо из этих кодов обновится в ядре Drupal, вам нужно будет обновить его снова.Я действительно рекомендую маршрутизацию через Drupal по причинам обслуживания.