Skip to content

Commit

Permalink
MDL-17773 new get_login_url() function - fixes missing httpslogin tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
skodak committed Jan 2, 2009
1 parent 27df7ae commit 93f6698
Show file tree
Hide file tree
Showing 36 changed files with 121 additions and 117 deletions.
2 changes: 1 addition & 1 deletion admin/settings/users.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
$temp->add(new admin_setting_configselect('guestloginbutton', get_string('guestloginbutton', 'auth'),
get_string('showguestlogin', 'auth'), '1', array('0'=>get_string('hide'), '1'=>get_string('show'))));
$temp->add(new admin_setting_configtext('alternateloginurl', get_string('alternateloginurl', 'auth'),
get_string('alternatelogin', 'auth', htmlspecialchars($CFG->wwwroot.'/login/index.php')), ''));
get_string('alternatelogin', 'auth', htmlspecialchars(get_login_url())), ''));
$temp->add(new admin_setting_configtext('forgottenpasswordurl', get_string('forgottenpasswordurl', 'auth'),
get_string('forgottenpassword', 'auth'), ''));
$temp->add(new admin_setting_configtextarea('auth_instructions', get_string('instructions', 'auth'),
Expand Down
7 changes: 4 additions & 3 deletions backup/backup.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,23 @@
$cancel = optional_param( 'cancel' );
$launch = optional_param( 'launch' );

$loginurl = get_login_url();

if (!empty($id)) {
require_login($id);
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $id))) {
print_error('cannotuseadminadminorteacher', 'error', "$CFG->wwwroot/login/index.php");
print_error('cannotuseadminadminorteacher', 'error', $loginurl);
}
} else {
require_login();
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_SYSTEM))) {
print_error('cannotuseadmin', 'error', "$CFG->wwwroot/login/index.php");
print_error('cannotuseadmin', 'error', $loginurl);
}
}

if (!empty($to)) {
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $to))) {
print_error('cannotuseadminadminorteacher', 'error', "$CFG->wwwroot/login/index.php");
print_error('cannotuseadminadminorteacher', 'error', $loginurl);
}
}

Expand Down
8 changes: 5 additions & 3 deletions backup/backup_check.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,21 @@
//Check login
require_login();

$loginurl = get_login_url();

if (!empty($course->id)) {
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $course->id))) {
if (empty($to)) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
} else {
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $to))) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
}
}
}
} else {
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_SYSTEM))) {
print_error("cannotuseadmin", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadmin", '', $loginurl);
}
}

Expand Down
8 changes: 5 additions & 3 deletions backup/backup_execute.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,21 @@
//Check login
require_login();

$loginurl = get_login_url();

if (!empty($course->id)) {
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $course->id))) {
if (empty($to)) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
} else {
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $to))) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
}
}
}
} else {
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_SYSTEM))) {
print_error("cannotuseadmin", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadmin", '', $loginurl);
}
}

Expand Down
8 changes: 5 additions & 3 deletions backup/backup_form.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,21 @@
//Check login
require_login();

$loginurl = get_login_url();

if (!empty($course->id)) {
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $course->id))) {
if (empty($to)) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
} else {
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $to))) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
}
}
}
} else {
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_SYSTEM))) {
print_error("cannotuseadmin", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadmin", '', $loginurl);
}
}

Expand Down
8 changes: 5 additions & 3 deletions backup/restore.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,21 +61,23 @@
$to = $SESSION->restore->course_id;
}

$loginurl = get_login_url();

if (!empty($id)) {
require_login($id);
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_COURSE, $id))) {
if (empty($to)) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
} else {
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_COURSE, $to))
&& !has_capability('moodle/site:import', get_context_instance(CONTEXT_COURSE, $to))) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
}
}
}
} else {
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_SYSTEM))) {
print_error("cannotuseadmin", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadmin", '', $loginurl);
}
}

Expand Down
6 changes: 4 additions & 2 deletions backup/restore_check.html
Original file line number Diff line number Diff line change
Expand Up @@ -190,14 +190,16 @@
//Check login
require_login();

$loginurl = get_login_url();

