Hey Bill,

many thanks to clean this up
Peter

[EMAIL PROTECTED] schrieb:

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]








---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to