Patrice, la lecture du code de require_login() est sans appel,
Hors de la possibilité de "logguer automatiquement les invités" dans les règles utilisateur, il n'est pas possiblepour un utilisateur externe de ne voir autre chose que le cours 1, soit la page d'accueil.
La connexion à laplate-forme avec le "compte invité" est donc obligatoire pour pouvoir entrer, sans passer par l'écran de login, dans le contenu d'un cours même ouvert aux invités sans clef.
La cause en est cette séquence :
if (!isloggedin()) {
//NOTE: $USER->site check was obsoleted by session test cookie,
// $USER->confirmed test is in login/index.php
if ($setwantsurltome) {
$SESSION->wantsurl = $FULLME;
}
if (!empty($_SERVER['HTTP_REFERER'])) {
$SESSION->fromurl = $_SERVER['HTTP_REFERER'];
}
if ($autologinguest and !empty($CFG->guestloginbutton) and !empty($CFG->autologinguests) and ($COURSE->id == SITEID or $COURSE->guest) ) {
$loginguest = '?loginguest=true';
} else {
$loginguest = '';
}
if (empty($CFG->loginhttps) or $loginguest) { //do not require https for guest logins
redirect($CFG->wwwroot .'/login/index.php'. $loginguest);
} else {
$wwwroot = str_replace('http:','https:', $CFG->wwwroot);
redirect($wwwroot .'/login/index.php');
}
exit;
}
Acheminant de manière incontournable dans la page de login TOUT utilisateur non connecté, soit pour lui soumettre le formulaire, soit pour lui attribuer l'Utilisateur "invité".
L'exit final ne donne aucune échappatoire.