Skip to content

Commit

Permalink
MDL-8590 auth cleanup - part 7 and MDL-8598; backported from HEAD
Browse files Browse the repository at this point in the history
  • Loading branch information
skodak committed Feb 21, 2007
1 parent 20f2564 commit ea40ec3
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 23 deletions.
2 changes: 2 additions & 0 deletions lang/en_utf8/auth.php
Expand Up @@ -312,6 +312,8 @@
$string['instructions'] = 'Instructions';
$string['internal'] = 'Internal';
$string['md5'] = 'MD5 hash';
$string['nopasswordchange'] = 'Password can not be changed';
$string['nopasswordchangeforced'] ='You cannot proceed without changing your password, however there is no available page for changing it. Please contact your Moodle Administrator.';
$string['passwordhandling'] = 'Password field handling';
$string['plaintext'] = 'Plain text';
$string['selfregistration'] = 'Self registration';
Expand Down
25 changes: 25 additions & 0 deletions lang/en_utf8/moodle.php
Expand Up @@ -484,6 +484,31 @@
$string['emailpasswordconfirmsent'] = 'An email should have been sent to your address at <b>$a</b>.
<br />It contains easy instructions to confirm and complete this password change.
If you continue to have difficulty, contact the site administrator.';
$string['emailpasswordchangeinfo'] = 'Hi $a->firstname,
Someone (probably you) has requested a new password for your
account on \'$a->sitename\'.
To change your password, please go to the following web address:
$a->link
In most mail programs, this should appear as a blue link
which you can just click on. If that doesn\'t work,
then cut and paste the address into the address
line at the top of your web browser window.
If you need help, please contact the site administrator,
$a->admin';
$string['emailpasswordchangeinfofail'] = 'Hi $a->firstname,
Someone (probably you) has requested a new password for your
account on \'$a->sitename\'.
Unfortunately passwords can not be reset on this site,
please contact the site administrator,
$a->admin';
$string['emailpasswordchangeinfosubject'] = '$a: Change password information';
$string['emailpasswordsent'] = 'Thank you for confirming the change of password.
An email containing your new password has been sent to your address at<br /><b>$a->email</b>.<br />
The new password was automatically generated - you might like to
Expand Down
3 changes: 0 additions & 3 deletions lib/db/upgrade.php
Expand Up @@ -138,9 +138,6 @@ function xmldb_main_upgrade($oldversion=0) {
if (strpos($k, 'auth_') !== 0) {
continue;
}
if ($k == 'auth_instructions') {
continue; //keep as global auth option
}
$authsetting = substr($k, 5);
foreach ($authplugins as $auth) {
if (strpos($authsetting, $auth) !== 0) {
Expand Down
77 changes: 57 additions & 20 deletions lib/moodlelib.php
Expand Up @@ -1655,18 +1655,20 @@ function require_login($courseorid=0, $autologinguest=true, $cm=null) {
if (!empty($USER->preference['auth_forcepasswordchange']) && empty($USER->realuser)) {
if ($userauth->can_change_password()) {
$SESSION->wantsurl = $FULLME;
if (empty($CFG->loginhttps)) {
redirect($CFG->wwwroot .'/login/change_password.php');
if (method_exists($userauth, 'change_password_url') and $userauth->change_password_url()) {
//use plugin custom url
redirect($userauth->change_password_url());
} else {
$wwwroot = str_replace('http:','https:', $CFG->wwwroot);
redirect($wwwroot .'/login/change_password.php');
//use moodle internal method
if (empty($CFG->loginhttps)) {
redirect($CFG->wwwroot .'/login/change_password.php');
} else {
$wwwroot = str_replace('http:','https:', $CFG->wwwroot);
redirect($wwwroot .'/login/change_password.php');
}
}
} else if($userauth->change_password_url()) {
redirect($userauth->change_password_url());
} else {
error('You cannot proceed without changing your password.
However there is no available page for changing it.
Please contact your Moodle Administrator.');
error(get_strin('nopasswordchangeforced', 'auth'));
}
}

Expand Down Expand Up @@ -2354,18 +2356,12 @@ function is_enabled_auth($auth) {
* Returns an authentication plugin instance.
*
* @uses $CFG
* @param string $auth Form of authentication required. Defaults to the
* global setting in {@link $CFG}.
* @param string $auth name of authentication plugin
* @return object An instance of the required authentication plugin.
*/
function get_auth_plugin($auth = '') {
function get_auth_plugin($auth) {
global $CFG;

// use the manual if not specified
if (empty($auth)) {
$auth = 'manual';
}

// check the plugin exists first
if (! exists_auth_plugin($auth)) {
error("Authentication plugin '$auth' not found.");
Expand All @@ -2384,7 +2380,6 @@ function get_auth_plugin($auth = '') {
* @uses $CFG
* @param string $auth Form of authentication required
* @return bool
* @todo Outline auth types and provide code example
*/
function is_internal_auth($auth) {
$authplugin = get_auth_plugin($auth); // throws error if bad $auth
Expand Down Expand Up @@ -3546,6 +3541,48 @@ function send_password_change_confirmation_email($user) {

}

/**
* send_password_change_info.
*
* @uses $CFG
* @param user $user A {@link $USER} object
* @return bool|string Returns "true" if mail was sent OK, "emailstop" if email
* was blocked by user and "false" if there was another sort of error.
*/
function send_password_change_info($user) {

global $CFG;

$site = get_site();
$from = get_admin();

$data = new object();
$data->firstname = $user->firstname;
$data->sitename = $site->fullname;
$data->admin = fullname($from).' ('. $from->email .')';

$userauth = get_auth_plugin($user->auth);
if ($userauth->can_change_password() and method_exists($userauth, 'change_password_url') and $userauth->change_password_url()) {
// we have some external url for password cahnging
$data->link .= $userauth->change_password_url();

} else {
//no way to change password, sorry
$data->link = '';
}

if (!empty($data->link)) {
$message = get_string('emailpasswordchangeinfo', '', $data);
$subject = get_string('emailpasswordchangeinfosubject', '', $site->fullname);
} else {
$message = get_string('emailpasswordchangeinfofail', '', $data);
$subject = get_string('emailpasswordchangeinfosubject', '', $site->fullname);
}

return email_to_user($user, $from, $subject, $message);

}

/**
* Check that an email is allowed. It returns an error message if there
* was a problem.
Expand Down Expand Up @@ -4029,8 +4066,8 @@ function clean_filename($string) {
function current_language() {
global $CFG, $USER, $SESSION, $COURSE;

if (!empty($OURSE->lang)) { // Course language can override all other settings for this page
$return = $OURSE->lang;
if ($COURSE->id != SITEID and !empty($COURSE->lang)) { // Course language can override all other settings for this page
$return = $COURSE->lang;

} else if (!empty($SESSION->lang)) { // Session language can override other settings
$return = $SESSION->lang;
Expand Down

0 comments on commit ea40ec3

Please sign in to comment.