From 9696bd8966e9920bc49fddc6468a3b7f7cc58d54 Mon Sep 17 00:00:00 2001 From: skodak Date: Wed, 21 Feb 2007 21:48:48 +0000 Subject: [PATCH] MDL-8590 auth cleanup - part 7 and MDL-8598 --- lang/en_utf8/auth.php | 2 ++ lang/en_utf8/moodle.php | 25 +++++++++++++ lib/db/upgrade.php | 3 -- lib/moodlelib.php | 77 ++++++++++++++++++++++++++++++----------- 4 files changed, 84 insertions(+), 23 deletions(-) diff --git a/lang/en_utf8/auth.php b/lang/en_utf8/auth.php index a5384ab53d..fd7d1a1df9 100644 --- a/lang/en_utf8/auth.php +++ b/lang/en_utf8/auth.php @@ -312,6 +312,8 @@ $string['guestloginbutton'] = 'Guest login button'; $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'; diff --git a/lang/en_utf8/moodle.php b/lang/en_utf8/moodle.php index d720199f64..fcfb467174 100644 --- a/lang/en_utf8/moodle.php +++ b/lang/en_utf8/moodle.php @@ -484,6 +484,31 @@ If you continue to have difficulty, please contact the site administrator.

'; $string['emailpasswordconfirmsent'] = 'An email should have been sent to your address at $a.
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
$a->email.
The new password was automatically generated - you might like to diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index 639078d72d..dbf4847742 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -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) { diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 4293915653..ba37c87790 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -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')); } } @@ -2376,18 +2378,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."); @@ -2406,7 +2402,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 @@ -3568,6 +3563,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. @@ -4051,8 +4088,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; -- 2.39.5