mike-jumper commented on code in PR #902:
URL: https://github.com/apache/guacamole-client/pull/902#discussion_r1741234096


##########
extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/user/AuthenticatedUser.java:
##########
@@ -62,5 +68,10 @@ public AuthenticationProvider getAuthenticationProvider() {
     public Credentials getCredentials() {
         return credentials;
     }
+    
+    @Override
+    public boolean isCaseSensitive() {
+        return confService.getCaseSensitiveUsernames();
+    }

Review Comment:
   The `GuacamoleException` potentially thrown by `getCaseSensitiveUsernames()` 
will need to be handled here for this to build.



##########
extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/user/AuthenticatedUser.java:
##########
@@ -58,6 +66,16 @@ public void init(String username, Credentials credentials) {
         setIdentifier(username.toLowerCase());
     }
 
+    @Override
+    public boolean isCaseSensitive() {
+        try {
+            return confService.getCaseSensitiveUsernames();
+        }
+        catch (GuacamoleException e) {
+            return false;
+        }

Review Comment:
   Should the failure and its implications be logged here?



##########
guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AbstractUser.java:
##########
@@ -49,6 +49,11 @@ public String getPassword() {
     public void setPassword(String password) {
         this.password = password;
     }
+    
+    @Override
+    public boolean isCaseSensitive() {
+        return false;
+    }

Review Comment:
   Should the default behavior at the `AbstractUser` level instead be 
case-sensitive?
   
   My main concern here would be unexpectedly changing the behavior of 
third-party extensions that may make use of `AbstractUser`.



##########
extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java:
##########
@@ -780,5 +788,15 @@ public Permissions getEffectivePermissions() throws 
GuacamoleException {
     public boolean isSkeleton() {
         return (getModel().getEntityID() == null);
     }
+    
+    @Override
+    public boolean isCaseSensitive() {
+        try {
+            return environment.getCaseSensitiveUsernames();
+        }
+        catch (GuacamoleException e) {
+            return true;
+        }

Review Comment:
   Should the failure be logged here?



##########
extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLGuacamoleProperties.java:
##########
@@ -301,6 +301,14 @@ private MySQLGuacamoleProperties() {}
         @Override
         public String getName() { return "mysql-batch-size"; }
 
-    };    
+    };
+    
+    public static final BooleanGuacamoleProperty 
MYSQL_CASE_SENSITIVE_USERNAMES =
+            new BooleanGuacamoleProperty() {

Review Comment:
   Please document.



##########
extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/user/AuthenticatedUser.java:
##########
@@ -66,6 +75,16 @@ public void init(Credentials credentials, UserData userData) 
{
         this.userData = userData;
         setIdentifier(userData.getUsername());
     }
+    
+    @Override
+    public boolean isCaseSensitive() {
+        try {
+            return confService.getCaseSensitiveUsernames();
+        }
+        catch (GuacamoleException e) {
+            return false;
+        }

Review Comment:
   This will have the effect of preventing the configuration error from being 
logged unless we explicitly log the error here. It would be good to log the 
fact that an error occurred and that usernames will be presumed to be 
case-sensitive.



##########
guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AbstractIdentifiable.java:
##########
@@ -34,12 +34,19 @@ public abstract class AbstractIdentifiable implements 
Identifiable {
 
     @Override
     public String getIdentifier() {
-        return identifier;
+        if (identifier == null || isCaseSensitive())
+            return identifier;
+        
+        return identifier.toLowerCase();
     }
 
     @Override
     public void setIdentifier(String identifier) {
-        this.identifier = identifier;
+        if (isCaseSensitive())
+            this.identifier = identifier;
+        else
+            if (identifier != null)
+                this.identifier = identifier.toLowerCase();

Review Comment:
   For clarity, this should either be rolled up into an `else if` or the `else` 
block should have braces.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@guacamole.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to