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]

Reply via email to