forked from tsai/budibase
7 changed files with 83 additions and 16 deletions
@ -1,6 +1,25 @@ |
|||||
const { BUILTIN_PERMISSIONS } = require("../../utilities/security/permissions") |
const { |
||||
|
BUILTIN_PERMISSIONS, |
||||
|
PermissionLevels, |
||||
|
} = require("../../utilities/security/permissions") |
||||
|
|
||||
exports.fetch = async function(ctx) { |
function updatePermissionOnRole(roleId, permissions, remove = false) { |
||||
// TODO: need to build out custom permissions
|
|
||||
|
} |
||||
|
|
||||
|
exports.fetchBuiltin = function(ctx) { |
||||
ctx.body = Object.values(BUILTIN_PERMISSIONS) |
ctx.body = Object.values(BUILTIN_PERMISSIONS) |
||||
} |
} |
||||
|
|
||||
|
exports.fetchLevels = function(ctx) { |
||||
|
ctx.body = Object.values(PermissionLevels) |
||||
|
} |
||||
|
|
||||
|
exports.addPermission = async function(ctx) { |
||||
|
const permissions = ctx.body.permissions, appId = ctx.appId |
||||
|
updatePermissionOnRole |
||||
|
} |
||||
|
|
||||
|
exports.removePermission = async function(ctx) { |
||||
|
const permissions = ctx.body.permissions, appId = ctx.appId |
||||
|
} |
||||
|
|||||
@ -1,10 +1,46 @@ |
|||||
const Router = require("@koa/router") |
const Router = require("@koa/router") |
||||
const controller = require("../controllers/permission") |
const controller = require("../controllers/permission") |
||||
const authorized = require("../../middleware/authorized") |
const authorized = require("../../middleware/authorized") |
||||
const { BUILDER } = require("../../utilities/security/permissions") |
const { |
||||
|
BUILDER, |
||||
|
PermissionLevels, |
||||
|
} = require("../../utilities/security/permissions") |
||||
|
const Joi = require("joi") |
||||
|
const joiValidator = require("../../middleware/joi-validator") |
||||
|
|
||||
const router = Router() |
const router = Router() |
||||
|
|
||||
router.get("/api/permissions", authorized(BUILDER), controller.fetch) |
function generateAddValidator() { |
||||
|
const permLevelArray = Object.values(PermissionLevels) |
||||
|
// prettier-ignore
|
||||
|
return joiValidator.body(Joi.object({ |
||||
|
permissions: Joi.object() |
||||
|
.pattern(/.*/, [Joi.string().valid(...permLevelArray)]) |
||||
|
.required() |
||||
|
}).unknown(true)) |
||||
|
} |
||||
|
|
||||
|
function generateRemoveValidator() { |
||||
|
// prettier-ignore
|
||||
|
return joiValidator.body(Joi.object({ |
||||
|
permissions: Joi.array().items(Joi.string()) |
||||
|
}).unknown(true)) |
||||
|
} |
||||
|
|
||||
|
router |
||||
|
.get("/api/permission/builtin", authorized(BUILDER), controller.fetchBuiltin) |
||||
|
.get("/api/permission/levels", authorized(BUILDER), controller.fetchLevels) |
||||
|
.patch( |
||||
|
"/api/permission/:roleId/add", |
||||
|
authorized(BUILDER), |
||||
|
generateAddValidator(), |
||||
|
controller.addPermission |
||||
|
) |
||||
|
.patch( |
||||
|
"/api/permission/:roleId/remove", |
||||
|
authorized(BUILDER), |
||||
|
generateRemoveValidator(), |
||||
|
controller.removePermission |
||||
|
) |
||||
|
|
||||
module.exports = router |
module.exports = router |
||||
|
|||||
Loading…
Reference in new issue