Gestión de Espacios con WebScript
- Área: Ejemplos Ampliados de Acceso a Alfresco
- Carácter del recurso: Recomendado
Descripción
Código correspondiente al archivo OperacionesEspacio.get.desc.xml
<webscript>
<shortname>OperacionesEspacio</shortname>
<description>Operaciones que se puede realizar con un espacio/directorio en Alfresco</description>
<url>/sample/OperacionesEspacio?nombre={nom}</url>
<format default="html">argument</format>
<authentication>guest</authentication>
</webscript>
Código correspondiente al archivo OperacionesEspacio.get.html.ftl
<html>
<body>
<img src="/servicios/madeja/%24%7Burl.context%7D/images/logo/AlfrescoLogo32.png" alt="Alfresco" />
${salida}
</body>
</html>
Código correspondiente al archivo OperacionesEspacio.get.js
Declaramos la variable salida ,que nos servirá para posteriormente tener un log con los resultado de las operaciones
model.salida="";
Comprobamos que el parametro recibido sea valido.
if ((args.nombre) && (args.nombre!=""))
{
var parametro_entrada = args.nombre;
}
else
{
model.salida += "Error en el paso de argumentos\n<br>";
}
Obtenemos el nodo Company Home ,que sera donde realizaremos las pruebas.
var folder = roothome.childByNamePath("Company Home");
model.salida=" parametro: "+parametro_entrada+"<br>";
if (folder == undefined || !folder.isContainer)
{
status.code = 404;
status.message = "Folder " + url.extension + " not found.";
status.redirect = true;
}
else
{
Creamos Dos espacios con los cuales realizaremos las pruebas
folder.createFolder(parametro_entrada);
folder.createFolder(parametro_entrada+"2");
var dir1= folder.childByNamePath(parametro_entrada);
var dir2= folder.childByNamePath(parametro_entrada+"2");
model.salida+="Creación de espacios correcta <br>";
Movemos un espacio dentro de otro
if(dir2.move(dir1))
{
model.salida+="espacio movido correctamente<br>";
}
else
{
model.salida+="fallo en el movimiento del directorio\n<br>";
}
Renombramos el directorio creado
dir1.properties.name="TEST";
dir1.save();
model.salida+="Se ha producido correctamente el cambio de nombre del directorio<br>";
Le asignamos unos nuevos permisos al espacio, el usuario "Jose" obtendra el permiso de Consumer sobre el espacio creado
dir1.setInheritsPermissions(false);
dir1.removePermission("Consumer","GROUP_GROUP_EVERYONE");
dir1.setPermission("Consumer","jose");
model.salida+="Se le han otorgado correctamente los permisos al usuario \"jose\" <br>";
}
Eliminamos el directorio creado
if(dir1.remove())
{
model.salida+="Se la eliminado correctamente el directorio<br>";
}
else
{
model.salida+="Se ha producido un fallo en la eliminación del directorio<br>";
}
Permisos
Para comprobar que el directorio tiene los permisos que se le han otorgado el siguiente código comprueba si el usuario tiene permisos de lectura y escritura, (Recuerda iniciar una sesión con el usuario que se le haya otorgado al espacio).
Código correspondiente al archivo permisos.get.desc.xml
<webscript>
<shortname>Permisos</shortname>
<description>WebScript para comprobar los permisos de un directorio en Alfresco</description>
<url>/sample/permisos?nombre={nom}</url>
<format default="html">argument</format>
<authentication>guest</authentication>
</webscript>
Código correspondiente al archivo permisos.get.html.ftl
<html>
<body>
<img src="/servicios/madeja/%24%7Burl.context%7D/images/logo/AlfrescoLogo32.png" alt="Alfresco" />
${salida}
</body>
</html>
Código correspondiente al archivo permisos.get.js
Iniciamos la variable salida.
model.salida="";
Comprobamos que el parametro nombre sea valido y no este vacío,
if ((args.nombre) && (args.nombre!=""))
{
var parametro_entrada = args.nombre;
}
else
{
model.salida += "Error en el paso de argumentos\n<br>";
}
Obtenemos el nodo Company Home
var folder = roothome.childByNamePath("Company Home");
var dir1= folder.childByNamePath(parametro_entrada);
if (folder == undefined || !folder.isContainer || dir1==null)
{
status.code = 404;
status.message = "Directorio " + url.extension + " no encontrado.";
status.redirect = true;
}
else
{
Comprobamos si el usuario tiene permisos de escritura y lectura sobre el espacio indicado por parametro.
model.salida+="El espacio : \""+folder.qnamePath +"/" +parametro_entrada +"\" es un espacio valido <br>";
if(dir1.hasPermission("Read"))
{
model.salida+="Si tiene permisos de lectura\n<br>";
}
else
{
model.salida+="No tiene permisos de lectura\n<br>";
}
if(dir1.hasPermission("Write"))
{
model.salida+="Si tiene permisos de Escritura\n<br>";
}
else
{
model.salida+="No tiene permisos de Escritura\n<br>";
}
}