Shinobi/libs/webPaths/permissionSets.js

89 lines
3.4 KiB
JavaScript

module.exports = function(s,config,lang,app){
const {
getPermissionSets,
insertPermissionSet,
updatePermissionSet,
deletePermissionSet,
editPermissionSet,
applyPermissionsToUser,
} = require('../user/permissionSets.js')(s,config,lang)
/**
* API : Permission Set : Get
*/
app.get([
config.webPaths.apiPrefix+':auth/permissions/:ke',
config.webPaths.apiPrefix+':auth/permissions/:ke/:name',
], function (req,res){
s.auth(req.params, async function(user){
const response = { ok: false }
const {
isSubAccount,
userPermissions,
apiKeyPermissions,
isRestrictedApiKey,
} = s.checkPermission(user)
const canEditPermissions = !isSubAccount || userPermissions.edit_permissions || isRestrictedApiKey && (apiKeyPermissions.edit_permissions || apiKeyPermissions.create_api_keys);
if(!canEditPermissions){
s.closeJsonResponse(res,{ok: false, msg: lang['Not an Administrator Account']});
}else{
const groupKey = req.params.ke;
const name = req.params.name;
const rows = await getPermissionSets(groupKey,name)
response.permissions = rows;
s.closeJsonResponse(res,response)
}
},res,req)
})
/**
* API : Permission Set : Edit
*/
app.post(config.webPaths.apiPrefix+':auth/permissions/:ke', function (req,res){
s.auth(req.params, async function(user){
let response = { ok: false }
const {
isSubAccount,
userPermissions,
apiKeyPermissions,
isRestrictedApiKey,
} = s.checkPermission(user)
const canEditPermissions = !isSubAccount || userPermissions.edit_permissions || isRestrictedApiKey && apiKeyPermissions.edit_permissions;
if(!canEditPermissions){
response.msg = lang['Not Authorized'];
}else{
const groupKey = req.params.ke;
const form = s.getPostData(req) || {};
if(form.name && form.details){
response = await editPermissionSet(groupKey,form)
}else{
response.msg = lang['Invalid Data'];
}
}
s.closeJsonResponse(res,response)
},res,req)
})
/**
* API : Permission Set : Delete
*/
app.get(config.webPaths.apiPrefix+':auth/permissions/:ke/:name/delete', function (req,res){
s.auth(req.params, async function(user){
const response = { ok: false }
const {
isSubAccount,
userPermissions,
apiKeyPermissions,
isRestrictedApiKey,
} = s.checkPermission(user)
const canEditPermissions = !isSubAccount || userPermissions.edit_permissions || isRestrictedApiKey && apiKeyPermissions.edit_permissions;
if(!canEditPermissions){
response.msg = lang['Not Authorized'];
}else{
const groupKey = req.params.ke;
const name = req.params.name;
response.ok = true;
response.deleteResponse = await deletePermissionSet(groupKey,name)
}
s.closeJsonResponse(res,response)
},res,req)
})
}