You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by rohit mittal <ro...@gmail.com> on 2009/10/15 08:46:06 UTC

Set the permission(read/write/all) on a node

Hi users,

I have a problem regarding to set the permission(read/write/all) on a node
for a user. In my user configuration ,I
place users in different directories on a single workspace.

The configuration for access manager in repository.xml is as follows:

  <AccessManager
class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager">
     <!--  <param name="config" value="${rep.home}/access.xml"/>       -->
  </AccessManager>

  To set the policy for a user("user1") , i am using following code-

AccessControlManager accessControlManager =
sessionImpl.getAccessControlManager();
String restrictedArea = folderNode.getPath();
AccessControlPolicy[] restrictedPolicies =
accessControlManager.getPolicies(restrictedArea);
JackrabbitAccessControlList restrictedPolicy =(JackrabbitAccessControlList)
restrictedPolicies.nextAccessControlPolicy();
Privilege[] privileges = {
accessControlManager.privilegeFromName(Privilege.JCR_READ) };
Principal p_myUser = new PrincipalImpl("user1");
restrictedPolicy.addEntry(p_myUser, privileges, true);
accessControlManager.setPolicy(restrictedArea, restrictedPolicy);
sessionImpl.save();

  Please tell me , How to set the permission on a node ?

Thanks
Rohit Mittal

Re: Set the permission(read/write/all) on a node

Posted by Alexander Klimetschek <ak...@day.com>.
On Fri, Oct 16, 2009 at 08:08, rohit mittal <ro...@gmail.com> wrote:
> Hi users,
>
> I have used this configuration for access manager in repository.xml
>
>    <AccessManager
> class="org.apache.jackrabbit.core.security.DefaultAccessManager">
>           <!--  <param name="config" value="${rep.home}/access.xml"/>
> -->
>
>        </AccessManager>
>
>
>    AccessControlManager acManager = sessionImpl.getAccessControlManager();
>    AccessControlPolicy acPolicy = null;
>    AccessControlList acl = null;
>    String nodePath = folderNode.getPath();
>    AccessControlPolicyIterator policyIterator =
> acManager.getApplicablePolicies(nodePath);
>    if (policyIterator.hasNext())
>    {
>        acPolicy = policyIterator.nextAccessControlPolicy();
>    }
>    else
>    {
>        AccessControlPolicy[] existingPolicies =
> acManager.getPolicies(nodePath);
>        acPolicy = existingPolicies[0];
>    }
>    if (acPolicy instanceof AccessControlList)
>    {
>        acl = (AccessControlList) acPolicy;
>        Privilege[] privileges = {
> acManager.privilegeFromName(Privilege.JCR_ALL) };
>        Principal p_myUser = new PrincipalImpl("user1");
>        boolean flag = acl.addAccessControlEntry(p_myUser, privileges);
>        System.out.println("..........................." + flag);
>        acManager.setPolicy(nodePath, acl);
>        sessionImpl.save();
>        session.save();
>    }
>
>   In this code
>   acl.addAccessControlEntry(p_myUser, privileges);  always return false for
> when i login to user and its return true only for when i login to admin.

I guess that's because not everyone is allowed to set ACLs (there is a
separate right for that) and by default only the admin user is allowed
to do that (afaik).

Regards,
Alex

-- 
Alexander Klimetschek
alexander.klimetschek@day.com

Re: Set the permission(read/write/all) on a node

Posted by rohit mittal <ro...@gmail.com>.
Hi users,

I have used this configuration for access manager in repository.xml

    <AccessManager
class="org.apache.jackrabbit.core.security.DefaultAccessManager">
           <!--  <param name="config" value="${rep.home}/access.xml"/>
-->

        </AccessManager>


    AccessControlManager acManager = sessionImpl.getAccessControlManager();
    AccessControlPolicy acPolicy = null;
    AccessControlList acl = null;
    String nodePath = folderNode.getPath();
    AccessControlPolicyIterator policyIterator =
