Skip to content

Permisos

martinebucarey edited this page Oct 26, 2021 · 7 revisions

Gestor de usuarios

Buscar usuarios por permisos en un organización (opcional).

const permiso = /permiso-a-buscar/;
const organizacionID = '57e9670e52df311059bc8964';

const pipeline = [ 
    { 
        $match:  {
            'organizaciones.permisos': permiso
        } 
    },
    { 
        $unwind: '$organizaciones' 
    },
    { 
        $match: {   
            'organizaciones.permisos': permiso, 
            'organizaciones._id': ObjectId(organizacionID) 
        }        
    }
];

Agregar HUDS

var users = db.getCollection('authUsers').find({ 'organizaciones.permisos': /rup:tipoPrestacion:/ }).toArray();
var profesionales = db.getCollection('profesional').find({ 'documento': { $in: users.map(u => String(u.usuario)) } } ).toArray();
users = users.filter(u => profesionales.find(p => p.documento === String(u.usuario) ))

var save = false;
users.forEach( u => {
    u.organizaciones.forEach(o => {
       if (o.permisos.filter( p => p.contains('rup:tipoPrestacion:')).length
          && o.permisos.indexOf('huds:visualizacionHuds') < 0)  {
                o.permisos.push('huds:visualizacionHuds');
                save = true;
       }         
    });
    
    if (save) {
        db.getCollection('authUsers').update({ "_id":u._id }, u, { upsert:true });
    }
    save = false;
});

Agregar permisos de usuarios

Agregar permisos a varios usuarios por base de datos.

const dnis= [...] // Array de dnis de usuarios a actualizar;
const permisos= [...]// Array de dnis de permisos a agregar;
const idOrganizacion= //id de organizacion a actualizar;

db.authUsers.updateMany(
{"documento":{"$in":dnis}},
{"$push":{"organizaciones.$[elem].permisos":{"$each":permisos}}},
{"arrayFilters":[{"elem._id":idOrganizacion}]})
Clone this wiki locally