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]