mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
316 lines
12 KiB
JavaScript
316 lines
12 KiB
JavaScript
(function(cloudStack, $, testData) {
|
||
$.extend(window.cloudStack, testData, {
|
||
home: 'dashboard',
|
||
|
||
sectionPreFilter: function(args) {
|
||
if(isAdmin()) {
|
||
return ["dashboard", "instances", "storage", "network", "templates", "accounts", "domains", "events", "system", "global-settings", "configuration", "projects"];
|
||
}
|
||
else if(isDomainAdmin()) {
|
||
return ["dashboard", "instances", "storage", "network", "templates", "accounts", "domains", "events", "projects"];
|
||
}
|
||
else { //normal user
|
||
return ["dashboard", "instances", "storage", "network", "templates", "events", "projects"];
|
||
}
|
||
},
|
||
sections: {
|
||
/**
|
||
* Dashboard
|
||
*/
|
||
dashboard: {},
|
||
//'dashboard-user': {},
|
||
instances: {},
|
||
storage: {},
|
||
network: {},
|
||
templates: {},
|
||
events: {},
|
||
accounts: {},
|
||
domains: {},
|
||
system: {},
|
||
projects: {},
|
||
'global-settings': {},
|
||
configuration: {}
|
||
}
|
||
});
|
||
|
||
$(function() {
|
||
/**
|
||
* Generic error handling
|
||
*/
|
||
|
||
$.ajaxSetup({
|
||
url: clientApiUrl,
|
||
async: true,
|
||
dataType: 'json',
|
||
cache: false,
|
||
error: function(data) {
|
||
cloudStack.dialog.notice({ message: parseXMLHttpResponse(data) });
|
||
}
|
||
});
|
||
|
||
var $container = $('#cloudStack3-container');
|
||
|
||
var loginArgs = {
|
||
$container: $container,
|
||
|
||
// Use this for checking the session, to bypass login screen
|
||
bypassLoginCheck: function(args) {
|
||
g_mySession = $.cookie("JSESSIONID");
|
||
g_sessionKey = $.cookie("sessionKey");
|
||
g_role = $.cookie("role");
|
||
g_type = $.cookie("type");
|
||
g_username = $.cookie("username");
|
||
g_account = $.cookie("account");
|
||
g_domainid = $.cookie("domainid");
|
||
g_timezone = $.cookie("timezone");
|
||
g_directAttachSecurityGroupsEnabled = $.cookie("directattachsecuritygroupsenabled");
|
||
g_userPublicTemplateEnabled = $.cookie("userpublictemplateenabled");
|
||
g_userfullname = $.cookie('userfullname');
|
||
g_userid = $.cookie('userid');
|
||
|
||
if($.cookie("timezoneoffset") != null)
|
||
g_timezoneoffset = isNaN($.cookie("timezoneoffset"))?null: parseFloat($.cookie("timezoneoffset"));
|
||
else
|
||
g_timezoneoffset = null;
|
||
|
||
if (g_directAttachSecurityGroupsEnabled == null || g_directAttachSecurityGroupsEnabled.length == 0)
|
||
g_directAttachSecurityGroupsEnabled = "false";
|
||
|
||
if (g_userPublicTemplateEnabled == null || g_userPublicTemplateEnabled.length == 0)
|
||
g_userPublicTemplateEnabled = "true";
|
||
|
||
if(g_supportELB == null)
|
||
g_supportELB = $.cookie("supportELB");
|
||
|
||
if(g_firewallRuleUiEnabled == null)
|
||
g_firewallRuleUiEnabled = $.cookie("firewallRuleUiEnabled");
|
||
|
||
var userValid = false;
|
||
|
||
$.ajax({
|
||
url: createURL("listCapabilities"),
|
||
dataType: "json",
|
||
async: false,
|
||
success: function(json) {
|
||
/* g_supportELB: "guest" ॆआ<E0A586>ॆअ<E0A586><E0A485><EFBFBD><EFBFBD> ips are allocated on guest network (so use 'forvirtualnetwork' = false)
|
||
* g_supportELB: "public" - ips are allocated on public network (so use 'forvirtualnetwork' = true)
|
||
* g_supportELB: "false" ॆआ<E0A586>ॆअ<E0A586><E0A485><EFBFBD><EFBFBD> no ELB support
|
||
*/
|
||
g_capabilities = json.listcapabilitiesresponse.capability;
|
||
g_supportELB = json.listcapabilitiesresponse.capability.supportELB.toString(); //convert boolean to string if it's boolean
|
||
$.cookie('supportELB', g_supportELB, { expires: 1});
|
||
|
||
g_firewallRuleUiEnabled = json.listcapabilitiesresponse.capability.firewallRuleUiEnabled.toString(); //convert boolean to string if it's boolean
|
||
$.cookie('firewallRuleUiEnabled', g_firewallRuleUiEnabled, { expires: 1});
|
||
|
||
if (json.listcapabilitiesresponse.capability.userpublictemplateenabled != null) {
|
||
g_userPublicTemplateEnabled = json.listcapabilitiesresponse.capability.userpublictemplateenabled.toString(); //convert boolean to string if it's boolean
|
||
$.cookie('userpublictemplateenabled', g_userPublicTemplateEnabled, { expires: 1});
|
||
}
|
||
|
||
if (json.listcapabilitiesresponse.capability.securitygroupsenabled != null) {
|
||
g_directAttachSecurityGroupsEnabled = json.listcapabilitiesresponse.capability.securitygroupsenabled.toString(); //convert boolean to string if it's boolean
|
||
$.cookie('directattachsecuritygroupsenabled', g_directAttachSecurityGroupsEnabled, { expires: 1});
|
||
}
|
||
|
||
userValid = true;
|
||
},
|
||
error: function(xmlHTTP) {
|
||
logout(false);
|
||
},
|
||
beforeSend: function(xmlHTTP) {
|
||
return true;
|
||
}
|
||
});
|
||
|
||
return userValid ? {
|
||
user: {
|
||
userid: g_userid,
|
||
username: g_username,
|
||
account: g_account,
|
||
name: g_userfullname,
|
||
role: g_role,
|
||
type: g_type,
|
||
domainid: g_domainid
|
||
}
|
||
} : false;
|
||
|
||
return testAddUser;
|
||
},
|
||
|
||
// Actual login process, via form
|
||
loginAction: function(args) {
|
||
var array1 = [];
|
||
array1.push("&username=" + encodeURIComponent(args.data.username));
|
||
|
||
var password;
|
||
if (md5HashedLogin)
|
||
password = $.md5(args.data.password);
|
||
else
|
||
password = args.data.password;
|
||
array1.push("&password=" + password);
|
||
|
||
var domain;
|
||
if(args.data.domain != null && args.data.domain.length > 0) {
|
||
if (args.data.domain.charAt(0) != "/")
|
||
domain = "/" + args.data.domain;
|
||
else
|
||
domain = args.data.domain;
|
||
array1.push("&domain=" + encodeURIComponent(domain));
|
||
}
|
||
else {
|
||
array1.push("&domain=" + encodeURIComponent("/"));
|
||
}
|
||
|
||
$.ajax({
|
||
type: "POST",
|
||
data: "command=login" + array1.join("") + "&response=json",
|
||
dataType: "json",
|
||
async: false,
|
||
success: function(json) {
|
||
var loginresponse = json.loginresponse;
|
||
|
||
g_mySession = $.cookie('JSESSIONID');
|
||
g_sessionKey = encodeURIComponent(loginresponse.sessionkey);
|
||
g_role = loginresponse.type;
|
||
g_type = loginresponse.type;
|
||
g_username = loginresponse.username;
|
||
g_userid = loginresponse.userid;
|
||
g_account = loginresponse.account;
|
||
g_domainid = loginresponse.domainid;
|
||
g_timezone = loginresponse.timezone;
|
||
g_timezoneoffset = loginresponse.timezoneoffset;
|
||
g_userfullname = loginresponse.firstname + ' ' + loginresponse.lastname;
|
||
|
||
$.cookie('sessionKey', g_sessionKey, { expires: 1});
|
||
$.cookie('username', g_username, { expires: 1});
|
||
$.cookie('account', g_account, { expires: 1});
|
||
$.cookie('domainid', g_domainid, { expires: 1});
|
||
$.cookie('role', g_role, { expires: 1});
|
||
$.cookie('type', g_type, { expires: 1});
|
||
$.cookie('timezoneoffset', g_timezoneoffset, { expires: 1});
|
||
$.cookie('timezone', g_timezone, { expires: 1});
|
||
$.cookie('userfullname', g_userfullname, { expires: 1 });
|
||
$.cookie('userid', g_userid, { expires: 1 });
|
||
|
||
$.ajax({
|
||
url: createURL("listCapabilities"),
|
||
//url: "command=/client/api?listCapabilities&sessionkey="+g_sessionKey,
|
||
dataType: "json",
|
||
async: false,
|
||
success: function(json) {
|
||
/* g_supportELB: "guest" <20> ips are allocated on guest network (so use 'forvirtualnetwork' = false)
|
||
* g_supportELB: "public" - ips are allocated on public network (so use 'forvirtualnetwork' = true)
|
||
* g_supportELB: "false" <20> no ELB support
|
||
*/
|
||
g_capabilities = json.listcapabilitiesresponse.capability;
|
||
g_supportELB = json.listcapabilitiesresponse.capability.supportELB.toString(); //convert boolean to string if it's boolean
|
||
$.cookie('supportELB', g_supportELB, { expires: 1});
|
||
|
||
g_firewallRuleUiEnabled = json.listcapabilitiesresponse.capability.firewallRuleUiEnabled.toString(); //convert boolean to string if it's boolean
|
||
$.cookie('firewallRuleUiEnabled', g_firewallRuleUiEnabled, { expires: 1});
|
||
|
||
if (json.listcapabilitiesresponse.capability.userpublictemplateenabled != null) {
|
||
g_userPublicTemplateEnabled = json.listcapabilitiesresponse.capability.userpublictemplateenabled.toString(); //convert boolean to string if it's boolean
|
||
$.cookie('userpublictemplateenabled', g_userPublicTemplateEnabled, { expires: 1});
|
||
}
|
||
|
||
if (json.listcapabilitiesresponse.capability.securitygroupsenabled != null) {
|
||
g_directAttachSecurityGroupsEnabled = json.listcapabilitiesresponse.capability.securitygroupsenabled.toString(); //convert boolean to string if it's boolean
|
||
$.cookie('directattachsecuritygroupsenabled', g_directAttachSecurityGroupsEnabled, { expires: 1});
|
||
}
|
||
|
||
args.response.success({
|
||
data: {
|
||
user: $.extend(true, {}, loginresponse, {
|
||
name: loginresponse.firstname + ' ' + loginresponse.lastname,
|
||
role: loginresponse.type == 1 ? 'admin' : 'user',
|
||
type: loginresponse.type
|
||
})
|
||
}
|
||
});
|
||
},
|
||
error: function(xmlHTTP) {
|
||
args.response.error();
|
||
}
|
||
});
|
||
|
||
$.ajax({
|
||
url: createURL("listSwifts"),
|
||
dataType: "json",
|
||
async: false,
|
||
success: function(json) {
|
||
var items = json.ListSwiftresponse.swift;
|
||
if(items != null && items.length > 0)
|
||
havingSwift = true;
|
||
}
|
||
});
|
||
|
||
// Get project configuration
|
||
// TEMPORARY -- replace w/ output of capability response, etc., once implemented
|
||
window.g_projectsInviteRequired = false;
|
||
},
|
||
error: function() {
|
||
args.response.error();
|
||
}
|
||
});
|
||
},
|
||
|
||
logoutAction: function(args) {
|
||
$.ajax({
|
||
url: createURL('logout'),
|
||
async: false,
|
||
success: function() {
|
||
document.location.reload();
|
||
},
|
||
error: function() {
|
||
document.location.reload();
|
||
}
|
||
});
|
||
|
||
},
|
||
|
||
// Show cloudStack main UI widget
|
||
complete: function(args) {
|
||
var context = {
|
||
users: [args.user]
|
||
};
|
||
var cloudStackArgs = $.extend(cloudStack, {
|
||
context: context
|
||
});
|
||
|
||
// Check to invoke install wizard
|
||
cloudStack.installWizard.check({
|
||
context: context,
|
||
response: {
|
||
success: function(args) {
|
||
if (args.doInstall && cloudStack.context.users[0].role == 'admin') {
|
||
cloudStack.uiCustom.installWizard({
|
||
$container: $container,
|
||
context: context,
|
||
complete: function() {
|
||
// Show cloudStack main UI
|
||
$container.cloudStack(cloudStackArgs);
|
||
}
|
||
});
|
||
} else {
|
||
// Show cloudStack main UI
|
||
$container.cloudStack(cloudStackArgs);
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
// Logout action
|
||
$('#user-options a').live('click', function() {
|
||
loginArgs.logoutAction({
|
||
context: cloudStack.context
|
||
});
|
||
});
|
||
}
|
||
};
|
||
|
||
cloudStack.uiCustom.login(loginArgs);
|
||
});
|
||
})(cloudStack, jQuery, testData);
|