89 lines
3.4 KiB
JavaScript
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)
|
|
})
|
|
}
|