08-02-2011 04:49 AM
/* ******************************************************************************************************** */
/* Script que permite el borrado de permisos establecidos en los subespacios a partir del espacio donde */
/* se ejecute. */
/* */
/* Una vez finalizado genera un archivo de log, en el mismo espacio donde se ejecute, que mostrara todas */
/* las incidencias surgidas en el proceso. */
/* */
/* Las constantes "group" y "permission" determinan a que grupo o usuario se quiere eliminar el permiso. */
/* Por otro lado, la constante "spaceDestinity" indica el espacio padre a partir del cual se comenzara a */
/* ejecutar el script (excluyendolo a el). */
/* */
/* Ademas elimina la herencia de permisos en dichos subespacios (linea 62). */
/* ******************************************************************************************************** */
/* Constantes */
var spaceDestinity = space; // Espacio destino. Aquel donde se va almacenar el log y a partir del cual se van a borrar los permisos.
var state = "ALLOWED"; // Estado del permiso. "ALLOWED" indica que el estado del permiso es "permitido" o esta "activado".
var group = "GROUP_EVERYONE"; // Grupo o usuario. Indica el grupo o usuario al que se le quiere quitar el permiso.
var permission = "Consumer"; // Permiso. Indica el permiso que se quiere quitar.
var date = new Date(); // Objeto fecha que permitira crear el archivo de log unico.
/* Adaptacion del objeto fecha al formato espanol */
var month = date.getMonth() + 1;
if (month > 0 && month < 10) {
month = "0" + month;
}
var day = date.getDate() + 1;
if (day > 0 && day < 10) {
day = "0" + day;
}
/* Creacion del archivo de log en el espacio destino */
var logFileName = "permissions_deleted_" + date.getFullYear() + month + day + date.getHours() + date.getMinutes() + date.getSeconds() + ".txt";
var logFile = spaceDestinity.childByNamePath(logFileName);
var log = "";
if (logFile == null) {
logFile = spaceDestinity.createFile(logFileName);
}
/* Llamada a la funcion */
deletePermissions();
/* Funcion */
function deletePermissions() {
// Se obtiene la lista de nodos (espacios y contenidos) hijos.
var childrenList = spaceDestinity.children;
log = "************** PERMISSIONS DELETED **************\n\n";
log += "Permissions to delete:\n";
log += "\tState: " + state + " | " + "Group: " + group + " | " + "Permission: " + permission + "\n\n";
for (var i = 0; i < childrenList.length; i++) {
// Se obtiene el primer nodo (espacio o contenido).
nodeVar = childrenList[i];
if (nodeVar.isContainer) {
log += nodeVar.name + ":\n";
if (nodeVar.hasPermission("ChangePermissions")) {
// Se deshabilita la herencia de permisos al nodo (espacio o contenido).
nodeVar.setInheritsPermissions(false);
// Se obtienen los permisos del nodo (espacio o contenido).
var permissions = nodeVar.permissions;
var result=[];
// Se itera por los permisos identificando aquellos que se quieren eliminar.
for (var j = 0; j < permissions.length; j++) {
var result = permissions[j].split(";");
var resultState = result[0];
var resultGroup = result[1];
var resultPermission = result[2];
if (resultState == state && resultGroup == group && resultPermission == permission) {
// Dependiendo de la version utilizada el prototipo del metodo cambia. Asi, el
// prototipo para una 3.x es como se muestra a continuacion, mientras que para
// un version 2.x es la que aparece una linea mas abajo.
//nodeVar.removePermission(group, permission);
nodeVar.removePermission(permission, group);
log += "\tState: " + resultState + " | " + "Group: " + resultGroup + " | " + "Permission: " + resultPermission;
log += "\t—>\tPermission deleted.\n";
} else {
log += "\tState: " + resultState + " | " + "Group: " + resultGroup + " | " + "Permission: " + resultPermission;
log += "\t—>\tPermission not deleted.\n";
}
}
} else {
log += "\tHis role does not allow you to change the permissions of this space.\n\n";
}
// Se hacen perisistentes los cambios. Esta llamada es valida para versiones 2.x, siendo
// opcional para versiones 3.x.
nodeVar.save();
}
}
}
/* Insercion del texto de log */
log += "**************** END OF DELETION ****************";
logFile.content += log;
logFile.save();
logFile.content
08-02-2011 05:31 AM
//Salvamos el log para guardar
logFile.content += "FIN Log \r\n\r\n";
logFile.content = salida+"\r\n\r\n";
logFile.save();
logFile.content;
08-03-2011 02:12 AM
Una cosa… No veo por ningún lado que realices un .save sobre el log, lo mismo con los nodos que tratas cuando mofidicas el permiso. Ten cuidado porque la 2.x ers muy tiquismiquis para todas estas cosas (las pasé horrible haciendo un scrip para la 2.1.7 en su época).
Lo del log deberías poner debajo de la llamada al delete
/* Llamada a la funcion */
deletePermissions();
/* Insercion del texto de log */
logFile.content += log;
08-03-2011 03:21 AM
/* Insercion del texto de log */
logFile.content += log;
…
nodeVar.removePermission(group, permission);
nodeVar.save();
…
08-05-2011 06:57 AM
nodeVar.removePermission(group, permission);
Error Por favor corrija los errores siguientes y haga clic en Finalizar.
* No se ha podido crear la acción debido a un error: Failed to execute script 'workspace://SpacesStore/e36e3ccd-be92-11e0-910f-bf45e125ba1a': Failed to execute script 'workspace://SpacesStore/e36e3ccd-be92-11e0-910f-bf45e125ba1a': Wrapped java.lang.UnsupportedOperationException: Can not find GROUP_EVERYONE (AlfrescoScript#77)
08-05-2011 07:23 AM
void removePermission(string permission)
Remove a permission for ALL users from the node.
08-08-2011 02:36 AM
void removePermission(string permission, string authority)
Remove a permission for the specified authority (e.g. username or group) from the node.
La diferencia con respecto a las versiones 3.x es que el prototipo cambia, ya que en este caso el primer parámetro de entrada es el permiso y el segundo el grupo o usuario, mientras que para las 3.x es al contrario.08-08-2011 05:05 AM
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.