From 199f518cdb7e888de1f574d871e5f3847041a327 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sun, 8 Apr 2018 00:16:12 -0700 Subject: [PATCH] GUACAMOLE-220: Use effective permissions when deciding whether a user has permission to perform an action. --- .../base/ModeledChildDirectoryObjectService.java | 7 ++++--- .../jdbc/base/ModeledDirectoryObjectService.java | 13 ++++++++----- .../auth/jdbc/connection/ConnectionService.java | 10 +++++----- .../connectiongroup/ConnectionGroupService.java | 10 +++++----- .../jdbc/permission/AbstractPermissionService.java | 4 ++-- .../permission/ModeledObjectPermissionService.java | 3 ++- .../jdbc/sharingprofile/SharingProfileService.java | 10 +++++----- .../guacamole/auth/jdbc/user/ModeledUser.java | 5 +++-- .../guacamole/auth/jdbc/user/UserService.java | 6 +++--- 9 files changed, 37 insertions(+), 31 deletions(-) diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledChildDirectoryObjectService.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledChildDirectoryObjectService.java index 74ca5bb34..f517e2788 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledChildDirectoryObjectService.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledChildDirectoryObjectService.java @@ -53,7 +53,8 @@ public abstract class ModeledChildDirectoryObjectService modifiedParents = getModifiedParents(user, identifier, model); if (!modifiedParents.isEmpty()) { - ObjectPermissionSet permissionSet = getParentPermissionSet(user); + ObjectPermissionSet permissionSet = getParentEffectivePermissionSet(user); Collection updateableParents = permissionSet.getAccessibleObjects( Collections.singleton(ObjectPermission.Type.UPDATE), modifiedParents diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledDirectoryObjectService.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledDirectoryObjectService.java index 3e3e707d5..e87d6649f 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledDirectoryObjectService.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledDirectoryObjectService.java @@ -126,7 +126,8 @@ public abstract class ModeledDirectoryObjectService implements Us /** * Returns whether this user is a system administrator, and thus is not - * restricted by permissions. + * restricted by permissions, taking into account permission inheritance + * via user groups. * * @return * true if this user is a system administrator, false otherwise. @@ -343,7 +344,7 @@ public class ModeledUser extends ModeledDirectoryObject implements Us * status. */ public boolean isAdministrator() throws GuacamoleException { - SystemPermissionSet systemPermissionSet = getSystemPermissions(); + SystemPermissionSet systemPermissionSet = getEffectivePermissions().getSystemPermissions(); return systemPermissionSet.hasPermission(SystemPermission.Type.ADMINISTER); } diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserService.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserService.java index 9f7fb8761..2c70e2201 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserService.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserService.java @@ -216,17 +216,17 @@ public class UserService extends ModeledDirectoryObjectService