Siguiendo con los scripts para la administración de usuario y grupos en alfresco, añado algunos más que pueden resultar útiles:
- grupos_por_usuario.js:Su propio nombre ya es bastante descriptivo, se trata de un script que dado un usuario, nos devuelve los grupos a los que este usuario está añadido. Y digo añadido y no pertenece, puesto que no nos da el listado de grupos padres-hijos a los que pertenece por herencia, sino directamente los grupos a los que este usuario ha sido añadido.
//Variable a rellenar
var usuario="";
//Funcion que comprueba si un usuario dado existe como hijo de un grupo dado
function comprueba_grupo_usuario (grupo, usuario) {
scr_grupo = groups.getGroup(grupo);
var usuarios = scr_grupo.getChildUsers();
var encontrado = false;
var i = 0;
while ( i<usuarios.length && !encontrado) {
if ( usuarios[i].getFullName() == usuario ){
encontrado = true;
}
i++;
}
return encontrado;
}
//Creamos el log que devolveremos
var logFile = space.childByNamePath("documento_salida.txt");
if (logFile == null) {
logFile = space.createFile("documento_salida.txt");
}
logFile.content ="";
//Comprobamos si el usuario existe
var authority = people.getPerson(usuario);
if (authority){
lista = people.getContainerGroups(people.getPerson(usuario));
var log = "";
log+="El usuario: " + usuario + " pertenece a los siguientes grupos.\n";
for(var i=0;i<lista.length;i++)
{
grupo = (lista[i]).properties.authorityName;
grupo = grupo.substring(6,grupo.length);
if (comprueba_grupo_usuario(grupo,usuario)){
log+="Grupo: " + grupo + " \n";
}
}
}
logFile.content += log;
- grupos_por_lista_usuarios.js:En este caso, lo que le pasamos al script es un conjunto de usuarios de los cuales queremos obtener los grupos a los que están asignados.
//Variable a rellenar
var usuarios = new Array ('usuario1','usuario2','usuario3');
//Funcion que comprueba si un usuario dado existe como hijo de un grupo dado
function comprueba_grupo_usuario (grupo, usuario) {
scr_grupo = groups.getGroup(grupo);
var usuarios = scr_grupo.getChildUsers();
var encontrado = false;
var i = 0;
while ( i<usuarios.length && !encontrado) {
if ( usuarios[i].getFullName() == usuario ){
encontrado = true;
}
i++;
}
return encontrado;
}
var logFile = space.childByNamePath("documento_salida.txt");
if (logFile == null)
{
logFile = space.createFile("documento_salida.txt");
}
logFile.content ="";
var log = "";
for (var j=0;j<usuarios.length;j++)
{
var authority = people.getPerson(usuarios[j]);
if(authority)
{
lista = people.getContainerGroups(people.getPerson(usuarios[j]));
log+="El usuario: " + usuarios[j] + " pertenece a los siguientes grupos.\n";
for(var i=0;i<lista.length;i++)
{
grupo = (lista[i]).properties.authorityName;
grupo = grupo.substring(6,grupo.length);
if (comprueba_grupo_usuario(grupo,usuario)){
log+="Grupo: " + grupo + " \n";
}
}
}
}
logFile.content += log;
- copia_permisos_usuario.js:El último script de esta tanda resulta bastante útil si tienes que asignar los mismos grupos de un usuario origen a otro usuario destino.
//Variables a completar
var usuario_origen="usuario1";
var usuario_destino="usuario2";
var exclusivo = true;
//Log
var logFile = space.childByNamePath("documento_salida.txt");
if (logFile == null)
{
logFile = space.createFile("documento_salida.txt");
}
logFile.content ="";
var log = "";
//Funcion que comprueba si un usuario dado existe como hijo de un grupo dado
function comprueba_grupo_usuario (grupo, usuario) {
scr_grupo = groups.getGroup(grupo);
var usuarios = scr_grupo.getChildUsers();
var encontrado = false;
var i = 0;
while ( i<usuarios.length && !encontrado) {
if ( usuarios[i].getFullName() == usuario ){
encontrado = true;
}
i++;
}
return encontrado;
}
//Obtenemos los grupos del usuario
function obtiene_permisos (usuario){
var grupos = [];
var authority = people.getPerson(usuario);
if (authority){
lista = people.getContainerGroups(people.getPerson(usuario));
log+="El usuario: " + usuario + " pertenece a los siguientes grupos.\n";
for(var i=0;i<lista.length;i++)
{
grupo = (lista[i]).properties.authorityName;
grupo = grupo.substring(6,grupo.length);
if (comprueba_grupo_usuario(grupo,usuario)){
log+="Grupo: " + grupo + " \n";
grupos.push(grupo);
}
}
}
return grupos;
}
var groupPrefix="GROUP_";
if (exclusivo){
var grupos_destino = obtiene_permisos(usuario_destino);
var authority_destino = people.getPerson(usuario_destino);
for (var i=0;i<grupos_destino.length;i++){
var srcGrpNode_destino=people.getGroup(groupPrefix+grupos_destino[i]);
people.removeAuthority(srcGrpNode_destino,authority_destino);
}
}
//Metemos al usuario destino en los mismos grupos que el usuario origen
var authority = people.getPerson(usuario_destino);
if(authority)
{
var grupos_origen = obtiene_permisos(usuario_origen);
for(var i=0;i<grupos_origen.length;i++)
{
var srcGrpNode=people.getGroup(groupPrefix+grupos_origen[i]);
if (srcGrpNode)
{
var listado = people.getMembers(srcGrpNode);
var array_usuarios = [];
for (var j=0;j<listado.length;j++)
{
array_usuarios[j]=(listado[j]).properties["{http://www.alfresco.org/model/content/1.0}userName"];
}
if (array_usuarios.indexOf(usuario_destino)== -1) //Si el usuario no existe en el grupo, lo insertamos
{
people.addAuthority(srcGrpNode,authority);
log+="- añadido usuario:" + usuario_destino + " al grupo " + grupos_origen[i] + " \n";
}
else
{
log+="- El usuario: " + usuario_destino + " ya esta en el grupo " + grupos_origen[i] + "\n";
}
}
else
{
log+="- El grupo: " + grupos_origen[i] + " no existe.\n";
}
}//final for
}
else
{
log+="- No existe usuario:" + usuario_destino + "\n";
}
logFile.content += log;
En este script, además de tener que pasarle el usuario origen y destino, le debemos indicar el valor a una variable "exclusivo", que determinará si la copia se hace sobre los grupos que ya disponga el usuario destino (false), o si por el contrario, se deben eliminar previamente (true).