//Check admin
if (!empty($id)) {
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_COURSE, $id))) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
}
} else {
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_SYSTEM))) {
print_error("cannotuseadmin", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadmin", '', $loginurl);
}
}

Expand Down
8 changes: 5 additions & 3 deletions backup/restore_execute.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,23 @@
//Check login
require_login();

$loginurl = get_login_url();

//Check admin
if (!empty($id)) {
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_COURSE, $id))) {
if (empty($to)) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
} else {
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_COURSE, $to))
&& !has_capability('moodle/site:import', get_context_instance(CONTEXT_COURSE, $to))) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
}
}
}
} else {
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_SYSTEM))) {
print_error("cannotuseadmin", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadmin", '', $loginurl);
}
}

Expand Down
6 changes: 4 additions & 2 deletions backup/restore_form.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,16 @@
//Check login
require_login();

$loginurl = get_login_url();

//Check admin
if (!empty($id)) {
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_COURSE, $id))) {
print_error('cannotuseadminadminorteacher', '', '$CFG->wwwroot/login/index.php');
print_error('cannotuseadminadminorteacher', '', $loginurl);
}
} else {
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_SYSTEM))) {
print_error('cannotuseadmin', '', '$CFG->wwwroot/login/index.php');
print_error('cannotuseadmin', '', $loginurl);
}
}

Expand Down
10 changes: 6 additions & 4 deletions backup/restore_precheck.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,24 @@

//Check login
require_login();


$loginurl = get_login_url();

//Check admin
if (!empty($id)) {
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_COURSE, $id))) {
if (empty($to)) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
} else {
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_COURSE, $to))
&& !has_capability('moodle/site:import', get_context_instance(CONTEXT_COURSE, $to))) {
print_error("cannotuseadminadminorteacher", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadminadminorteacher", '', $loginurl);
}
}
}
} else {
if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_SYSTEM))) {
print_error("cannotuseadmin", '', "$CFG->wwwroot/login/index.php");
print_error("cannotuseadmin", '', $loginurl);
}
}

