Merge pull request #289 from kasunchathuranga/Feature499

Feature Request 499: On user creation, warn if the user already exists
This commit is contained in:
J.M. 2013-05-01 06:17:37 -07:00
commit 57f7a2d6ac
3 changed files with 54 additions and 3 deletions

View File

@ -165,7 +165,8 @@ function addUser($form)
/**
* Unbind all event handlers before tearing down a page
*/
AJAX.registerTeardown('server_privileges.js', function () {
AJAX.registerTeardown('server_privileges.js', function() {
$("#fieldset_add_user_login input[name='username']").die("focusout");
$("#fieldset_add_user a.ajax").die("click");
$('form[name=usersForm]').unbind('submit');
$("#reload_privileges_anchor.ajax").die("click");
@ -179,6 +180,31 @@ AJAX.registerTeardown('server_privileges.js', function () {
});
AJAX.registerOnload('server_privileges.js', function () {
/**
* Display a warning if there is already a user by the name entered as the username.
*/
$("#fieldset_add_user_login input[name='username']").live("focusout", function() {
var username = $(this).val();
var $warning = $("#user_exists_warning");
if ($("#select_pred_username").val() == 'userdefined' && username != '') {
var href = $("form[name='usersForm']").attr('action');
var params = {
'ajax_request' : true,
'token' : PMA_commonParams.get('token'),
'validate_username' : true,
'username' : username
};
$.get(href, params, function(data) {
if (data['user_exists']) {
$warning.show();
} else {
$warning.hide();
}
});
} else {
$warning.hide();
}
});
/**
* AJAX event handler for 'Add a New User'
*

View File

@ -1035,6 +1035,7 @@ function PMA_getHtmlForDisplayLoginInformationFields($mode = 'new')
$html_output .= ' onchange="'
. 'if (this.value == \'any\') {'
. ' username.value = \'\'; '
. ' user_exists_warning.style.display = \'none\'; '
. '} else if (this.value == \'userdefined\') {'
. ' username.focus(); username.select(); '
. '}">' . "\n";
@ -1068,8 +1069,15 @@ function PMA_getHtmlForDisplayLoginInformationFields($mode = 'new')
: $GLOBALS['username']
) . '"'
)
. ' onchange="pred_username.value = \'userdefined\';" />' . "\n"
. '</div>' . "\n";
. ' onchange="pred_username.value = \'userdefined\';" />' . "\n";
$html_output .= '<div id="user_exists_warning"'
. ' name="user_exists_warning" style="display:none;">'
. PMA_Message::notice(
__('An account already exists with the same username but possibly a different hostname. Are you sure you wish to proceed?')
)->getDisplay()
. '</div>';
$html_output .= '</div>';
$html_output .= '<div class="item">' . "\n"
. '<label for="select_pred_hostname">' . "\n"
@ -1905,6 +1913,19 @@ function PMA_getExtraDataForAjaxBehavior($password, $link_export, $sql_query,
$extra_data['new_privileges'] = $new_privileges;
}
if (isset($_REQUEST['validate_username'])) {
$sql_query = "SELECT * FROM `mysql`.`user` WHERE `User` = '"
. $_REQUEST['username'] . "';";
$res = PMA_DBI_query($sql_query);
$row = PMA_DBI_fetch_row($res);
if (empty($row)) {
$extra_data['user_exists'] = false;
} else {
$extra_data['user_exists'] = true;
}
}
return $extra_data;
}

View File

@ -356,6 +356,10 @@ if (isset($_REQUEST['flush_privileges'])) {
$message = PMA_Message::success(__('The privileges were reloaded successfully.'));
}
if (isset($_REQUEST['validate_username'])) {
$message = PMA_Message::success();
}
/**
* some standard links
*/