66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
const viewController = require("../api/controllers/view")
|
|
const tableController = require("../api/controllers/table")
|
|
const automationController = require("../api/controllers/automation")
|
|
const accessLevels = require("./accessLevels")
|
|
|
|
// this has been broken out to reduce risk of circular dependency from utilities, no enums defined here
|
|
const generateAdminPermissions = async appId => [
|
|
...accessLevels.adminPermissions,
|
|
...(await generatePowerUserPermissions(appId)),
|
|
]
|
|
|
|
const generatePowerUserPermissions = async appId => {
|
|
const fetchTablesCtx = {
|
|
user: {
|
|
appId,
|
|
},
|
|
}
|
|
await tableController.fetch(fetchTablesCtx)
|
|
const tables = fetchTablesCtx.body
|
|
|
|
const fetchViewsCtx = {
|
|
user: {
|
|
appId,
|
|
},
|
|
}
|
|
await viewController.fetch(fetchViewsCtx)
|
|
const views = fetchViewsCtx.body
|
|
|
|
const fetchAutomationsCtx = {
|
|
user: {
|
|
appId,
|
|
},
|
|
}
|
|
await automationController.fetch(fetchAutomationsCtx)
|
|
const automations = fetchAutomationsCtx.body
|
|
|
|
const readTablePermissions = tables.map(m => ({
|
|
itemId: m._id,
|
|
name: accessLevels.READ_TABLE,
|
|
}))
|
|
|
|
const writeTablePermissions = tables.map(m => ({
|
|
itemId: m._id,
|
|
name: accessLevels.WRITE_TABLE,
|
|
}))
|
|
|
|
const viewPermissions = views.map(v => ({
|
|
itemId: v.name,
|
|
name: accessLevels.READ_VIEW,
|
|
}))
|
|
|
|
const executeAutomationPermissions = automations.map(w => ({
|
|
itemId: w._id,
|
|
name: accessLevels.EXECUTE_AUTOMATION,
|
|
}))
|
|
|
|
return [
|
|
...readTablePermissions,
|
|
...writeTablePermissions,
|
|
...viewPermissions,
|
|
...executeAutomationPermissions,
|
|
{ name: accessLevels.LIST_USERS },
|
|
]
|
|
}
|
|
module.exports.generateAdminPermissions = generateAdminPermissions
|
|
module.exports.generatePowerUserPermissions = generatePowerUserPermissions
|