-
Notifications
You must be signed in to change notification settings - Fork 12
Permisos
martinebucarey edited this page Oct 26, 2021
·
7 revisions
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)
}
}
];
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 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}]})