Expand Down
2 changes: 1 addition & 1 deletion blocks/login/block_login.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ function get_content () {

if (!isloggedin() or isguestuser()) { // Show the block

$this->content->text .= "\n".'<form class="loginform" id="login" method="post" action="'.$wwwroot.'/login/index.php">';
$this->content->text .= "\n".'<form class="loginform" id="login" method="post" action="'.get_login_url().'">';

$this->content->text .= '<div class="c1 fld username"><label for="login_username">'.get_string('username').'</label>';
$this->content->text .= '<input type="text" name="username" id="login_username" value="'.s($username).'" /></div>';
Expand Down
2 changes: 1 addition & 1 deletion blocks/tags/block_tags.php
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ function get_content() {
} else {
//if not logged in
$this->content->footer = '<hr />'.get_string('please', $tagslang).'
<a href="'.$CFG->wwwroot.'/login/index.php">'.get_string('login', $tagslang).'
<a href="'.get_login_url().'">'.get_string('login', $tagslang).'
</a> '.get_string('tagunits', $tagslang);
}
}
Expand Down
6 changes: 1 addition & 5 deletions course/enrol.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,8 @@
$loginasguest = optional_param('loginasguest', 0, PARAM_BOOL); // hmm, is this still needed?
if (!isloggedin()) {
$wwwroot = $CFG->wwwroot;
if (!empty($CFG->loginhttps)) {
$wwwroot = str_replace('http:','https:', $wwwroot);
}
// do not use require_login here because we are usually comming from it
redirect($wwwroot.'/login/index.php');
redirect(get_login_url());
}

if (!$course = $DB->get_record('course', array('id'=>$id))) {
Expand Down
7 changes: 1 addition & 6 deletions enrol/manual/enrol.html
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,7 @@

if (isguestuser()) {
print_box_start('centerpara');
if (empty($CFG->loginhttps)) {
$loginurl = $CFG->wwwroot .'/login/index.php';
} else {
$wwwroot = str_replace('http:','https:', $CFG->wwwroot);
$loginurl = $wwwroot .'/login/index.php';
}
$loginurl = get_login_url();
print_single_button($loginurl, null, get_string('login'));
print_box_end();
}
Expand Down
45 changes: 27 additions & 18 deletions lib/moodlelib.php
Original file line number Diff line number Diff line change
Expand Up @@ -1861,6 +1861,27 @@ function course_setup($courseorid=0) {

}

/**
* Returns full login url.
*
* @param bool $loginguest add login guest param
* @return string login url
*/
function get_login_url($loginguest=false) {
global $CFG;

if (empty($CFG->loginhttps) or $loginguest) { //do not require https for guest logins
$loginguest = $loginguest ? '?loginguest=true' : '';
$url = "$CFG->wwwroot/login/index.php$loginguest";

} else {
$wwwroot = str_replace('http:','https:', $CFG->wwwroot);
$url = "$wwwroot/login/index.php";
}

return $url;
}

/**
* This function checks that the current user is logged in and has the
* required privileges
Expand Down Expand Up @@ -1906,17 +1927,12 @@ function require_login($courseorid=0, $autologinguest=true, $cm=null, $setwantsu
$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);
$loginguest = true;
} else {
$wwwroot = str_replace('http:','https:', $CFG->wwwroot);
redirect($wwwroot .'/login/index.php');
$loginguest = false;
}
exit;
redirect(get_login_url($loginguest));
exit; // never reached
}

/// loginas as redirection if needed
Expand Down Expand Up @@ -1956,13 +1972,6 @@ function require_login($courseorid=0, $autologinguest=true, $cm=null, $setwantsu
redirect($CFG->wwwroot .'/user/edit.php?id='. $USER->id .'&amp;course='. SITEID);
}

/// Make sure current IP matches the one for this session (if required)
if (!empty($CFG->tracksessionip)) {
if ($USER->sessionIP != md5(getremoteaddr())) {
print_error('sessionipnomatch', 'error');
}
}

/// Make sure the USER has a sesskey set up. Used for checking script parameters.
sesskey();

Expand Down Expand Up @@ -2069,7 +2078,7 @@ function require_login($courseorid=0, $autologinguest=true, $cm=null, $setwantsu
case 1: /// Guests always allowed
if (!has_capability('moodle/course:view', $COURSE->context)) { // Prohibited by capability
print_header_simple();
notice(get_string('guestsnotallowed', '', format_string($COURSE->fullname)), "$CFG->wwwroot/login/index.php");
notice(get_string('guestsnotallowed', '', format_string($COURSE->fullname)), get_login_url());
}
if (!empty($cm) and !$cm->visible) { // Not allowed to see module, send to course page
redirect($CFG->wwwroot.'/course/view.php?id='.$cm->course,
Expand All @@ -2094,7 +2103,7 @@ function require_login($courseorid=0, $autologinguest=true, $cm=null, $setwantsu
print_header_simple('', '',
build_navigation(array(array('name' => $strloggedinasguest, 'link' => null, 'type' => 'misc'))));
if (empty($USER->access['rsw'][$COURSE->context->path])) { // Normal guest
notice(get_string('guestsnotallowed', '', format_string($COURSE->fullname)), "$CFG->wwwroot/login/index.php");
notice(get_string('guestsnotallowed', '', format_string($COURSE->fullname)), get_login_url());
} else {
notify(get_string('guestsnotallowed', '', format_string($COURSE->fullname)));
echo '<div class="notifyproblem">'.switchroles_form($COURSE->id).'</div>';
Expand Down
23 changes: 23 additions & 0 deletions lib/sessionlib.php
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,29 @@ protected function check_user_initialised() {
session_set_user($user);
}

protected function check_security() {
global $CFG;

if (!empty($_SESSION['USER']->id)) {
/// Make sure current IP matches the one for this session (if required)
$remoteaddr = getremoteaddr();

if (empty($_SESSION['USER']->sessionip)) {
$_SESSION['USER']->sessionip = $remoteaddr;
}

if ($_SESSION['USER']->sessionip != $remoteaddr) {
if (!is_guestuser($_SESSION['USER'])) {
$link = '';
} else {

}
print_error('sessionipnomatch', 'error');
}
}

}

/**
* Terminates active moodle session
*/
Expand Down
Loading

0 comments on commit 93f6698

Please sign in to comment.