mirror of https://github.com/Budibase/budibase.git
16 changed files with 124 additions and 204 deletions
@ -0,0 +1,3 @@ |
|||||
|
exports.fetch = async ctx => { |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
const Router = require("@koa/router") |
||||
|
const authorized = require("../../middleware/authorized") |
||||
|
const { BUILDER } = require("../../utilities/security/permissions") |
||||
|
const controller = require("../controllers/routing") |
||||
|
|
||||
|
const router = Router() |
||||
|
|
||||
|
router.post("/api/routing", authorized(BUILDER), controller.fetch) |
||||
|
|
||||
|
module.exports = router |
||||
@ -1,66 +0,0 @@ |
|||||
const viewController = require("../api/controllers/view") |
|
||||
const tableController = require("../api/controllers/table") |
|
||||
const automationController = require("../api/controllers/automation") |
|
||||
const accessLevels = require("./security/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 |
|
||||
@ -1,44 +1,14 @@ |
|||||
const { DocumentTypes, SEPARATOR } = require("../../db/utils") |
|
||||
|
|
||||
function makeAccessLevelId(baseId) { |
|
||||
return `${DocumentTypes.ACCESS_LEVEL}${SEPARATOR}${baseId}` |
|
||||
} |
|
||||
|
|
||||
// Permissions
|
|
||||
exports.READ_TABLE = "read-table" |
|
||||
exports.WRITE_TABLE = "write-table" |
|
||||
exports.READ_VIEW = "read-view" |
|
||||
exports.EXECUTE_AUTOMATION = "execute-automation" |
|
||||
exports.EXECUTE_WEBHOOK = "execute-webhook" |
|
||||
exports.USER_MANAGEMENT = "user-management" |
|
||||
exports.BUILDER = "builder" |
|
||||
exports.LIST_USERS = "list-users" |
|
||||
// Access Level IDs
|
|
||||
exports.ADMIN_LEVEL_ID = "ADMIN" |
|
||||
exports.POWERUSER_LEVEL_ID = "POWER_USER" |
|
||||
exports.BUILDER_LEVEL_ID = "BUILDER" |
|
||||
exports.ANON_LEVEL_ID = "ANON" |
|
||||
exports.BUILTIN_LEVELS = { |
exports.BUILTIN_LEVELS = { |
||||
admin: { _id: makeAccessLevelId("ADMIN"), name: "Admin" }, |
admin: { _id: "ADMIN", name: "Admin" }, |
||||
power: { _id: makeAccessLevelId("POWER_USER"), name: "Power user" }, |
power: { _id: "POWER_USER", name: "Power user" }, |
||||
builder: { _id: makeAccessLevelId("BUILDER"), name: "Builder" }, |
builder: { _id: "BUILDER", name: "Builder" }, |
||||
anon: { _id: makeAccessLevelId("ANON"), name: "Anonymous" }, |
anon: { _id: "ANON", name: "Anonymous" }, |
||||
} |
} |
||||
|
|
||||
exports.BUILTIN_LEVEL_IDS = Object.values(exports.BUILTIN_LEVELS).map( |
exports.BUILTIN_LEVEL_IDS = Object.values(exports.BUILTIN_LEVELS).map( |
||||
level => level._id |
level => level._id |
||||
) |
) |
||||
exports.PRETTY_ACCESS_LEVELS = { |
|
||||
[exports.ADMIN_LEVEL_ID]: "Admin", |
|
||||
[exports.POWERUSER_LEVEL_ID]: "Power user", |
|
||||
[exports.BUILDER_LEVEL_ID]: "Builder", |
|
||||
} |
|
||||
exports.adminPermissions = [ |
|
||||
{ |
|
||||
name: exports.USER_MANAGEMENT, |
|
||||
}, |
|
||||
] |
|
||||
|
|
||||
// to avoid circular dependencies this is included later, after exporting all enums
|
exports.BUILTIN_LEVEL_NAMES = Object.values(exports.BUILTIN_LEVELS).map( |
||||
const permissions = require("../permissions") |
level => level.name |
||||
exports.generateAdminPermissions = permissions.generateAdminPermissions |
) |
||||
exports.generatePowerUserPermissions = permissions.generatePowerUserPermissions |
|
||||
|
|||||
Loading…
Reference in new issue