From 64c2faa61dce593770676468d51421936cde9690 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 27 Feb 2013 16:19:51 -0800 Subject: [PATCH] Ticket #269: Refactor to support new SystemPermission organization (no more *DirectoryPermission classes). --- .../net/auth/mysql/UserDirectory.java | 91 ++++++------------- .../mysql/service/PermissionCheckService.java | 7 +- 2 files changed, 33 insertions(+), 65 deletions(-) diff --git a/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/UserDirectory.java b/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/UserDirectory.java index 3d96bfc3a..2aab36cdc 100644 --- a/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/UserDirectory.java +++ b/extensions/guacamole-auth-mysql/src/main/java/net/sourceforge/guacamole/net/auth/mysql/UserDirectory.java @@ -69,11 +69,9 @@ import net.sourceforge.guacamole.net.auth.mysql.service.PasswordEncryptionServic import net.sourceforge.guacamole.net.auth.mysql.service.PermissionCheckService; import net.sourceforge.guacamole.net.auth.mysql.service.ProviderService; import net.sourceforge.guacamole.net.auth.mysql.service.SaltService; -import net.sourceforge.guacamole.net.auth.permission.ConnectionDirectoryPermission; import net.sourceforge.guacamole.net.auth.permission.ConnectionPermission; import net.sourceforge.guacamole.net.auth.permission.Permission; import net.sourceforge.guacamole.net.auth.permission.SystemPermission; -import net.sourceforge.guacamole.net.auth.permission.UserDirectoryPermission; import net.sourceforge.guacamole.net.auth.permission.UserPermission; import org.mybatis.guice.transactional.Transactional; @@ -572,36 +570,22 @@ public class UserDirectory implements Directory systemPermissionTypes = new ArrayList(); for (SystemPermission permission : permissions) { - // Connection directory permission - if (permission instanceof ConnectionDirectoryPermission) { - switch (permission.getType()) { + switch (permission.getType()) { - // Create permission - case CREATE: - systemPermissionTypes.add(MySQLConstants.SYSTEM_CONNECTION_CREATE); - break; + // Create connection permission + case CREATE_CONNECTION: + systemPermissionTypes.add(MySQLConstants.SYSTEM_CONNECTION_CREATE); + break; - // Fail if unexpected type encountered - default: - assert false : "Unsupported type: " + permission.getType(); + // Create user permission + case CREATE_USER: + systemPermissionTypes.add(MySQLConstants.SYSTEM_USER_CREATE); + break; - } - } + // Fail if unexpected type encountered + default: + assert false : "Unsupported type: " + permission.getType(); - // User directory permission - else if (permission instanceof UserDirectoryPermission) { - switch (permission.getType()) { - - // Create permission - case CREATE: - systemPermissionTypes.add(MySQLConstants.SYSTEM_USER_CREATE); - break; - - // Fail if unexpected type encountered - default: - assert false : "Unsupported type: " + permission.getType(); - - } } } // end for each system permission @@ -630,54 +614,39 @@ public class UserDirectory implements Directory permissions) { - if(permissions.isEmpty()) + if (permissions.isEmpty()) return; // Build list of requested system permissions List systemPermissionTypes = new ArrayList(); for (SystemPermission permission : permissions) { - // Connection directory permission - if (permission instanceof ConnectionDirectoryPermission) { - switch (permission.getType()) { + switch (permission.getType()) { - // Create permission - case CREATE: - systemPermissionTypes.add(MySQLConstants.SYSTEM_CONNECTION_CREATE); - break; + // Create connection permission + case CREATE_CONNECTION: + systemPermissionTypes.add(MySQLConstants.SYSTEM_CONNECTION_CREATE); + break; - // Fail if unexpected type encountered - default: - assert false : "Unsupported type: " + permission.getType(); + // Create user permission + case CREATE_USER: + systemPermissionTypes.add(MySQLConstants.SYSTEM_USER_CREATE); + break; - } - } + // Fail if unexpected type encountered + default: + assert false : "Unsupported type: " + permission.getType(); - // User directory permission - else if (permission instanceof UserDirectoryPermission) { - switch (permission.getType()) { - - // Create permission - case CREATE: - systemPermissionTypes.add(MySQLConstants.SYSTEM_USER_CREATE); - break; - - // Fail if unexpected type encountered - default: - assert false : "Unsupported type: " + permission.getType(); - - } } } // end for each system permission // Finally, delete the requested system permissions for this user - if(!systemPermissionTypes.isEmpty()) { - SystemPermissionExample systemPermissionExample = new SystemPermissionExample(); - systemPermissionExample.createCriteria().andUser_idEqualTo(user_id) - .andPermissionIn(systemPermissionTypes); - systemPermissionDAO.deleteByExample(systemPermissionExample); - } + SystemPermissionExample systemPermissionExample = new SystemPermissionExample(); + systemPermissionExample.createCriteria().andUser_idEqualTo(user_id) + .andPermissionIn(systemPermissionTypes); + systemPermissionDAO.deleteByExample(systemPermissionExample); + } @Override 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 96fbda867..02b5f084f 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 @@ -65,10 +65,9 @@ import net.sourceforge.guacamole.net.auth.mysql.model.UserExample; import net.sourceforge.guacamole.net.auth.mysql.model.UserPermissionExample; import net.sourceforge.guacamole.net.auth.mysql.model.UserPermissionKey; import net.sourceforge.guacamole.net.auth.mysql.model.UserWithBLOBs; -import net.sourceforge.guacamole.net.auth.permission.ConnectionDirectoryPermission; import net.sourceforge.guacamole.net.auth.permission.ConnectionPermission; import net.sourceforge.guacamole.net.auth.permission.Permission; -import net.sourceforge.guacamole.net.auth.permission.UserDirectoryPermission; +import net.sourceforge.guacamole.net.auth.permission.SystemPermission; import net.sourceforge.guacamole.net.auth.permission.UserPermission; import net.sourceforge.guacamole.protocol.GuacamoleConfiguration; @@ -904,11 +903,11 @@ public class PermissionCheckService { // User creation permission if(systemPermission.getPermission().equals(MySQLConstants.SYSTEM_USER_CREATE)) - allPermissions.add(new UserDirectoryPermission(UserDirectoryPermission.Type.CREATE)); + allPermissions.add(new SystemPermission(SystemPermission.Type.CREATE_USER)); // System creation permission else if(systemPermission.getPermission().equals(MySQLConstants.SYSTEM_CONNECTION_CREATE)) - allPermissions.add(new ConnectionDirectoryPermission(ConnectionDirectoryPermission.Type.CREATE)); + allPermissions.add(new SystemPermission(SystemPermission.Type.CREATE_CONNECTION)); }