Browse Source

feat: add singleByPath GraphQL resolver (#6011)

Co-authored-by: k k <kleangseu@yahoo.com>
Leangseu Kim 2 years ago
parent
commit
0d914b061e
2 changed files with 29 additions and 0 deletions
  1. 24 0
      server/graph/resolvers/page.js
  2. 5 0
      server/graph/schemas/page.graphql

+ 24 - 0
server/graph/resolvers/page.js

@@ -170,6 +170,30 @@ module.exports = {
         throw new WIKI.Error.PageNotFound()
       }
     },
+    async singleByPath(obj, args, context, info) {
+      let page = await WIKI.models.pages.getPageFromDb({
+        path: args.path,
+        locale: args.locale,
+      });
+      if (page) {
+        if (WIKI.auth.checkAccess(context.req.user, ['manage:pages', 'delete:pages'], {
+          path: page.path,
+          locale: page.localeCode
+        })) {
+          return {
+            ...page,
+            locale: page.localeCode,
+            editor: page.editorKey,
+            scriptJs: page.extra.js,
+            scriptCss: page.extra.css
+          }
+        } else {
+          throw new WIKI.Error.PageViewForbidden()
+        }
+      } else {
+        throw new WIKI.Error.PageNotFound()
+      }
+    },
     /**
      * FETCH TAGS
      */

+ 5 - 0
server/graph/schemas/page.graphql

@@ -46,6 +46,11 @@ type PageQuery {
     id: Int!
   ): Page @auth(requires: ["read:pages", "manage:system"])
 
+  singleByPath(
+    path: String!
+    locale: String!
+  ): Page @auth(requires: ["read:pages", "manage:system"])
+
   tags: [PageTag]! @auth(requires: ["manage:system", "read:pages"])
 
   searchTags(