acManager.getApplicablePolicies(nodePath);
    if (policyIterator.hasNext())
    {
        acPolicy = policyIterator.nextAccessControlPolicy();
    }
    else
    {
        AccessControlPolicy[] existingPolicies =
acManager.getPolicies(nodePath);
        acPolicy = existingPolicies[0];
    }
    if (acPolicy instanceof AccessControlList)
    {
        acl = (AccessControlList) acPolicy;
        Privilege[] privileges = {
acManager.privilegeFromName(Privilege.JCR_ALL) };
        Principal p_myUser = new PrincipalImpl("user1");
        boolean flag = acl.addAccessControlEntry(p_myUser, privileges);
        System.out.println("..........................." + flag);
        acManager.setPolicy(nodePath, acl);
        sessionImpl.save();
        session.save();
    }

   In this code
   acl.addAccessControlEntry(p_myUser, privileges);  always return false for
when i login to user and its return true only for when i login to admin.
   So privilege are not setting for user. So how can i do?

   *Thanks
   Rohit Mittal*





On Thu, Oct 15, 2009 at 8:36 PM, Angela Schreiber <an...@day.com> wrote:

> hi rohit
>
> as far as i know the SimpleAccessManager doesn't support
> access control editing.
>
> regards
> angela
>
>
>
>  I have a problem regarding to set the permission(read/write/all) on a node
>> for a user. In my user configuration ,I
>> place users in different directories on a single workspace.
>>
>> The configuration for access manager in repository.xml is as follows:
>>
>>  <AccessManager
>> class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager">
>>     <!--  <param name="config" value="${rep.home}/access.xml"/>       -->
>>  </AccessManager>
>>
>>  To set the policy for a user("user1") , i am using following code-
>>
>> AccessControlManager accessControlManager =
>> sessionImpl.getAccessControlManager();
>> String restrictedArea = folderNode.getPath();
>> AccessControlPolicy[] restrictedPolicies =
>> accessControlManager.getPolicies(restrictedArea);
>> JackrabbitAccessControlList restrictedPolicy
>> =(JackrabbitAccessControlList)
>> restrictedPolicies.nextAccessControlPolicy();
>> Privilege[] privileges = {
>> accessControlManager.privilegeFromName(Privilege.JCR_READ) };
>> Principal p_myUser = new PrincipalImpl("user1");
>> restrictedPolicy.addEntry(p_myUser, privileges, true);
>> accessControlManager.setPolicy(restrictedArea, restrictedPolicy);
>> sessionImpl.save();
>>
>>  Please tell me , How to set the permission on a node ?
>>
>> Thanks
>> Rohit Mittal
>>
>>
>

Re: Set the permission(read/write/all) on a node

Posted by Angela Schreiber <an...@day.com>.
hi rohit

as far as i know the SimpleAccessManager doesn't support
access control editing.

regards
angela


> I have a problem regarding to set the permission(read/write/all) on a node
> for a user. In my user configuration ,I
> place users in different directories on a single workspace.
> 
> The configuration for access manager in repository.xml is as follows:
> 
>   <AccessManager
> class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager">
>      <!--  <param name="config" value="${rep.home}/access.xml"/>       -->
>   </AccessManager>
> 
>   To set the policy for a user("user1") , i am using following code-
> 
> AccessControlManager accessControlManager =
> sessionImpl.getAccessControlManager();
> String restrictedArea = folderNode.getPath();
> AccessControlPolicy[] restrictedPolicies =
> accessControlManager.getPolicies(restrictedArea);
> JackrabbitAccessControlList restrictedPolicy =(JackrabbitAccessControlList)
> restrictedPolicies.nextAccessControlPolicy();
> Privilege[] privileges = {
> accessControlManager.privilegeFromName(Privilege.JCR_READ) };
> Principal p_myUser = new PrincipalImpl("user1");
> restrictedPolicy.addEntry(p_myUser, privileges, true);
> accessControlManager.setPolicy(restrictedArea, restrictedPolicy);
> sessionImpl.save();
> 
>   Please tell me , How to set the permission on a node ?
> 
> Thanks
> Rohit Mittal
>