mirror of https://github.com/Budibase/budibase.git
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) { |
|||
// TODO: need to build out custom permissions
|
|||
function updatePermissionOnRole(roleId, permissions, remove = false) { |
|||
|
|||
} |
|||
|
|||
exports.fetchBuiltin = function(ctx) { |
|||
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 controller = require("../controllers/permission") |
|||
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() |
|||
|
|||
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 |
|||
|
|||
Loading…
Reference in new issue