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);
-
-    }
-
 }

Reply via email to