From 493090195af074b8248774ae9ad4cb56a19252f2 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 30 Jan 2013 22:49:31 -0800 Subject: [PATCH] Migrate SimpleAuthenticationProvider to model with permissions residing in User. --- .../simple/SimpleAuthenticationProvider.java | 2 +- .../guacamole/net/auth/simple/SimpleUser.java | 58 ++++++++++++++++++- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/simple/SimpleAuthenticationProvider.java b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/simple/SimpleAuthenticationProvider.java index 644f5526c..451b4d999 100644 --- a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/simple/SimpleAuthenticationProvider.java +++ b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/simple/SimpleAuthenticationProvider.java @@ -90,7 +90,7 @@ public abstract class SimpleAuthenticationProvider return null; // Build new user from credentials - User user = new SimpleUser(credentials.getUsername()); + User user = new SimpleUser(credentials.getUsername(), configs); // Return user context restricted to authorized configs return new SimpleUserContext(user, configs); diff --git a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/simple/SimpleUser.java b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/simple/SimpleUser.java index 5d60845f1..7c574c151 100644 --- a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/simple/SimpleUser.java +++ b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/simple/SimpleUser.java @@ -37,7 +37,16 @@ package net.sourceforge.guacamole.net.auth.simple; * * ***** END LICENSE BLOCK ***** */ +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import net.sourceforge.guacamole.GuacamoleException; +import net.sourceforge.guacamole.GuacamoleSecurityException; import net.sourceforge.guacamole.net.auth.AbstractUser; +import net.sourceforge.guacamole.net.auth.permission.GuacamoleConfigurationPermission; +import net.sourceforge.guacamole.net.auth.permission.ObjectPermission; +import net.sourceforge.guacamole.net.auth.permission.Permission; +import net.sourceforge.guacamole.protocol.GuacamoleConfiguration; /** @@ -47,6 +56,11 @@ import net.sourceforge.guacamole.net.auth.AbstractUser; */ public class SimpleUser extends AbstractUser { + /** + * The set of all permissions available to this user. + */ + private Set permissions = new HashSet(); + /** * Creates a completely uninitialized SimpleUser. */ @@ -57,9 +71,51 @@ public class SimpleUser extends AbstractUser { * Creates a new SimpleUser having the given username. * * @param username The username to assign to this SimpleUser. + * @param configs All configurations this user has read access to. */ - public SimpleUser(String username) { + public SimpleUser(String username, + Map configs) { + + // Set username setUsername(username); + + // Add permissions + for (String identifier : configs.keySet()) { + + // Create permission + Permission permission = new GuacamoleConfigurationPermission( + ObjectPermission.Type.READ, + identifier + ); + + // Add to set + permissions.add(permission); + + } + + } + + @Override + public Set getPermissions() throws GuacamoleException { + return permissions; + } + + @Override + public boolean hasPermission(Permission permission) throws GuacamoleException { + + /* FIXME: STUB! */ + throw new UnsupportedOperationException("Not supported yet."); + + } + + @Override + public void addPermission(Permission permission) throws GuacamoleException { + throw new GuacamoleSecurityException("Permission denied."); + } + + @Override + public void removePermission(Permission permission) throws GuacamoleException { + throw new GuacamoleSecurityException("Permission denied."); } }