1
0
Fork 0
mirror of synced 2024-06-22 16:10:40 +12:00
budibase/packages/server/src/api/routes/public/index.js

56 lines
1.7 KiB
JavaScript
Raw Normal View History

const appEndpoints = require("./applications")
const queryEndpoints = require("./queries")
const tableEndpoints = require("./tables")
const rowEndpoints = require("./rows")
const userEndpoints = require("./users")
2022-02-18 07:58:09 +13:00
const Router = require("@koa/router")
const usage = require("../../../middleware/usageQuota")
const authorized = require("../../../middleware/authorized")
const {
paramResource,
paramSubResource,
} = require("../../../middleware/resourceId")
const {
PermissionLevels,
PermissionTypes,
} = require("@budibase/backend-core/permissions")
2022-02-18 07:58:09 +13:00
const PREFIX = "/api/public/v1"
const publicRouter = new Router({
2022-02-18 07:58:09 +13:00
prefix: PREFIX,
})
function addMiddleware(endpoints, middleware) {
for (let endpoint of endpoints) {
endpoint.addMiddleware(middleware)
}
}
function addToRouter(endpoints) {
for (let endpoint of endpoints) {
endpoint.apply(publicRouter)
}
2022-02-18 07:58:09 +13:00
}
function applyRoutes(endpoints, permType, resource, subResource = null) {
const paramMiddleware = subResource
? paramSubResource(resource, subResource)
: paramResource(resource)
addMiddleware(endpoints.read, paramMiddleware)
addMiddleware(endpoints.write, paramMiddleware)
addMiddleware(endpoints.read, authorized(permType, PermissionLevels.READ))
addMiddleware(endpoints.write, authorized(permType, PermissionLevels.WRITE))
addMiddleware(endpoints.write, usage)
addToRouter(endpoints.read)
addToRouter(endpoints.write)
}
applyRoutes(appEndpoints, PermissionTypes.APP, "appId")
applyRoutes(tableEndpoints, PermissionTypes.TABLE, "tableId")
applyRoutes(userEndpoints, PermissionTypes.USER, "userId")
applyRoutes(queryEndpoints, PermissionTypes.QUERY, "queryId")
//applyRoutes(rowEndpoints, PermissionTypes.TABLE, "tableId", "rowId")
module.exports = publicRouter