Converted to generic credentials.
authorMichael Jumper <zhangmaike@users.sourceforge.net>
Mon, 15 Aug 2011 06:19:49 +0000 (23:19 -0700)
committerMichael Jumper <zhangmaike@users.sourceforge.net>
Mon, 15 Aug 2011 06:19:49 +0000 (23:19 -0700)
src/main/java/net/sourceforge/guacamole/net/auth/AuthenticationProvider.java
src/main/java/net/sourceforge/guacamole/net/auth/UsernamePassword.java [new file with mode: 0644]
src/main/java/net/sourceforge/guacamole/net/basic/BasicFileAuthenticationProvider.java
src/main/java/net/sourceforge/guacamole/net/basic/BasicLogin.java
src/main/webapp/index.xhtml

index baf2db9..aeeb350 100644 (file)
@@ -3,8 +3,8 @@ package net.sourceforge.guacamole.net.auth;
 
 import net.sourceforge.guacamole.GuacamoleException;
 
-public interface AuthenticationProvider {
+public interface AuthenticationProvider<CredentialType> {
 
-    public UserConfiguration getUserConfiguration(String username, String password) throws GuacamoleException;
+    public UserConfiguration getUserConfiguration(CredentialType credentials) throws GuacamoleException;
 
 }
diff --git a/src/main/java/net/sourceforge/guacamole/net/auth/UsernamePassword.java b/src/main/java/net/sourceforge/guacamole/net/auth/UsernamePassword.java
new file mode 100644 (file)
index 0000000..0322bb2
--- /dev/null
@@ -0,0 +1,24 @@
+package net.sourceforge.guacamole.net.auth;
+
+public class UsernamePassword {
+
+    private String username;
+    private String password;
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+}
index 1d40107..8597595 100644 (file)
@@ -29,6 +29,7 @@ import java.util.HashMap;
 import java.util.Map;
 import net.sourceforge.guacamole.GuacamoleException;
 import net.sourceforge.guacamole.net.auth.UserConfiguration;
+import net.sourceforge.guacamole.net.auth.UsernamePassword;
 import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties;
 import net.sourceforge.guacamole.properties.GuacamoleProperties;
 import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
@@ -40,7 +41,7 @@ import org.xml.sax.XMLReader;
 import org.xml.sax.helpers.DefaultHandler;
 import org.xml.sax.helpers.XMLReaderFactory;
 
-public class BasicFileAuthenticationProvider implements AuthenticationProvider {
+public class BasicFileAuthenticationProvider implements AuthenticationProvider<UsernamePassword> {
 
     private Logger logger = LoggerFactory.getLogger(BasicFileAuthenticationProvider.class);
     
@@ -86,7 +87,7 @@ public class BasicFileAuthenticationProvider implements AuthenticationProvider {
     }
 
     @Override
-    public UserConfiguration getUserConfiguration(String username, String password) throws GuacamoleException {
+    public UserConfiguration getUserConfiguration(UsernamePassword credentials) throws GuacamoleException {
 
         // Check mapping file mod time
         File userMappingFile = getUserMappingFile();
@@ -107,8 +108,8 @@ public class BasicFileAuthenticationProvider implements AuthenticationProvider {
             throw new GuacamoleException("User mapping could not be read.");
         
         // Validate and return info for given user and pass
-        AuthInfo info = mapping.get(username);
-        if (info != null && info.validate(username, password))
+        AuthInfo info = mapping.get(credentials.getUsername());
+        if (info != null && info.validate(credentials.getUsername(), credentials.getPassword()))
             return info.getUserConfiguration();
 
         return null;
index 669c7de..6574d02 100644 (file)
@@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import net.sourceforge.guacamole.GuacamoleException;
+import net.sourceforge.guacamole.net.auth.UsernamePassword;
 import net.sourceforge.guacamole.properties.GuacamoleProperties;
 import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties;
 import org.slf4j.Logger;
@@ -62,10 +63,14 @@ public class BasicLogin extends HttpServlet {
         String username = request.getParameter("username");
         String password = request.getParameter("password");
 
+        UsernamePassword credentials = new UsernamePassword();
+        credentials.setUsername(username);
+        credentials.setPassword(password);
+        
         // Get authorized configs
         UserConfiguration config;
         try {
-            config = authProvider.getUserConfiguration(username, password);
+            config = authProvider.getUserConfiguration(credentials);
         }
         catch (GuacamoleException e) {
             logger.error("Error retrieving configuration for user {}.", username);
index 5468b7f..2640d05 100644 (file)
 
                 }
 
+                // If only one connection, redirect to that.
+                if (configs.length == 1) {
+                    window.location.href = "client.xhtml?" + encodeURIComponent(configs[0].id);
+                    return;
+                }
+
                 // Remove all rows from connections list
                 var tbody = document.getElementById("connections-tbody");
                 tbody.innerHTML = "";