mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
Ticket #269: Refactor to support new SystemPermission organization (no more *DirectoryPermission classes).
This commit is contained in:
@@ -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.PermissionCheckService;
|
||||||
import net.sourceforge.guacamole.net.auth.mysql.service.ProviderService;
|
import net.sourceforge.guacamole.net.auth.mysql.service.ProviderService;
|
||||||
import net.sourceforge.guacamole.net.auth.mysql.service.SaltService;
|
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.ConnectionPermission;
|
||||||
import net.sourceforge.guacamole.net.auth.permission.Permission;
|
import net.sourceforge.guacamole.net.auth.permission.Permission;
|
||||||
import net.sourceforge.guacamole.net.auth.permission.SystemPermission;
|
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 net.sourceforge.guacamole.net.auth.permission.UserPermission;
|
||||||
import org.mybatis.guice.transactional.Transactional;
|
import org.mybatis.guice.transactional.Transactional;
|
||||||
|
|
||||||
@@ -572,36 +570,22 @@ public class UserDirectory implements Directory<String, net.sourceforge.guacamol
|
|||||||
List<String> systemPermissionTypes = new ArrayList<String>();
|
List<String> systemPermissionTypes = new ArrayList<String>();
|
||||||
for (SystemPermission permission : permissions) {
|
for (SystemPermission permission : permissions) {
|
||||||
|
|
||||||
// Connection directory permission
|
switch (permission.getType()) {
|
||||||
if (permission instanceof ConnectionDirectoryPermission) {
|
|
||||||
switch (permission.getType()) {
|
|
||||||
|
|
||||||
// Create permission
|
// Create connection permission
|
||||||
case CREATE:
|
case CREATE_CONNECTION:
|
||||||
systemPermissionTypes.add(MySQLConstants.SYSTEM_CONNECTION_CREATE);
|
systemPermissionTypes.add(MySQLConstants.SYSTEM_CONNECTION_CREATE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Fail if unexpected type encountered
|
// Create user permission
|
||||||
default:
|
case CREATE_USER:
|
||||||
assert false : "Unsupported type: " + permission.getType();
|
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
|
} // end for each system permission
|
||||||
@@ -630,54 +614,39 @@ public class UserDirectory implements Directory<String, net.sourceforge.guacamol
|
|||||||
private void deleteSystemPermissions(int user_id,
|
private void deleteSystemPermissions(int user_id,
|
||||||
Collection<SystemPermission> permissions) {
|
Collection<SystemPermission> permissions) {
|
||||||
|
|
||||||
if(permissions.isEmpty())
|
if (permissions.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Build list of requested system permissions
|
// Build list of requested system permissions
|
||||||
List<String> systemPermissionTypes = new ArrayList<String>();
|
List<String> systemPermissionTypes = new ArrayList<String>();
|
||||||
for (SystemPermission permission : permissions) {
|
for (SystemPermission permission : permissions) {
|
||||||
|
|
||||||
// Connection directory permission
|
switch (permission.getType()) {
|
||||||
if (permission instanceof ConnectionDirectoryPermission) {
|
|
||||||
switch (permission.getType()) {
|
|
||||||
|
|
||||||
// Create permission
|
// Create connection permission
|
||||||
case CREATE:
|
case CREATE_CONNECTION:
|
||||||
systemPermissionTypes.add(MySQLConstants.SYSTEM_CONNECTION_CREATE);
|
systemPermissionTypes.add(MySQLConstants.SYSTEM_CONNECTION_CREATE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Fail if unexpected type encountered
|
// Create user permission
|
||||||
default:
|
case CREATE_USER:
|
||||||
assert false : "Unsupported type: " + permission.getType();
|
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
|
} // end for each system permission
|
||||||
|
|
||||||
// Finally, delete the requested system permissions for this user
|
// Finally, delete the requested system permissions for this user
|
||||||
if(!systemPermissionTypes.isEmpty()) {
|
SystemPermissionExample systemPermissionExample = new SystemPermissionExample();
|
||||||
SystemPermissionExample systemPermissionExample = new SystemPermissionExample();
|
systemPermissionExample.createCriteria().andUser_idEqualTo(user_id)
|
||||||
systemPermissionExample.createCriteria().andUser_idEqualTo(user_id)
|
.andPermissionIn(systemPermissionTypes);
|
||||||
.andPermissionIn(systemPermissionTypes);
|
systemPermissionDAO.deleteByExample(systemPermissionExample);
|
||||||
systemPermissionDAO.deleteByExample(systemPermissionExample);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -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.UserPermissionExample;
|
||||||
import net.sourceforge.guacamole.net.auth.mysql.model.UserPermissionKey;
|
import net.sourceforge.guacamole.net.auth.mysql.model.UserPermissionKey;
|
||||||
import net.sourceforge.guacamole.net.auth.mysql.model.UserWithBLOBs;
|
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.ConnectionPermission;
|
||||||
import net.sourceforge.guacamole.net.auth.permission.Permission;
|
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.net.auth.permission.UserPermission;
|
||||||
import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
|
import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
|
||||||
|
|
||||||
@@ -904,11 +903,11 @@ public class PermissionCheckService {
|
|||||||
|
|
||||||
// User creation permission
|
// User creation permission
|
||||||
if(systemPermission.getPermission().equals(MySQLConstants.SYSTEM_USER_CREATE))
|
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
|
// System creation permission
|
||||||
else if(systemPermission.getPermission().equals(MySQLConstants.SYSTEM_CONNECTION_CREATE))
|
else if(systemPermission.getPermission().equals(MySQLConstants.SYSTEM_CONNECTION_CREATE))
|
||||||
allPermissions.add(new ConnectionDirectoryPermission(ConnectionDirectoryPermission.Type.CREATE));
|
allPermissions.add(new SystemPermission(SystemPermission.Type.CREATE_CONNECTION));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user