Как сделать автоматический вход пользователя в MOODLE
У меня есть портал под названием xyz.com и сайт Moodle под названием yzx.com. У меня есть несколько пользователей на обоих сайтах, которые имеют одинаковые имена пользователей и пароли. То, что я хочу, это когда пользователь входит на сайт, не принадлежащий Moodle, который называется xyz.com, он должен автоматически войти в систему для того же пользователя на сайте yzx.com, то есть на сайте Moodle.
Пожалуйста, помогите мне, как я могу сделать curl или API-запрос для Moodle, чтобы он автоматически входил в текущий браузер. В Moodle есть функция user_login($username,$pass), но я не знаю, как ее использовать, так как я новичок в Moodle.
2 ответа
Я нашел решение, и чтобы помочь другим, я отправляю этот ответ сам. Вы можете использовать функцию Moodles в папке Moodle, с помощью которой я создал API.
<?php
require('config.php');
$name=$_REQUEST['username'];
$password=$_REQUEST['password'];
$dashboard = $CFG->wwwroot;
$user = authenticate_user_login($name, $password);
if(complete_user_login($user))
{
$actual_link = "http://$_SERVER[HTTP_HOST]/login/logout.php?sesskey=".$user->sesskey;
echo json_encode(['user'=>$user,'logout'=>$actual_link],true); die;
}
else
{
echo "not login"; die;
}
?>
создать этот файл где-нибудь в Moodle, я создал его в корне Moodle и нажал на него, используя curl, с параметрами get или post в качестве имени пользователя и пароля.
То, что вы пытаетесь сделать (автоматический вход в систему), не рекомендуется (может вызвать угрозу безопасности), когда у вас есть 2 разных домена, таких как xyz.com и yzx.com. Это может быть достигнуто, если у вас есть механизм поддоменов.
Допустим, ваш основной сайт работает на xyz.com, а moodle - на moodle.xyz.com, а затем, когда пользователь входит на xyz.com, вы можете создать cookie для домена, например *.xyz.com
и когда вы перейдете к поддомену moodle (с некоторыми изменениями), он прочитает cookie и автоматически войдет в систему. Файлы cookie могут быть общими для всех основных и поддоменов, но не для разных доменов. Мы должны убедиться, что имя cookie совпадает, или, возможно, потребуется изменить некоторый код в Moodle для достижения этой цели.
Надеюсь, это поможет!