You need to do two things to get access to
UserManager/PrincipalManager. First, you should remove the
org.apache.sling.jcr.jackrabbit.api bundle. Then download the
Jackrabbit 1.5 API bundle & install that instead (it's OSGI-ified).
That will export the releveant JSR283 packages.
Then you should be able to do the following (in a JSP or anywhere you
have a Session):
UserManager userManager = null;
if(session instanceof PooledJackrabbitSession) {
userManager = ((PooledJackrabbitSession)session).getUserManager();
} else {
// use reflection since Jackrabbit.core package not exported
Method m = session.getClass().getMethod("getUserManager");
userManager = (UserManager)m.invoke(session);
}
This same pattern works for PrincipalManager which is exposed on the
JackrabbitSession. If you want the AccessControlManager (to set ACLs),
you'll need to use the reflection approach only for now. You don't need
to actually access the "security" workspace in order to create & manager
users (although there's no good way to list all users right now, so
accessing the workspace probably would give you that ability).
I've created a utility class that wraps up all this messy code - I'll
open an issue & submit the patch now.
Regards,
Rory
yanshaozhiGmail wrote:
HI:
As I know , now sling is support for jackrabbit 1.5 , it will
more powerfull if sling can provide api for user manager .
And is there any way to implement user manage with sling
if I implement it myself ? how can I get ""security" workspace?
It's seems that there isn't "security" workspace in sling's
jackrabbit repository.
2009-01-08
yanjie