Skip to content

Commit

Permalink
MDL-35104 auth: Don't allow modification of username
Browse files Browse the repository at this point in the history
Presently it is either unreliable, or not possible to change
the username of a user created with an authentication plugin.
In some cases it is even hard coded to fail. Ideally we would
sync the username, and the issue MDL-21928 exists to address
that. However, in the mean time we should not allow the
username of an external user to be modified.
  • Loading branch information
cameorn1730 committed Jun 21, 2016
1 parent 364329a commit cbce72a
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
2 changes: 2 additions & 0 deletions lang/en/auth.php
Expand Up @@ -153,3 +153,5 @@
$string['update_onupdate'] = 'On update';
$string['user_activatenotsupportusertype'] = 'auth: ldap user_activate() does not support selected usertype: {$a}';
$string['user_disablenotsupportusertype'] = 'auth: ldap user_disable() does not support selected usertype (..yet)';
$string['username'] = 'Username';
$string['username_help'] = 'Please be aware that some authentication plugins will not allow you to change the username.';
16 changes: 12 additions & 4 deletions user/editadvanced_form.php
Expand Up @@ -67,17 +67,19 @@ public function definition() {
// Print the required moodle fields first.
$mform->addElement('header', 'moodle', $strgeneral);

$mform->addElement('text', 'username', get_string('username'), 'size="20"');
$mform->addRule('username', $strrequired, 'required', null, 'client');
$mform->setType('username', PARAM_RAW);

$auths = core_component::get_plugin_list('auth');
$enabled = get_string('pluginenabled', 'core_plugin');
$disabled = get_string('plugindisabled', 'core_plugin');
$authoptions = array($enabled => array(), $disabled => array());
$cannotchangepass = array();
$cannotchangeusername = array();
foreach ($auths as $auth => $unused) {
$authinst = get_auth_plugin($auth);

if (!$authinst->is_internal()) {
$cannotchangeusername[] = $auth;
}

$passwordurl = $authinst->change_password_url();
if (!($authinst->can_change_password() && empty($passwordurl))) {
if ($userid < 1 and $authinst->is_internal()) {
Expand All @@ -93,6 +95,12 @@ public function definition() {
$authoptions[$disabled][$auth] = get_string('pluginname', "auth_{$auth}");
}
}

$mform->addElement('text', 'username', get_string('username'), 'size="20"');
$mform->addHelpButton('username', 'username', 'auth');
$mform->setType('username', PARAM_RAW);
$mform->disabledIf('username', 'auth', 'in', $cannotchangeusername);

$mform->addElement('selectgroups', 'auth', get_string('chooseauthmethod', 'auth'), $authoptions);
$mform->addHelpButton('auth', 'chooseauthmethod', 'auth');

Expand Down

0 comments on commit cbce72a

Please sign in to comment.