I wish I had a month to do such a thing.
I've been studying the source in preparation for implementing my own principal store (to access my currently existing user/role DB), and from what I've seen Slide looks tightly coupled to its current config mechanism. However, I'm planning on borrowing the DAO idea from Acegi. I'm going to implement a DAOPrincipalStore that simply delegates to a simplified DAO. I think it will look something like this:
Code:
public interface PrincipalStoreDAO
{
Collection getRoles();
Collection getUsers(... some kind of Slide criteria ...)
Collection getUsersWithRole(String roleName)
}
}
But don't quote me on that yet.
Slide is odd in that it does not directly lookup the roles a user has, but rather expects each role to list the users who have the role. So whenever it does a permission check it first gets the role, parses an XML formatted property on the role that contains the list of all users who have the role, and then iterates through the list to see if it contains the current user. Our system will eventually grow to having thousands of users with certain roles...
Slide completely controls the lifecycle of the Store, from what I can tell. So, I'm planning on somehow getting access to the Spring app context from within the Store so that the store can lookup the DAO from Spring. Not sure yet how the store is going to get the app context, though. Any ideas? The Store won't have access to a servlet context so that rules out WebApplicationContextUtils. I'd hate to have to use some static variable somewhere...
- Andy