pero 2005/08/17 03:40:37 Modified: catalina/src/share/org/apache/catalina/realm UserDatabaseRealm.java Log: Create GenericPrincipal instead MemoryUser to eaisier cluster replication handling and compatibilty with all other standard implementation. MemoryUser can be found at userPrincipal. Revision Changes Path 1.13 +27 -3 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/realm/UserDatabaseRealm.java Index: UserDatabaseRealm.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/realm/UserDatabaseRealm.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- UserDatabaseRealm.java 23 Feb 2005 19:27:56 -0000 1.12 +++ UserDatabaseRealm.java 17 Aug 2005 10:40:33 -0000 1.13 @@ -19,7 +19,9 @@ import java.security.Principal; +import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import javax.naming.Context; @@ -30,6 +32,7 @@ import org.apache.catalina.User; import org.apache.catalina.UserDatabase; import org.apache.catalina.core.StandardServer; +import org.apache.catalina.users.MemoryUser; import org.apache.catalina.util.StringManager; @@ -200,8 +203,29 @@ */ protected Principal getPrincipal(String username) { - return (database.findUser(username)); - + Principal principal = database.findUser(username); + if(principal instanceof GenericPrincipal) + return principal ; + + List roles = new ArrayList(); + if(principal instanceof MemoryUser) { + MemoryUser user = (MemoryUser)principal; + Iterator uroles = user.getRoles(); + while(uroles.hasNext()) { + Role role = (Role)uroles.next(); + roles.add(role.getName()); + } + Iterator groups = user.getGroups(); + while(groups.hasNext()) { + Group group = (Group)groups.next(); + uroles = user.getRoles(); + while(uroles.hasNext()) { + Role role = (Role)uroles.next(); + roles.add(role.getName()); + } + } + } + return new GenericPrincipal(this, username, getPassword(username), roles, principal); }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]