Browse Source

fix: admin permissions + restrict nav settings

NGPixel 4 years ago
parent
commit
4f16dd0c81
2 changed files with 16 additions and 2 deletions
  1. 14 0
      server/controllers/common.js
  2. 2 2
      server/graph/schemas/navigation.graphql

+ 14 - 0
server/controllers/common.js

@@ -36,6 +36,20 @@ router.get('/healthz', (req, res, next) => {
  * Administration
  * Administration
  */
  */
 router.get(['/a', '/a/*'], (req, res, next) => {
 router.get(['/a', '/a/*'], (req, res, next) => {
+  if (!WIKI.auth.checkAccess(req.user, [
+    'manage:system',
+    'write:users',
+    'manage:users',
+    'write:groups',
+    'manage:groups',
+    'manage:navigation',
+    'manage:theme',
+    'manage:api'
+  ])) {
+    _.set(res.locals, 'pageMeta.title', 'Unauthorized')
+    return res.render('unauthorized', { action: 'view' })
+  }
+
   _.set(res.locals, 'pageMeta.title', 'Admin')
   _.set(res.locals, 'pageMeta.title', 'Admin')
   res.render('admin')
   res.render('admin')
 })
 })

+ 2 - 2
server/graph/schemas/navigation.graphql

@@ -15,8 +15,8 @@ extend type Mutation {
 # -----------------------------------------------
 # -----------------------------------------------
 
 
 type NavigationQuery {
 type NavigationQuery {
-  tree: [NavigationTree]!
-  config: NavigationConfig!
+  tree: [NavigationTree]! @auth(requires: ["manage:navigation", "manage:system"])
+  config: NavigationConfig! @auth(requires: ["manage:navigation", "manage:system"])
 }
 }
 
 
 # -----------------------------------------------
 # -----------------------------------------------