Moved login.php to index.php in shibboleth
This commit is contained in:
@@ -32,7 +32,7 @@ Moodle Configuration
|
||||
How the Shibboleth authentication works
|
||||
--------------------------------------------------------------------------------
|
||||
For a user to get Shibboleth authenticated in Moodle he first must get
|
||||
redirected to moodle/auth/shibboleth/login.php . When Shibboleth is active
|
||||
redirected to moodle/auth/shibboleth/index.php . When Shibboleth is active
|
||||
this happens automatically from the normal login page.
|
||||
If the user is successfully Shibboleth authenticated he also is authenticated in
|
||||
Moodle
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
<?php // $Id$
|
||||
// Designed to be redirected from moodle/login/index.php
|
||||
|
||||
require('../../config.php');
|
||||
require('lib.php');
|
||||
|
||||
if (isloggedin()) { // Nothing to do
|
||||
redirect($CFG->wwwroot.'/index.php');
|
||||
}
|
||||
|
||||
/// If shibboleth login is enforced, directly go to the authentication page
|
||||
|
||||
if ($CFG->auth == 'shibboleth' and !empty($CFG->auth_shib_only)) {
|
||||
if (empty($CFG->shib_user_attribute)) {
|
||||
error('Shibboleth authentication (shib_user_attribute) is not set up correctly');
|
||||
}
|
||||
if (empty($_SERVER[$CFG->shib_user_attribute])) {
|
||||
error('Shibboleth authentication is not set up correctly (could not find $_SERVER[\''.$CFG->shib_user_attribute.'\'])');
|
||||
}
|
||||
}
|
||||
|
||||
/// If we can find some Shibboleth information, save it in session and return to main login page
|
||||
|
||||
if (!empty($_SERVER[$CFG->shib_user_attribute])) { // Shibboleth auto-login
|
||||
$frm->username = $_SERVER[$CFG->shib_user_attribute];
|
||||
$frm->password = substr(base64_encode($_SERVER[$CFG->shib_user_attribute]),0,8);
|
||||
// The random password consists of the first 8 letters of the base 64 encoded user ID
|
||||
// This password is never used unless the user account is converted to manual
|
||||
|
||||
|
||||
/// Check if the user has actually submitted login data to us
|
||||
|
||||
if ($user = authenticate_user_login($frm->username, $frm->password)) {
|
||||
|
||||
// Let's get them all set up.
|
||||
$USER = $user;
|
||||
|
||||
add_to_log(SITEID, 'user', 'login', "view.php?id=$USER->id&course=".SITEID, $USER->id, 0, $USER->id);
|
||||
|
||||
update_user_login_times();
|
||||
set_moodle_cookie($USER->username);
|
||||
set_login_session_preferences();
|
||||
|
||||
if (user_not_fully_set_up($USER)) {
|
||||
$urltogo = $CFG->wwwroot.'/user/edit.php?id='.$USER->id.'&course='.SITEID;
|
||||
// We don't delete $SESSION->wantsurl yet, so we get there later
|
||||
|
||||
} else if (isset($SESSION->wantsurl) and (strpos($SESSION->wantsurl, $CFG->wwwroot) === 0)) {
|
||||
$urltogo = $SESSION->wantsurl; /// Because it's an address in this site
|
||||
unset($SESSION->wantsurl);
|
||||
|
||||
} else {
|
||||
$urltogo = $CFG->wwwroot.'/'; /// Go to the standard home page
|
||||
unset($SESSION->wantsurl); /// Just in case
|
||||
}
|
||||
|
||||
redirect($urltogo);
|
||||
}
|
||||
}
|
||||
|
||||
$SESSION->shibboleth_checked = true; // This will stop us bouncing back here
|
||||
|
||||
redirect($CFG->wwwroot.'/login/index.php');
|
||||
|
||||
?>
|
||||
@@ -14,7 +14,7 @@ function auth_user_login ($username, $password) {
|
||||
/// If we are not, then the server is probably set to not be Shibboleth-only
|
||||
/// and the user has used the normal login screen, so we redirect to the shibboleth
|
||||
/// directory for a proper check
|
||||
redirect($CFG->wwwroot.'/auth/shibboleth/login.php';
|
||||
redirect($CFG->wwwroot.'/auth/shibboleth/index.php';
|
||||
|
||||
/// There's no point doing anything further here
|
||||
exit;
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
if (!empty($SESSION->shibboleth_checked)) { // Just come from there
|
||||
unset($SESSION->shibboleth_checked);
|
||||
} else {
|
||||
redirect($CFG->wwwroot.'/auth/shibboleth/login.php');
|
||||
redirect($CFG->wwwroot.'/auth/shibboleth/index.php');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user