GUACAMOLE-77: Distinguish within REST between the user's identity/permissions and actual existing user objects.
Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/b23dcf83 Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/b23dcf83 Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/b23dcf83 Branch: refs/heads/master Commit: b23dcf83cac852aaa61b3d4b34e7da612fc449c4 Parents: 87b517f Author: Michael Jumper <[email protected]> Authored: Sat Aug 20 13:54:20 2016 -0700 Committer: Michael Jumper <[email protected]> Committed: Sat Aug 20 14:47:44 2016 -0700 ---------------------------------------------------------------------- .../rest/session/UserContextResource.java | 28 +++++++++++++++++ .../rest/user/UserDirectoryResource.java | 33 -------------------- 2 files changed, 28 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/b23dcf83/guacamole/src/main/java/org/apache/guacamole/rest/session/UserContextResource.java ---------------------------------------------------------------------- diff --git a/guacamole/src/main/java/org/apache/guacamole/rest/session/UserContextResource.java b/guacamole/src/main/java/org/apache/guacamole/rest/session/UserContextResource.java index 31bb002..39be489 100644 --- a/guacamole/src/main/java/org/apache/guacamole/rest/session/UserContextResource.java +++ b/guacamole/src/main/java/org/apache/guacamole/rest/session/UserContextResource.java @@ -38,6 +38,8 @@ import org.apache.guacamole.net.auth.UserContext; import org.apache.guacamole.rest.activeconnection.APIActiveConnection; import org.apache.guacamole.rest.connection.APIConnection; import org.apache.guacamole.rest.connectiongroup.APIConnectionGroup; +import org.apache.guacamole.rest.directory.DirectoryObjectResource; +import org.apache.guacamole.rest.directory.DirectoryObjectResourceFactory; import org.apache.guacamole.rest.history.HistoryResource; import org.apache.guacamole.rest.schema.SchemaResource; import org.apache.guacamole.rest.sharingprofile.APISharingProfile; @@ -58,6 +60,12 @@ public class UserContextResource { private final UserContext userContext; /** + * Factory for creating DirectoryObjectResources which expose a given User. + */ + @Inject + private DirectoryObjectResourceFactory<User, APIUser> userResourceFactory; + + /** * Factory for creating DirectoryResources which expose a given * ActiveConnection Directory. */ @@ -110,6 +118,26 @@ public class UserContextResource { } /** + * Returns a new resource which represents the User whose access rights + * control the operations of the UserContext exposed by this + * UserContextResource. + * + * @return + * A new resource which represents the User whose access rights + * control the operations of the UserContext exposed by this + * UserContextResource. + * + * @throws GuacamoleException + * If an error occurs while retrieving the User. + */ + @Path("self") + public DirectoryObjectResource<User, APIUser> getSelfResource() + throws GuacamoleException { + return userResourceFactory.create(userContext, + userContext.getUserDirectory(), userContext.self()); + } + + /** * Returns a new resource which represents the ActiveConnection Directory * contained within the UserContext exposed by this UserContextResource. * http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/b23dcf83/guacamole/src/main/java/org/apache/guacamole/rest/user/UserDirectoryResource.java ---------------------------------------------------------------------- diff --git a/guacamole/src/main/java/org/apache/guacamole/rest/user/UserDirectoryResource.java b/guacamole/src/main/java/org/apache/guacamole/rest/user/UserDirectoryResource.java index 04218f1..c2515ca 100644 --- a/guacamole/src/main/java/org/apache/guacamole/rest/user/UserDirectoryResource.java +++ b/guacamole/src/main/java/org/apache/guacamole/rest/user/UserDirectoryResource.java @@ -29,7 +29,6 @@ import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.net.auth.User; import org.apache.guacamole.net.auth.Directory; import org.apache.guacamole.net.auth.UserContext; -import org.apache.guacamole.rest.directory.DirectoryObjectResource; import org.apache.guacamole.rest.directory.DirectoryObjectResourceFactory; import org.apache.guacamole.rest.directory.DirectoryObjectTranslator; import org.apache.guacamole.rest.directory.DirectoryResource; @@ -45,23 +44,6 @@ import org.apache.guacamole.rest.directory.DirectoryResource; public class UserDirectoryResource extends DirectoryResource<User, APIUser> { /** - * The UserContext associated with the Directory which contains the - * User exposed by this resource. - */ - private final UserContext userContext; - - /** - * The Directory exposed by this resource. - */ - private final Directory<User> directory; - - /** - * A factory which can be used to create instances of resources representing - * Users. - */ - private final DirectoryObjectResourceFactory<User, APIUser> resourceFactory; - - /** * Creates a new UserDirectoryResource which exposes the operations and * subresources available for the given User Directory. * @@ -85,9 +67,6 @@ public class UserDirectoryResource extends DirectoryResource<User, APIUser> { DirectoryObjectTranslator<User, APIUser> translator, DirectoryObjectResourceFactory<User, APIUser> resourceFactory) { super(userContext, directory, translator, resourceFactory); - this.userContext = userContext; - this.directory = directory; - this.resourceFactory = resourceFactory; } @Override @@ -101,16 +80,4 @@ public class UserDirectoryResource extends DirectoryResource<User, APIUser> { } - @Override - public DirectoryObjectResource<User, APIUser> - getObjectResource(String identifier) throws GuacamoleException { - - // If username is own username, just use self - might not have query permissions - if (userContext.self().getIdentifier().equals(identifier)) - return resourceFactory.create(userContext, directory, userContext.self()); - - return super.getObjectResource(identifier); - - } - }
