[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/auth/email/ -> auth.php (source)

   1  <?php
   2  // This file is part of Moodle - http://moodle.org/
   3  //
   4  // Moodle is free software: you can redistribute it and/or modify
   5  // it under the terms of the GNU General Public License as published by
   6  // the Free Software Foundation, either version 3 of the License, or
   7  // (at your option) any later version.
   8  //
   9  // Moodle is distributed in the hope that it will be useful,
  10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  // GNU General Public License for more details.
  13  //
  14  // You should have received a copy of the GNU General Public License
  15  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  16  
  17  /**
  18   * Authentication Plugin: Email Authentication
  19   *
  20   * @author Martin Dougiamas
  21   * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
  22   * @package auth_email
  23   */
  24  
  25  defined('MOODLE_INTERNAL') || die();
  26  
  27  require_once($CFG->libdir.'/authlib.php');
  28  
  29  /**
  30   * Email authentication plugin.
  31   */
  32  class auth_plugin_email extends auth_plugin_base {
  33  
  34      /**
  35       * Constructor.
  36       */
  37      function auth_plugin_email() {
  38          $this->authtype = 'email';
  39          $this->config = get_config('auth/email');
  40      }
  41  
  42      /**
  43       * Returns true if the username and password work and false if they are
  44       * wrong or don't exist.
  45       *
  46       * @param string $username The username
  47       * @param string $password The password
  48       * @return bool Authentication success or failure.
  49       */
  50      function user_login ($username, $password) {
  51          global $CFG, $DB;
  52          if ($user = $DB->get_record('user', array('username'=>$username, 'mnethostid'=>$CFG->mnet_localhost_id))) {
  53              return validate_internal_user_password($user, $password);
  54          }
  55          return false;
  56      }
  57  
  58      /**
  59       * Updates the user's password.
  60       *
  61       * called when the user password is updated.
  62       *
  63       * @param  object  $user        User table object  (with system magic quotes)
  64       * @param  string  $newpassword Plaintext password (with system magic quotes)
  65       * @return boolean result
  66       *
  67       */
  68      function user_update_password($user, $newpassword) {
  69          $user = get_complete_user_data('id', $user->id);
  70          // This will also update the stored hash to the latest algorithm
  71          // if the existing hash is using an out-of-date algorithm (or the
  72          // legacy md5 algorithm).
  73          return update_internal_user_password($user, $newpassword);
  74      }
  75  
  76      function can_signup() {
  77          return true;
  78      }
  79  
  80      /**
  81       * Sign up a new user ready for confirmation.
  82       * Password is passed in plaintext.
  83       *
  84       * @param object $user new user object
  85       * @param boolean $notify print notice with link and terminate
  86       */
  87      function user_signup($user, $notify=true) {
  88          global $CFG, $DB;
  89          require_once($CFG->dirroot.'/user/profile/lib.php');
  90          require_once($CFG->dirroot.'/user/lib.php');
  91  
  92          $user->password = hash_internal_user_password($user->password);
  93          if (empty($user->calendartype)) {
  94              $user->calendartype = $CFG->calendartype;
  95          }
  96  
  97          $user->id = user_create_user($user, false, false);
  98  
  99          // Save any custom profile field information.
 100          profile_save_data($user);
 101  
 102          // Trigger event.
 103          \core\event\user_created::create_from_userid($user->id)->trigger();
 104  
 105          if (! send_confirmation_email($user)) {
 106              print_error('auth_emailnoemail','auth_email');
 107          }
 108  
 109          if ($notify) {
 110              global $CFG, $PAGE, $OUTPUT;
 111              $emailconfirm = get_string('emailconfirm');
 112              $PAGE->navbar->add($emailconfirm);
 113              $PAGE->set_title($emailconfirm);
 114              $PAGE->set_heading($PAGE->course->fullname);
 115              echo $OUTPUT->header();
 116              notice(get_string('emailconfirmsent', '', $user->email), "$CFG->wwwroot/index.php");
 117          } else {
 118              return true;
 119          }
 120      }
 121  
 122      /**
 123       * Returns true if plugin allows confirming of new users.
 124       *
 125       * @return bool
 126       */
 127      function can_confirm() {
 128          return true;
 129      }
 130  
 131      /**
 132       * Confirm the new user as registered.
 133       *
 134       * @param string $username
 135       * @param string $confirmsecret
 136       */
 137      function user_confirm($username, $confirmsecret) {
 138          global $DB;
 139          $user = get_complete_user_data('username', $username);
 140  
 141          if (!empty($user)) {
 142              if ($user->confirmed) {
 143                  return AUTH_CONFIRM_ALREADY;
 144  
 145              } else if ($user->auth != $this->authtype) {
 146                  return AUTH_CONFIRM_ERROR;
 147  
 148              } else if ($user->secret == $confirmsecret) {   // They have provided the secret key to get in
 149                  $DB->set_field("user", "confirmed", 1, array("id"=>$user->id));
 150                  if ($user->firstaccess == 0) {
 151                      $DB->set_field("user", "firstaccess", time(), array("id"=>$user->id));
 152                  }
 153                  return AUTH_CONFIRM_OK;
 154              }
 155          } else {
 156              return AUTH_CONFIRM_ERROR;
 157          }
 158      }
 159  
 160      function prevent_local_passwords() {
 161          return false;
 162      }
 163  
 164      /**
 165       * Returns true if this authentication plugin is 'internal'.
 166       *
 167       * @return bool
 168       */
 169      function is_internal() {
 170          return true;
 171      }
 172  
 173      /**
 174       * Returns true if this authentication plugin can change the user's
 175       * password.
 176       *
 177       * @return bool
 178       */
 179      function can_change_password() {
 180          return true;
 181      }
 182  
 183      /**
 184       * Returns the URL for changing the user's pw, or empty if the default can
 185       * be used.
 186       *
 187       * @return moodle_url
 188       */
 189      function change_password_url() {
 190          return null; // use default internal method
 191      }
 192  
 193      /**
 194       * Returns true if plugin allows resetting of internal password.
 195       *
 196       * @return bool
 197       */
 198      function can_reset_password() {
 199          return true;
 200      }
 201  
 202      /**
 203       * Returns true if plugin can be manually set.
 204       *
 205       * @return bool
 206       */
 207      function can_be_manually_set() {
 208          return true;
 209      }
 210  
 211      /**
 212       * Prints a form for configuring this authentication plugin.
 213       *
 214       * This function is called from admin/auth.php, and outputs a full page with
 215       * a form for configuring this plugin.
 216       *
 217       * @param array $page An object containing all the data for this page.
 218       */
 219      function config_form($config, $err, $user_fields) {
 220          include  "config.html";
 221      }
 222  
 223      /**
 224       * Processes and stores configuration data for this authentication plugin.
 225       */
 226      function process_config($config) {
 227          // set to defaults if undefined
 228          if (!isset($config->recaptcha)) {
 229              $config->recaptcha = false;
 230          }
 231  
 232          // save settings
 233          set_config('recaptcha', $config->recaptcha, 'auth/email');
 234          return true;
 235      }
 236  
 237      /**
 238       * Returns whether or not the captcha element is enabled, and the admin settings fulfil its requirements.
 239       * @return bool
 240       */
 241      function is_captcha_enabled() {
 242          global $CFG;
 243          return isset($CFG->recaptchapublickey) && isset($CFG->recaptchaprivatekey) && get_config("auth/{$this->authtype}", 'recaptcha');
 244      }
 245  
 246  }
 247  
 248  


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1