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]