/* ******************************************************************************************************** */
/* 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
//Salvamos el log para guardar
logFile.content += "FIN Log \r\n\r\n";
logFile.content = salida+"\r\n\r\n";
logFile.save();
logFile.content;
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;
/* Insercion del texto de log */
logFile.content += log;
…
nodeVar.removePermission(group, permission);
nodeVar.save();
…
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)
void removePermission(string permission)
Remove a permission for ALL users from the node.
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.Content from pre 2016 and from language groups that have been closed.
Content is read-only.
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.