Add support for new permissions.

This commit is contained in:
Michael Jumper
2013-08-14 13:33:06 -07:00
parent ee06c0a5ca
commit 476a20897b

View File

@@ -226,6 +226,11 @@ GuacamoleService.PermissionSet = function() {
*/
this.create_connection = false;
/**
* Whether permission to create connection groups is granted.
*/
this.create_connection_group = false;
/**
* Whether permission to administer the system in general is granted.
*/
@@ -271,6 +276,26 @@ GuacamoleService.PermissionSet = function() {
*/
this.administer_connection = {};
/**
* Object with a property entry for each readable connection group.
*/
this.read_connection_group = {};
/**
* Object with a property entry for each updatable connection group.
*/
this.update_connection_group = {};
/**
* Object with a property entry for each removable connection group.
*/
this.remove_connection_group = {};
/**
* Object with a property entry for each administerable connection group.
*/
this.administer_connection_group = {};
};
/**
@@ -729,9 +754,10 @@ GuacamoleService.Users = {
var name;
// System permissions
if (permissions_added.create_user) data += "&%2Bsys=create-user";
if (permissions_added.create_connection) data += "&%2Bsys=create-connection";
if (permissions_added.administer) data += "&%2Bsys=admin";
if (permissions_added.create_user) data += "&%2Bsys=create-user";
if (permissions_added.create_connection) data += "&%2Bsys=create-connection";
if (permissions_added.create_connection_group) data += "&%2Bsys=create-connection-group";
if (permissions_added.administer) data += "&%2Bsys=admin";
// User permissions
for (name in permissions_added.read_user)
@@ -753,10 +779,21 @@ GuacamoleService.Users = {
for (name in permissions_added.remove_connection)
data += "&%2Bconnection=delete:" + encodeURIComponent(name);
// Connection group permissions
for (name in permissions_added.read_connection_group)
data += "&%2Bconnection-group=read:" + encodeURIComponent(name);
for (name in permissions_added.administer_connection_group)
data += "&%2Bconnection-group=admin:" + encodeURIComponent(name);
for (name in permissions_added.update_connection_group)
data += "&%2Bconnection-group=update:" + encodeURIComponent(name);
for (name in permissions_added.remove_connection_group)
data += "&%2Bconnection-group=delete:" + encodeURIComponent(name);
// Creation permissions
if (permissions_removed.create_user) data += "&-sys=create-user";
if (permissions_removed.create_connection) data += "&-sys=create-connection";
if (permissions_removed.administer) data += "&-sys=admin";
if (permissions_removed.create_user) data += "&-sys=create-user";
if (permissions_removed.create_connection) data += "&-sys=create-connection";
if (permissions_removed.create_connection_group) data += "&-sys=create-connection-group";
if (permissions_removed.administer) data += "&-sys=admin";
// User permissions
for (name in permissions_removed.read_user)
@@ -778,6 +815,16 @@ GuacamoleService.Users = {
for (name in permissions_removed.remove_connection)
data += "&-connection=delete:" + encodeURIComponent(name);
// Connection group permissions
for (name in permissions_removed.read_connection_group)
data += "&-connection-group=read:" + encodeURIComponent(name);
for (name in permissions_removed.administer_connection_group)
data += "&-connection-group=admin:" + encodeURIComponent(name);
for (name in permissions_removed.update_connection_group)
data += "&-connection-group=update:" + encodeURIComponent(name);
for (name in permissions_removed.remove_connection_group)
data += "&-connection-group=delete:" + encodeURIComponent(name);
// Update user
var xhr = new XMLHttpRequest();
xhr.open("POST", users_url, false);
@@ -897,6 +944,11 @@ GuacamoleService.Permissions = {
permissions.create_connection = true;
break;
// Create connection group permission
case "create-connection-group":
permissions.create_connection_group = true;
break;
// Create user permission
case "create-user":
permissions.create_user = true;
@@ -945,6 +997,40 @@ GuacamoleService.Permissions = {
}
// Read connection group permissions
var connectionGroupElements = xhr.responseXML.getElementsByTagName("connection-group");
for (i=0; i<connectionGroupElements.length; i++) {
// Get name and type
type = connectionGroupElements[i].getAttribute("type");
name = connectionGroupElements[i].getAttribute("name");
switch (type) {
// Read permission
case "read":
permissions.read_connection_group[name] = true;
break;
// Update permission
case "update":
permissions.update_connection_group[name] = true;
break;
// Admin permission
case "admin":
permissions.administer_connection_group[name] = true;
break;
// Delete permission
case "delete":
permissions.remove_connection_group[name] = true;
break;
}
}
// Read user permissions
var userElements = xhr.responseXML.getElementsByTagName("user");
for (i=0; i<userElements.length; i++) {