mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
115 lines
3.3 KiB
JavaScript
115 lines
3.3 KiB
JavaScript
// Licensed to the Apache Software Foundation (ASF) under one
|
|
// or more contributor license agreements. See the NOTICE file
|
|
// distributed with this work for additional information
|
|
// regarding copyright ownership. The ASF licenses this file
|
|
// to you under the Apache License, Version 2.0 (the
|
|
// "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing,
|
|
// software distributed under the License is distributed on an
|
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
// KIND, either express or implied. See the License for the
|
|
// specific language governing permissions and limitations
|
|
// under the License.
|
|
(function($, cloudStack) {
|
|
/**
|
|
* Login process
|
|
*/
|
|
cloudStack.uiCustom.login = function(args) {
|
|
var $container = args.$container;
|
|
var $login = $('#template').find('.login').clone();
|
|
var $form = $login.find('form');
|
|
var $inputs = $form.find('input[type=text], input[type=password]');
|
|
var complete = args.complete;
|
|
var bypass = args.bypassLoginCheck && args.bypassLoginCheck();
|
|
|
|
// Check to see if we can bypass login screen
|
|
if (bypass) {
|
|
complete({
|
|
user: bypass.user
|
|
});
|
|
|
|
return;
|
|
}
|
|
|
|
$login.appendTo('html body');
|
|
$('html body').addClass('login');
|
|
|
|
// Form validation
|
|
$form.validate();
|
|
|
|
// Form label behavior
|
|
$inputs.bind('keydown keyup focus blur', function(event) {
|
|
var $target = $(event.target);
|
|
var $label = $form.find('label').filter(function() {
|
|
return $(this).attr('for') == $target.attr('name');
|
|
});
|
|
|
|
if (event.type == 'keydown') {
|
|
$label.hide();
|
|
|
|
return true;
|
|
} else {
|
|
if (!$target.val()) {
|
|
$label.show();
|
|
} else {
|
|
$label.hide();
|
|
}
|
|
}
|
|
|
|
return true;
|
|
});
|
|
|
|
if (!args.hasLogo) $login.addClass('nologo');
|
|
|
|
// Labels cause related input to be focused
|
|
$login.find('label').click(function() {
|
|
var $input = $inputs.filter('[name=' + $(this).attr('for') + ']');
|
|
|
|
$input.focus();
|
|
});
|
|
|
|
$inputs.filter(':first').focus();
|
|
|
|
// Login action
|
|
$login.find('input[type=submit]').click(function() {
|
|
if (!$form.valid()) return false;
|
|
|
|
var data = cloudStack.serializeForm($form);
|
|
|
|
args.loginAction({
|
|
data: data,
|
|
response: {
|
|
success: function(args) {
|
|
$login.remove();
|
|
$('html body').removeClass('login');
|
|
complete({
|
|
user: args.data.user
|
|
});
|
|
},
|
|
error: function(args) {
|
|
cloudStack.dialog.notice({ message: args });
|
|
}
|
|
}
|
|
});
|
|
|
|
return false;
|
|
});
|
|
|
|
// Select language
|
|
var $languageSelect = $login.find('select[name=language]');
|
|
$languageSelect.change(function() {
|
|
if($(this).val() != '') //language dropdown is not blank
|
|
$.cookie('lang', $(this).val()); //the selected option in language dropdown will be used (instead of browser's default language)
|
|
else //language dropdown is blank
|
|
$.cookie('lang', null); //null $.cookie('lang'), so browser's default language will be used.
|
|
document.location.reload();
|
|
});
|
|
|
|
$languageSelect.val($.cookie('lang'));
|
|
};
|
|
})(jQuery, cloudStack);
|