96 lines
2.0 KiB
JavaScript
96 lines
2.0 KiB
JavaScript
const viewController = require("../api/controllers/view")
|
|
const modelController = require("../api/controllers/model")
|
|
const workflowController = require("../api/controllers/workflow")
|
|
|
|
// Access Level IDs
|
|
const ADMIN_LEVEL_ID = "ADMIN"
|
|
const POWERUSER_LEVEL_ID = "POWER_USER"
|
|
|
|
// Permissions
|
|
const READ_MODEL = "read-model"
|
|
const WRITE_MODEL = "write-model"
|
|
const READ_VIEW = "read-view"
|
|
const EXECUTE_WORKFLOW = "execute-workflow"
|
|
const USER_MANAGEMENT = "user-management"
|
|
const BUILDER = "builder"
|
|
const LIST_USERS = "list-users"
|
|
|
|
const adminPermissions = [
|
|
{
|
|
name: USER_MANAGEMENT,
|
|
},
|
|
]
|
|
|
|
const generateAdminPermissions = async instanceId => [
|
|
...adminPermissions,
|
|
...(await generatePowerUserPermissions(instanceId)),
|
|
]
|
|
|
|
const generatePowerUserPermissions = async instanceId => {
|
|
const fetchModelsCtx = {
|
|
params: {
|
|
instanceId,
|
|
},
|
|
}
|
|
await modelController.fetch(fetchModelsCtx)
|
|
const models = fetchModelsCtx.body
|
|
|
|
const fetchViewsCtx = {
|
|
params: {
|
|
instanceId,
|
|
},
|
|
}
|
|
await viewController.fetch(fetchViewsCtx)
|
|
const views = fetchViewsCtx.body
|
|
|
|
const fetchWorkflowsCtx = {
|
|
params: {
|
|
instanceId,
|
|
},
|
|
}
|
|
await workflowController.fetch(fetchWorkflowsCtx)
|
|
const workflows = fetchWorkflowsCtx.body
|
|
|
|
const readModelPermissions = models.map(m => ({
|
|
itemId: m._id,
|
|
name: READ_MODEL,
|
|
}))
|
|
|
|
const writeModelPermissions = models.map(m => ({
|
|
itemId: m._id,
|
|
name: WRITE_MODEL,
|
|
}))
|
|
|
|
const viewPermissions = views.map(v => ({
|
|
itemId: v.name,
|
|
name: READ_VIEW,
|
|
}))
|
|
|
|
const executeWorkflowPermissions = workflows.map(w => ({
|
|
itemId: w._id,
|
|
name: EXECUTE_WORKFLOW,
|
|
}))
|
|
|
|
return [
|
|
...readModelPermissions,
|
|
...writeModelPermissions,
|
|
...viewPermissions,
|
|
...executeWorkflowPermissions,
|
|
{ name: LIST_USERS },
|
|
]
|
|
}
|
|
|
|
module.exports = {
|
|
ADMIN_LEVEL_ID,
|
|
POWERUSER_LEVEL_ID,
|
|
READ_MODEL,
|
|
WRITE_MODEL,
|
|
READ_VIEW,
|
|
EXECUTE_WORKFLOW,
|
|
USER_MANAGEMENT,
|
|
BUILDER,
|
|
LIST_USERS,
|
|
generateAdminPermissions,
|
|
generatePowerUserPermissions,
|
|
}
|