billbarker 2005/08/17 21:41:02 Modified: catalina/src/share/org/apache/catalina/realm UserDatabaseRealm.java Log: Clean up previous patch so it works with Custom UserDatabases, not just the Memory one. Revision Changes Path 1.14 +22 -18 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.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- UserDatabaseRealm.java 17 Aug 2005 10:40:33 -0000 1.13 +++ UserDatabaseRealm.java 18 Aug 2005 04:41:02 -0000 1.14 @@ -142,6 +142,12 @@ * @param role Security role to be checked */ public boolean hasRole(Principal principal, String role) { + if( principal instanceof GenericPrincipal) { + GenericPrincipal gp = (GenericPrincipal)principal; + if(gp.getUserPrincipal() instanceof User) { + principal = gp.getUserPrincipal(); + } + } if(! (principal instanceof User) ) { //Play nice with SSO and mixed Realms return super.hasRole(principal, role); @@ -203,29 +209,27 @@ */ protected Principal getPrincipal(String username) { - Principal principal = database.findUser(username); - if(principal instanceof GenericPrincipal) - return principal ; - + User user = database.findUser(username); + if(user == null) { + return null; + } + List roles = new ArrayList(); - if(principal instanceof MemoryUser) { - MemoryUser user = (MemoryUser)principal; - Iterator uroles = user.getRoles(); + 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()); } - 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); + return new GenericPrincipal(this, username, user.getPassword(), roles, user); }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]