Files
OpenSign/apps/OpenSignServer/cloud/parsefunction/UserGroups.js
T

113 lines
3.1 KiB
JavaScript

/* --Description :cloud function called to add mater key in update query */
//-- Export Modules
import dotenv from 'dotenv';
dotenv.config();
import axios from 'axios';
export async function getUserGroups(request) {
try {
var appname = request.params.appname;
if (appname == '') {
return Promise.reject('Error:please provide appname');
}
var response = {};
var rolelist = {};
appname = appname + '_';
//--function to get the userid from session token
function getuserid(request) {
return new Promise(function (resolve, reject) {
const options = {
url: process.env.SERVER_URL + '/users/me',
method: 'get',
headers: {
'X-Parse-Application-Id': process.env.APP_ID,
'X-Parse-Session-Token': request.headers['sessiontoken'],
},
};
axios(options)
.then(x => {
const body = x.data;
var error = body == '' ? true : false;
if (error) {
reject('result not found!');
} else {
resolve(body);
}
})
.catch(err => {
if (err) {
console.error(err);
return;
}
});
});
}
var userData = await getuserid(request);
var userid = userData.objectId;
// console.log("userid " + userid);
var url =
process.env.SERVER_URL +
'/roles?where={"users":{"__type":"Pointer","className":"_User","objectId":"' +
userid +
'"},"name": {"$regex": "' +
appname +
'"}}';
//-- check user role
function getRoleList(userid) {
return new Promise(function (resolve, reject) {
const options = {
url: url,
method: 'get',
headers: {
'X-Parse-Application-Id': process.env.APP_ID,
},
};
axios(options)
.then(x => {
const body = x.data;
var roleres = [];
for (var i = 0; i < body['results'].length; i++) {
var rolename = body['results'][i]['name'];
//var roleprefix = rolename.split("_")[0];
roleres.push(rolename);
}
var error = roleres == '' ? true : false;
if (error) {
reject('result not found!');
} else {
resolve(roleres);
}
})
.catch(err => {
if (err) {
console.error(err);
return;
}
});
});
}
rolelist = await getRoleList(request);
// console.log(rolelist);
//--check user roles according to appId
var rolesInapp = [];
for (let i = 0; i < rolelist.length; i++) {
var str = JSON.stringify(rolelist[i]);
var result = str.includes(appname);
if (result == true) {
rolesInapp.push(rolelist[i]);
}
}
// console.log(rolesInapp);
return rolesInapp;
} catch (err) {
console.log('err in usergroup');
console.log(err);
return Promise.reject('Error:Result not found');
}
}