Хранение cookie Moodle после закрытия браузера
В системе дистанционного обучения (СДО) Moodle по-умолчанию есть одна особенность: после закрытия браузера и повторного входа — система снова запросит пароль. Это не всегда удобно. Происходит это из-за того, что cookie хранятся только до закрытия браузера. Немного изучив исходные тексты системы, я нашёл как это можно легко исправить.
Необходимо открыть файл lib\classes\session\manager.php и найти в нём строки:
$sessionoptions = [ 'lifetime' => 0, 'path' => $CFG->sessioncookiepath, 'domain' => $CFG->sessioncookiedomain, 'secure' => $cookiesecure, 'httponly' => $CFG->cookiehttponly, ]; if (self::should_use_samesite_none()) { // If $samesite is empty, we don't want there to be any SameSite attribute. $sessionoptions['samesite'] = 'None'; } session_set_cookie_params($sessionoptions);
Необходимо изменить параметр lifetime на необходимое время жизни куки (в секундах). Например, 345600 — четверо суток:
$sessionoptions = [ 'lifetime' => 345600, 'path' => $CFG->sessioncookiepath, 'domain' => $CFG->sessioncookiedomain, 'secure' => $cookiesecure, 'httponly' => $CFG->cookiehttponly, ]; if (self::should_use_samesite_none()) { // If $samesite is empty, we don't want there to be any SameSite attribute. $sessionoptions['samesite'] = 'None'; } session_set_cookie_params($sessionoptions);
Это значит, что если пользователь не будет заходить в систему больше этого времени, то только тогда будет запрошен пароль на вход.