mirror of https://github.com/Budibase/budibase.git
nocodelowcodelow-codedockerdocker-composeinternal-projectinternal-toolinternal-toolslow-code-developmentlow-code-development-platformopensourceselfhostedweb-devweb-developmentweb-development-toolswebdevwebdevelopmentworkflow-automationautomationdeveloper-tools
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.7 KiB
66 lines
1.7 KiB
const viewController = require("../api/controllers/view")
|
|
const modelController = require("../api/controllers/model")
|
|
const workflowController = require("../api/controllers/workflow")
|
|
const accessLevels = require("./accessLevels")
|
|
|
|
// this has been broken out to reduce risk of circular dependency from utilities, no enums defined here
|
|
const generateAdminPermissions = async instanceId => [
|
|
...accessLevels.adminPermissions,
|
|
...(await generatePowerUserPermissions(instanceId)),
|
|
]
|
|
|
|
const generatePowerUserPermissions = async instanceId => {
|
|
const fetchModelsCtx = {
|
|
user: {
|
|
instanceId,
|
|
},
|
|
}
|
|
await modelController.fetch(fetchModelsCtx)
|
|
const models = fetchModelsCtx.body
|
|
|
|
const fetchViewsCtx = {
|
|
user: {
|
|
instanceId,
|
|
},
|
|
}
|
|
await viewController.fetch(fetchViewsCtx)
|
|
const views = fetchViewsCtx.body
|
|
|
|
const fetchWorkflowsCtx = {
|
|
user: {
|
|
instanceId,
|
|
},
|
|
}
|
|
await workflowController.fetch(fetchWorkflowsCtx)
|
|
const workflows = fetchWorkflowsCtx.body
|
|
|
|
const readModelPermissions = models.map(m => ({
|
|
itemId: m._id,
|
|
name: accessLevels.READ_MODEL,
|
|
}))
|
|
|
|
const writeModelPermissions = models.map(m => ({
|
|
itemId: m._id,
|
|
name: accessLevels.WRITE_MODEL,
|
|
}))
|
|
|
|
const viewPermissions = views.map(v => ({
|
|
itemId: v.name,
|
|
name: accessLevels.READ_VIEW,
|
|
}))
|
|
|
|
const executeWorkflowPermissions = workflows.map(w => ({
|
|
itemId: w._id,
|
|
name: accessLevels.EXECUTE_WORKFLOW,
|
|
}))
|
|
|
|
return [
|
|
...readModelPermissions,
|
|
...writeModelPermissions,
|
|
...viewPermissions,
|
|
...executeWorkflowPermissions,
|
|
{ name: accessLevels.LIST_USERS },
|
|
]
|
|
}
|
|
module.exports.generateAdminPermissions = generateAdminPermissions
|
|
module.exports.generatePowerUserPermissions = generatePowerUserPermissions
|
|
|