mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			303 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			303 lines
		
	
	
		
			11 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: {},
 | ||
|       accounts: {},
 | ||
|       domains: {},
 | ||
|       events: {},
 | ||
|       system: {},
 | ||
|       projects: {},
 | ||
|       'global-settings': {},
 | ||
|       configuration: {}
 | ||
|     }
 | ||
|   });
 | ||
| 
 | ||
|   $(function() {
 | ||
|     /**
 | ||
|      * Generic error handling
 | ||
|      */
 | ||
|     $.ajaxSetup({
 | ||
|       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"   ै<><E0A588> 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"   ै<><E0A588> 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",
 | ||
|           url: createURL("login") + array1.join(""),
 | ||
|           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();
 | ||
|               }
 | ||
|             });
 | ||
| 
 | ||
|             // 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.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);
 |