You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-user@jakarta.apache.org by Kai Rivera <ka...@gmail.com> on 2006/04/03 12:27:31 UTC
Programmatically set user permissions
Hi,
I'm a jakarta slide newbie and am working on a project where we have to
synchronize a file repository in jahia with a proprietary file repository.
In the source directory, all the user permissions have been set and our
client would like us not only to synchronize the files, but to keep the
user permissions too.
How do we programmatically set user permissions with slide?
Thanks in advance!
--
Cheers,
Kai Rivera
"Get things done."
Re: Programmatically set user permissions
Posted by Kai Rivera <ka...@gmail.com>.
Hi Sven,
Thanks for the tip. Here's the sample program I did that might help someone
encountering the same issue.
Kai
-----------------------------
package JavaSource;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Enumeration;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpURL;
import org.apache.commons.lang.StringUtils;
import org.apache.webdav.lib.Ace;
import org.apache.webdav.lib.Privilege;
import org.apache.webdav.lib.WebdavResource;
import org.apache.webdav.lib.WebdavResources;
import org.apache.webdav.lib.properties.AclProperty;
import org.apache.webdav.lib.util.QName;
public class Permissions {
static final String URL = "
http://localhost:8080/jahia/webdav/site/myjahiasite/shared/files/";
static final String USR = "root";
//static final String USR = "iml";
//static final String USR = "intranet";
static final String PATH =
"/jahia/webdav/site/myjahiasite/shared/files/IML/";
static final String PRINCIPAL =
"/jahia/webdav/site/myjahiasite+/groups/intranetauthor/members";
static final String RESOURCE_NAME = "IML";
static final String PAS = "password";
static final String NAMESPACE = "DAV:";
static final String READ = "read";
static final String WRITE = "write";
static final String MANAGE = "manage";
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
WebdavResource wdr = null;
try {
// Print connection info
System.out.println("URL = " + URL);
System.out.println("USERNAME = " + USR);
System.out.println("PASSWORD = " + PAS);
// HttpURL hrl = new HttpURL(USR, PAS, URL);
HttpURL hrl = new HttpURL(URL);
hrl.setUserinfo(USR, PAS);
// Initialize connection to webdav resource using the define
HttpURL
// above.
wdr = new WebdavResource(hrl);
System.out.println("Path = " + wdr.getPath());
System.out.println("WebdavResource Name = " + wdr.getName());
// Get the child resources (folder/s or file/s) of the
// retrieved web dave resource.
WebdavResources resources = wdr.getChildResources();
WebdavResource[] resourceList = resources.listResources();
int counter = resourceList.length;
System.out.println("No. of Child Resouces = " + counter);
// Check if the resource RESOURCE_NAME is one of the child
resources
boolean hasResource = resources.isThereResourceName
(RESOURCE_NAME);
System.out.println("Has child resource " + RESOURCE_NAME + "? "
+ hasResource);
// Get all the child resources
for (int i = 0; i < counter; i++) {
WebdavResource resource = resourceList[i];
String resourceName = resource.getName();
System.out.println
("========================================");
System.out.println("Resource Name = " + resourceName);
System.out.println
("========================================");
AclProperty acl = resource.aclfindMethod(PATH);
Ace[] aces = acl.getAces();
int length = aces.length;
for (int j = 0; j < length; j++) {
Ace ace = aces[j];
showAceProperties(ace);
showAcePrivileges(ace.enumeratePrivileges());
System.out.println
("********************************************************");
}
// Adding the new Ace for the group IMLAUTHOR
if (StringUtils.equals(resourceName, RESOURCE_NAME)){
Ace ace = new
Ace("/jahia/webdav/site/myjahiasite+/groups/imlauthor/members");
// Do not deny access
ace.setNegative(false);
// Not Protected
ace.setProtected(false);
// Not Inherited
ace.setInherited(false);
ace.setInheritedFrom(null);
// Read, Write and Manage privileges
Privilege readPrivilege = new Privilege(NAMESPACE, READ,
null);
Privilege writePrivilege = new Privilege(NAMESPACE,
WRITE, null);
Privilege managePrivilege = new Privilege(NAMESPACE,
MANAGE, null);
ace.addPrivilege(readPrivilege);
ace.addPrivilege(writePrivilege);
ace.addPrivilege(managePrivilege);
// Display new Ace properties and privileges to be added
to the web dav resource
System.out.println("These are the new ace properties and
privileges: ");
showAceProperties(ace);
showAcePrivileges(ace.enumeratePrivileges());
// Update the web dav resource's aces
Ace[] oldAces=aces;
aces=new Ace[oldAces.length+1];
System.arraycopy(oldAces, 0, aces, 0, oldAces.length);
// Add new Ace
aces[oldAces.length] = ace;
System.out.println("Performing aclMethod(" + PATH + ",
aces) method...");
boolean updateAces = wdr.aclMethod(PATH, aces);
System.out.println("Update Aces successful? " +
updateAces);
}
}
} catch (MalformedURLException mue) {
System.out.println("MalformedURLException");
mue.printStackTrace();
} catch (HttpException he) {
System.out.println("HttpException");
he.printStackTrace();
} catch (IOException ioe) {
System.out.println("IOException");
ioe.printStackTrace();
} catch (Exception e) {
System.out.println("Exception");
e.printStackTrace();
} finally {
try {
// It is important to close the webdav resource connection
wdr.close();
} catch (IOException ioe){
System.out.println("IOException");
ioe.printStackTrace();
}
}
}
/**
* Display properties of the AclMethod's ace object
*
* @param ace
*/
private static void showAceProperties(Ace ace) {
System.out.println("Principal = " + ace.getPrincipal());
System.out.println("Property = " + ace.getProperty());
System.out.println("Is Negative? = " + ace.isNegative());
System.out.println("Is Protected? = " + ace.isProtected());
System.out.println("Is Inherited? = " + ace.isInherited());
if (ace.isInherited())
System.out.println("Inherited From = " + ace.getInheritedFrom
());
}
/**
* @param privileges
*/
private static void showAcePrivileges(Enumeration privileges) {
System.out.println("Privileges: ");
while (privileges != null && privileges.hasMoreElements()) {
Privilege privilege = (Privilege) privileges.nextElement();
System.out.println("Name = " + privilege.getName());
System.out.println("Namespace = " + privilege.getNamespace());
System.out.println("Parameter = " + privilege.getParameter());
}
}
}
On 4/4/06, Kai Rivera <ka...@gmail.com> wrote:
>
> Hi Sven,
>
> Cool, thanks! :-) I normally don't do this but due to the fact that we're
> sooo pressed for time to finish
> this project, I would be extremely grateful if you could post a code
> snippet for this.
>
> Thank you!
>
> --
>
> Cheers,
> Kai Rivera
>
> "Get things done."
>
> On 4/3/06, Sven Pfeiffer <sv...@innoface.de> wrote:
> >
> > Hi,
> >
> > you can use the WebdavResources aclMethod(java.lang.String path,Ace[]
> > aces)
> > - method.
> >
> > Thats what I am working with to let the users change the ACLs using a
> > gui.
> >
> > hth
> > SVen
> >
> >
> > >-----Original Message-----
> > >From: Kai Rivera [mailto:kai.rivera@gmail.com]
> > >Sent: Monday, April 03, 2006 12:28 PM
> > >To: slide-user@jakarta.apache.org
> > >Subject: Programmatically set user permissions
> > >
> > >Hi,
> > >
> > >I'm a jakarta slide newbie and am working on a project where we have to
> > >synchronize a file repository in jahia with a proprietary file
> > >repository.
> > >In the source directory, all the user permissions have been set and our
> > >client would like us not only to synchronize the files, but to keep the
> > >user permissions too.
> > >
> > >How do we programmatically set user permissions with slide?
> > >
> > >Thanks in advance!
> > >
> > >--
> > >Cheers,
> > >Kai Rivera
> > >
> > >"Get things done."
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: slide-user-help@jakarta.apache.org
> >
> >
>
>
>
Re: Programmatically set user permissions
Posted by Kai Rivera <ka...@gmail.com>.
Hi Sven,
Cool, thanks! :-) I normally don't do this but due to the fact that we're
sooo pressed for time to finish
this project, I would be extremely grateful if you could post a code snippet
for this.
Thank you!
--
Cheers,
Kai Rivera
"Get things done."
On 4/3/06, Sven Pfeiffer <sv...@innoface.de> wrote:
>
> Hi,
>
> you can use the WebdavResources aclMethod(java.lang.String path,Ace[]
> aces)
> - method.
>
> Thats what I am working with to let the users change the ACLs using a gui.
>
> hth
> SVen
>
>
> >-----Original Message-----
> >From: Kai Rivera [mailto:kai.rivera@gmail.com]
> >Sent: Monday, April 03, 2006 12:28 PM
> >To: slide-user@jakarta.apache.org
> >Subject: Programmatically set user permissions
> >
> >Hi,
> >
> >I'm a jakarta slide newbie and am working on a project where we have to
> >synchronize a file repository in jahia with a proprietary file
> >repository.
> >In the source directory, all the user permissions have been set and our
> >client would like us not only to synchronize the files, but to keep the
> >user permissions too.
> >
> >How do we programmatically set user permissions with slide?
> >
> >Thanks in advance!
> >
> >--
> >Cheers,
> >Kai Rivera
> >
> >"Get things done."
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-user-help@jakarta.apache.org
>
>
RE: Programmatically set user permissions
Posted by Sven Pfeiffer <sv...@innoface.de>.
Hi,
you can use the WebdavResources aclMethod(java.lang.String path,Ace[] aces)
- method.
Thats what I am working with to let the users change the ACLs using a gui.
hth
SVen
>-----Original Message-----
>From: Kai Rivera [mailto:kai.rivera@gmail.com]
>Sent: Monday, April 03, 2006 12:28 PM
>To: slide-user@jakarta.apache.org
>Subject: Programmatically set user permissions
>
>Hi,
>
>I'm a jakarta slide newbie and am working on a project where we have to
>synchronize a file repository in jahia with a proprietary file
>repository.
>In the source directory, all the user permissions have been set and our
>client would like us not only to synchronize the files, but to keep the
>user permissions too.
>
>How do we programmatically set user permissions with slide?
>
>Thanks in advance!
>
>--
>Cheers,
>Kai Rivera
>
>"Get things done."
>
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org