diff --git a/extensions/guacamole-auth-mysql/schema/001-create-schema.sql b/extensions/guacamole-auth-mysql/schema/001-create-schema.sql index a46a4254f..96e6350aa 100644 --- a/extensions/guacamole-auth-mysql/schema/001-create-schema.sql +++ b/extensions/guacamole-auth-mysql/schema/001-create-schema.sql @@ -139,7 +139,7 @@ CREATE TABLE `guacamole_system_permission` ( `user_id` int(11) NOT NULL, `permission` enum('CREATE_CONNECTION', - 'CREATE_GROUP', + 'CREATE_CONNECTION_GROUP', 'CREATE_USER', 'ADMINISTER') NOT NULL, diff --git a/extensions/guacamole-auth-mysql/schema/001a-update-schema.sql b/extensions/guacamole-auth-mysql/schema/001a-update-schema.sql index edb6ef9ee..42d0bfcad 100644 --- a/extensions/guacamole-auth-mysql/schema/001a-update-schema.sql +++ b/extensions/guacamole-auth-mysql/schema/001a-update-schema.sql @@ -63,6 +63,6 @@ CREATE TABLE `guacamole_connection_group_permission` ( ALTER TABLE `guacamole_system_permission` MODIFY `permission` enum('CREATE_CONNECTION', - 'CREATE_GROUP', + 'CREATE_CONNECTION_GROUP', 'CREATE_USER', 'ADMINISTER') NOT NULL; diff --git a/extensions/guacamole-auth-mysql/schema/002-create-admin-user.sql b/extensions/guacamole-auth-mysql/schema/002-create-admin-user.sql index ebce17c25..824ddf6b3 100644 --- a/extensions/guacamole-auth-mysql/schema/002-create-admin-user.sql +++ b/extensions/guacamole-auth-mysql/schema/002-create-admin-user.sql @@ -6,7 +6,7 @@ insert into guacamole_user values(1, 'guacadmin', -- Grant this user create permissions insert into guacamole_system_permission values(1, 'CREATE_CONNECTION'); -insert into guacamole_system_permission values(1, 'CREATE_GROUP'); +insert into guacamole_system_permission values(1, 'CREATE_CONNECTION_GROUP'); insert into guacamole_system_permission values(1, 'CREATE_USER'); insert into guacamole_system_permission values(1, 'ADMINISTER'); diff --git a/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/MySQLConstants.java b/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/MySQLConstants.java index c9b7fd072..87e013595 100644 --- a/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/MySQLConstants.java +++ b/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/MySQLConstants.java @@ -242,9 +242,10 @@ public final class MySQLConstants { // Convert permission type to MySQL constant switch (type) { - case CREATE_USER: return SYSTEM_USER_CREATE; - case CREATE_CONNECTION: return SYSTEM_CONNECTION_CREATE; - case ADMINISTER: return SYSTEM_ADMINISTER; + case CREATE_USER: return SYSTEM_USER_CREATE; + case CREATE_CONNECTION: return SYSTEM_CONNECTION_CREATE; + case CREATE_CONNECTION_GROUP: return SYSTEM_CONNECTION_GROUP_CREATE; + case ADMINISTER: return SYSTEM_ADMINISTER; } // If we get here, permission support was not properly implemented diff --git a/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/service/PermissionCheckService.java b/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/service/PermissionCheckService.java index 610ba437b..9379389d4 100644 --- a/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/service/PermissionCheckService.java +++ b/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/service/PermissionCheckService.java @@ -778,6 +778,10 @@ public class PermissionCheckService { else if(systemPermission.getPermission().equals(MySQLConstants.SYSTEM_CONNECTION_CREATE)) permissions.add(new SystemPermission(SystemPermission.Type.CREATE_CONNECTION)); + // System creation permission + else if(systemPermission.getPermission().equals(MySQLConstants.SYSTEM_CONNECTION_GROUP_CREATE)) + permissions.add(new SystemPermission(SystemPermission.Type.CREATE_CONNECTION_GROUP)); + // System administration permission else if(systemPermission.getPermission().equals(MySQLConstants.SYSTEM_ADMINISTER)) permissions.add(new SystemPermission(SystemPermission.Type.ADMINISTER)); diff --git a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/SystemPermission.java b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/SystemPermission.java index 6d0ce27ed..c4d356306 100644 --- a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/SystemPermission.java +++ b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/SystemPermission.java @@ -61,6 +61,11 @@ public class SystemPermission implements Permission { */ CREATE_CONNECTION, + /** + * Create connection groups. + */ + CREATE_CONNECTION_GROUP, + /** * Administer the system in general, including adding permissions * which affect the system (like user creation, connection creation,