Browse Source

Fix loophole where any user could load all screen and layout definitions via app package call

pull/1918/head
Andrew Kingston 5 years ago
parent
commit
632fb636f2
  1. 10
      packages/server/src/api/controllers/application.js

10
packages/server/src/api/controllers/application.js

@ -164,7 +164,15 @@ exports.fetchAppDefinition = async function (ctx) {
exports.fetchAppPackage = async function (ctx) {
const db = new CouchDB(ctx.params.appId)
const application = await db.get(DocumentTypes.APP_METADATA)
const [layouts, screens] = await Promise.all([getLayouts(db), getScreens(db)])
const layouts = await getLayouts(db)
let screens = await getScreens(db)
// Only filter screens if the user is not a builder
if (!ctx.user.builder?.global) {
const userRoleId = getUserRoleId(ctx)
const accessController = new AccessController(ctx.params.appId)
screens = await accessController.checkScreensAccess(screens, userRoleId)
}
ctx.body = {
application,

Loading…
Cancel
Save