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