Hi, I am trying grant privileges to a user but I can not do it. The code
I am using is the following.
Can anybody help me?
Repository repository = new TransientRepository(new File(_rep));
Session session = repository.login(new
SimpleCredentials("admin","admin");
UserManager userManager = ((JackrabbitSession)
session).getUserManager();
AccessControlManager acm = session.getAccessControlManager();
Node node = sessionAdmin.getRootNodeByIdentifier("admin");
Authorizable authorizable = userManager.getAuthorizable(user);
Principal p = (Principal) ((User) authorizable).getPrincipal();
Privilege[] privileges = null;
AccessControlPolicyIterator it = (AccessControlPolicyIterator)
acm.getApplicablePolicies(node.getPath());
if (it.hasNext())
{
AccessControlPolicy policy = it.nextAccessControlPolicy();
if (policy instanceof AccessControlList)
{
privileges[0] = acm.privilegeFromName(Privilege.JCR_MODIFY_PROPERTIES);
privileges[1] = acm.privilegeFromName(Privilege.JCR_ADD_CHILD_NODES);
privileges[2] = acm.privilegeFromName(Privilege.JCR_REMOVE_NODE);
privileges[3] =
acm.privilegeFromName(Privilege.JCR_REMOVE_CHILD_NODES);
privileges[4] =
acm.privilegeFromName(Privilege.JCR_NODE_TYPE_MANAGEMENT);
((AccessControlList)policy).addAccessControlEntry(p,privileges);
acm.setPolicy(node.getPath(), policy);
}
}
session.save();
session.logout();
Another problem is, in class AccessControlPolicy I must call
AccessControlPolicy.getApplicablePolicies() and setPolicy() passing as
parameter a node. I do not know how I should get this nodo.
Session.getRootNode()?
session.getNode("user")?
session.getNodeByIdentifier("user")?
If I call getNode("user") or getNodeByIdentifier("user") the program
throws a Repository exception.
Thank you in advance. Regards.
El sáb, 22-01-2011 a las 18:44 +0100, Seidel. Robert escribió:
> Hi Javier,
>
> The jsr specification helped me a lot:
> http://jcp.org/aboutJava/communityprocess/final/jsr283/index.html
>
> See page 225 and following.
>
> Regards, Robert
>
> -----Ursprüngliche Nachricht-----
> Von: Angela Schreiber [mailto:[email protected]]
> Gesendet: Freitag, 21. Januar 2011 15:10
> An: [email protected]
> Betreff: Re: New information about my last email...
>
> hi javier
>
> > About grant privileges an user, I am some lost. I understood first step
> > and second step but I do not know how follow. How can I get
> > AccessControlList? How grant privileges with User.getPrincipal?
>
> did you take a look a the JCR API related to access control?
> starting from Session.getAccessControlManager() you should find your
> way through, i guess.
>
> angela