瀏覽代碼

fix: admin contribute list + source permission

NGPixel 5 年之前
父節點
當前提交
91e897ccd9

+ 42 - 61
client/components/admin/admin-contribute.vue

@@ -64,16 +64,16 @@
                     input(type='image', src='/img/donate_paypal.png', border='0', name='submit', title='PayPal - The safer, easier way to pay online!', alt='Donate with PayPal button')
                     input(type='image', src='/img/donate_paypal.png', border='0', name='submit', title='PayPal - The safer, easier way to pay online!', alt='Donate with PayPal button')
                     img(alt='', border='0', src='https://www.paypal.com/en_CA/i/scr/pixel.gif', width='1', height='1')
                     img(alt='', border='0', src='https://www.paypal.com/en_CA/i/scr/pixel.gif', width='1', height='1')
               v-tab-item(:transition='false', :reverse-transition='false')
               v-tab-item(:transition='false', :reverse-transition='false')
-                .body-1.pa-3 {{ $t('admin:contribute.ethereum') }}
+                .body-2.pa-3 {{ $t('admin:contribute.ethereum') }}
                 .ml-3
                 .ml-3
                   .admin-contribute-ethaddress
                   .admin-contribute-ethaddress
                     strong Ethereum Address
                     strong Ethereum Address
                     span 0xE1d55C19aE86f6Bcbfb17e7f06aCe96BdBb22Cb5
                     span 0xE1d55C19aE86f6Bcbfb17e7f06aCe96BdBb22Cb5
                   div: img(src='/img/donate_eth_qr.png')
                   div: img(src='/img/donate_eth_qr.png')
               v-tab-item(:transition='false', :reverse-transition='false')
               v-tab-item(:transition='false', :reverse-transition='false')
-                .body-1.pa-3 {{ $t('admin:contribute.tshirts') }}
+                .body-2.pa-3 {{ $t('admin:contribute.tshirts') }}
                 v-card-actions.ml-2
                 v-card-actions.ml-2
-                  v-btn(outlined, :color='darkMode ? `blue lighten-1` : `primary`', href='https://wikijs.threadless.com', large)
+                  v-btn(outlined, :color='$vuetify.theme.dark ? `blue lighten-1` : `primary`', href='https://wikijs.threadless.com', large)
                     v-icon(left) mdi-tshirt-crew
                     v-icon(left) mdi-tshirt-crew
                     span {{ $t('admin:contribute.shop') }}
                     span {{ $t('admin:contribute.shop') }}
             v-divider.mt-3
             v-divider.mt-3
@@ -93,48 +93,27 @@
                 li {{ $t('admin:contribute.talkToFriends') }}
                 li {{ $t('admin:contribute.talkToFriends') }}
                 i18next(path='admin:contribute.followUsOnTwitter', tag='li')
                 i18next(path='admin:contribute.followUsOnTwitter', tag='li')
                   a(href='https://twitter.com/requarks', target='_blank') Twitter
                   a(href='https://twitter.com/requarks', target='_blank') Twitter
-          v-toolbar(color='teal', dense, dark)
-            .subtitle-1 Sponsors
-            v-spacer
-            v-btn(outlined, small, href='https://opencollective.com/wikijs/order/1273') Become a Sponsor
-          v-list(two-line)
-            template(v-for='(sponsor, idx) in sponsors')
-              v-list-item(:key='sponsor.id')
-                v-list-item-avatar
-                  img(v-if='sponsor.image', :src='sponsor.image')
-                  v-avatar(v-else, color='teal', size='40')
-                    span.white--text.subtitle-1 {{sponsor.name[0].toUpperCase()}}
-                v-list-item-content
-                  v-list-item-title {{sponsor.name}}
-                  v-list-item-subtitle {{sponsor.description}}
-                v-list-item-action(v-if='sponsor.twitter')
-                  v-btn(icon, :href='sponsor.twitter', target='_blank')
-                    v-icon mdi-twitter
-                v-list-item-action(v-if='sponsor.website')
-                  v-btn(icon, :href='sponsor.website', target='_blank')
-                    v-icon(color='grey') mdi-earth
-              v-divider(v-if='idx < sponsors.length - 1')
-          v-toolbar(color='blue-grey', dense, dark)
-            .subtitle-1 Backers
-            v-spacer
-            v-btn(outlined, small, href='https://opencollective.com/wikijs/order/1272') Become a Backer
-          v-list(two-line, dense)
-            template(v-for='(backer, idx) in backers')
-              v-list-item(:key='backer.id')
-                v-list-item-avatar
-                  img(v-if='backer.image', :src='backer.image')
-                  v-avatar(v-else, color='blue-grey', size='40')
-                    span.white--text.subtitle-1 {{backer.name[0].toUpperCase()}}
-                v-list-item-content
-                  v-list-item-title {{backer.name}}
-                  v-list-item-subtitle {{backer.description}}
-                v-list-item-action(v-if='backer.twitter')
-                  v-btn(icon, :href='backer.twitter', target='_blank')
-                    v-icon mdi-twitter
-                v-list-item-action(v-if='backer.website')
-                  v-btn(icon, :href='backer.website', target='_blank')
-                    v-icon(color='grey') mdi-earth
-              v-divider(v-if='idx < backers.length - 1')
+          v-toolbar(color='indigo', dense, dark)
+            .subtitle-1 Sponsors &amp; Backers
+          v-container.pa-5.grey(fluid, :class='$vuetify.theme.dark ? `darken-3` : `lighten-4`')
+            v-progress-circular(indeterminate, color='indigo', size='24', width='2', v-if='backers.length < 1')
+            v-row(dense)
+              v-col(cols='12', lg='6', xl='4', v-for='(backer, idx) in backers', :key='backer.id')
+                v-card.grey(flat, :class='$vuetify.theme.dark ? `darken-4` : `lighten-2`')
+                  v-list-item
+                    v-list-item-avatar
+                      img(v-if='backer.avatar', :src='backer.avatar')
+                      v-avatar(v-else, color='blue-grey', size='40')
+                        span.white--text.subtitle-1 {{backer.name[0].toUpperCase()}}
+                    v-list-item-content
+                      v-list-item-title {{backer.name}}
+                      v-list-item-subtitle: .caption Since {{backer.joined | moment('MMMM DD, YYYY')}} on {{backer.source}}
+                    v-list-item-action(v-if='backer.twitter')
+                      v-btn(icon, :href='backer.twitter', target='_blank')
+                        v-icon(color='grey') mdi-twitter
+                    v-list-item-action(v-if='backer.website')
+                      v-btn(icon, :href='backer.website', target='_blank')
+                        v-icon(color='grey') mdi-earth
           v-toolbar(color='primary', dense, dark)
           v-toolbar(color='primary', dense, dark)
             .subtitle-1 Special Thanks
             .subtitle-1 Special Thanks
           v-list(two-line)
           v-list(two-line)
@@ -211,29 +190,31 @@
 </template>
 </template>
 
 
 <script>
 <script>
-import _ from 'lodash'
-import { get } from 'vuex-pathify'
-
-import groupsQuery from 'gql/admin/contribute/contribute-query-contributors.gql'
+import gql from 'graphql-tag'
 
 
 export default {
 export default {
   data() {
   data() {
     return {
     return {
-      contributors: []
-    }
-  },
-  computed: {
-    darkMode: get('site/dark'),
-    sponsors() {
-      return _.filter(this.contributors, ['tier', 'sponsors'])
-    },
-    backers() {
-      return _.reject(this.contributors, ['tier', 'sponsors'])
+      backers: []
     }
     }
   },
   },
   apollo: {
   apollo: {
-    contributors: {
-      query: groupsQuery,
+    backers: {
+      query: gql`
+        {
+          contribute {
+            contributors {
+              id
+              source
+              name
+              joined
+              website
+              twitter
+              avatar
+            }
+          }
+        }
+      `,
       fetchPolicy: 'network-only',
       fetchPolicy: 'network-only',
       update: (data) => data.contribute.contributors,
       update: (data) => data.contribute.contributors,
       watchLoading (isLoading) {
       watchLoading (isLoading) {

+ 45 - 45
package.json

@@ -36,7 +36,7 @@
   },
   },
   "dependencies": {
   "dependencies": {
     "@aoberoi/passport-slack": "1.0.5",
     "@aoberoi/passport-slack": "1.0.5",
-    "@azure/storage-blob": "12.0.1",
+    "@azure/storage-blob": "12.0.2",
     "@bugsnag/js": "6.5.0",
     "@bugsnag/js": "6.5.0",
     "@exlinc/keycloak-passport": "1.0.2",
     "@exlinc/keycloak-passport": "1.0.2",
     "@root/csr": "0.8.1",
     "@root/csr": "0.8.1",
@@ -45,10 +45,10 @@
     "acme": "3.0.3",
     "acme": "3.0.3",
     "algoliasearch": "3.35.1",
     "algoliasearch": "3.35.1",
     "apollo-fetch": "0.7.0",
     "apollo-fetch": "0.7.0",
-    "apollo-server": "2.9.15",
-    "apollo-server-express": "2.9.15",
+    "apollo-server": "2.9.16",
+    "apollo-server-express": "2.9.16",
     "auto-load": "3.0.4",
     "auto-load": "3.0.4",
-    "aws-sdk": "2.596.0",
+    "aws-sdk": "2.606.0",
     "azure-search-client": "3.1.5",
     "azure-search-client": "3.1.5",
     "bcryptjs-then": "1.0.1",
     "bcryptjs-then": "1.0.1",
     "bluebird": "3.7.2",
     "bluebird": "3.7.2",
@@ -64,8 +64,8 @@
     "cors": "2.8.5",
     "cors": "2.8.5",
     "custom-error-instance": "2.1.1",
     "custom-error-instance": "2.1.1",
     "dependency-graph": "0.8.1",
     "dependency-graph": "0.8.1",
-    "diff": "4.0.1",
-    "diff2html": "2.12.1",
+    "diff": "4.0.2",
+    "diff2html": "3.0.0-master.128204d",
     "dotize": "0.3.0",
     "dotize": "0.3.0",
     "elasticsearch6": "npm:@elastic/elasticsearch@6",
     "elasticsearch6": "npm:@elastic/elasticsearch@6",
     "elasticsearch7": "npm:@elastic/elasticsearch@7",
     "elasticsearch7": "npm:@elastic/elasticsearch@7",
@@ -73,7 +73,7 @@
     "express": "4.17.1",
     "express": "4.17.1",
     "express-brute": "1.0.1",
     "express-brute": "1.0.1",
     "express-session": "1.17.0",
     "express-session": "1.17.0",
-    "file-type": "12.4.2",
+    "file-type": "13.1.0",
     "filesize": "6.0.1",
     "filesize": "6.0.1",
     "fs-extra": "8.1.0",
     "fs-extra": "8.1.0",
     "getos": "3.1.1",
     "getos": "3.1.1",
@@ -84,7 +84,7 @@
     "graphql-tools": "4.0.6",
     "graphql-tools": "4.0.6",
     "he": "1.2.0",
     "he": "1.2.0",
     "highlight.js": "9.17.1",
     "highlight.js": "9.17.1",
-    "i18next": "19.0.2",
+    "i18next": "19.0.3",
     "i18next-express-middleware": "1.9.1",
     "i18next-express-middleware": "1.9.1",
     "i18next-node-fs-backend": "2.1.3",
     "i18next-node-fs-backend": "2.1.3",
     "image-size": "0.8.3",
     "image-size": "0.8.3",
@@ -94,7 +94,7 @@
     "jsonwebtoken": "8.5.1",
     "jsonwebtoken": "8.5.1",
     "katex": "0.11.1",
     "katex": "0.11.1",
     "klaw": "3.0.0",
     "klaw": "3.0.0",
-    "knex": "0.20.6",
+    "knex": "0.20.8",
     "lodash": "4.17.15",
     "lodash": "4.17.15",
     "markdown-it": "10.0.0",
     "markdown-it": "10.0.0",
     "markdown-it-abbr": "1.0.4",
     "markdown-it-abbr": "1.0.4",
@@ -110,14 +110,14 @@
     "markdown-it-sup": "1.0.0",
     "markdown-it-sup": "1.0.0",
     "markdown-it-task-lists": "2.1.1",
     "markdown-it-task-lists": "2.1.1",
     "mathjax-node": "2.1.1",
     "mathjax-node": "2.1.1",
-    "mime-types": "2.1.25",
+    "mime-types": "2.1.26",
     "moment": "2.24.0",
     "moment": "2.24.0",
     "moment-timezone": "0.5.27",
     "moment-timezone": "0.5.27",
-    "mongodb": "3.4.1",
+    "mongodb": "3.5.1",
     "mssql": "6.0.1",
     "mssql": "6.0.1",
     "multer": "1.4.2",
     "multer": "1.4.2",
     "mysql2": "2.1.0",
     "mysql2": "2.1.0",
-    "nanoid": "2.1.8",
+    "nanoid": "2.1.9",
     "node-2fa": "1.1.2",
     "node-2fa": "1.1.2",
     "node-cache": "5.1.0",
     "node-cache": "5.1.0",
     "nodemailer": "6.4.2",
     "nodemailer": "6.4.2",
@@ -142,9 +142,9 @@
     "passport-saml": "1.2.0",
     "passport-saml": "1.2.0",
     "passport-twitch": "1.0.3",
     "passport-twitch": "1.0.3",
     "pem-jwk": "2.0.0",
     "pem-jwk": "2.0.0",
-    "pg": "7.17.0",
+    "pg": "7.17.1",
     "pg-hstore": "2.3.3",
     "pg-hstore": "2.3.3",
-    "pg-query-stream": "2.1.2",
+    "pg-query-stream": "3.0.0",
     "pg-tsquery": "8.1.0",
     "pg-tsquery": "8.1.0",
     "pug": "2.0.4",
     "pug": "2.0.4",
     "punycode": "2.1.1",
     "punycode": "2.1.1",
@@ -155,7 +155,7 @@
     "request-promise": "4.2.5",
     "request-promise": "4.2.5",
     "safe-regex": "2.1.1",
     "safe-regex": "2.1.1",
     "sanitize-filename": "1.6.3",
     "sanitize-filename": "1.6.3",
-    "scim-query-filter-parser": "2.0.2",
+    "scim-query-filter-parser": "2.0.4",
     "semver": "7.1.1",
     "semver": "7.1.1",
     "serve-favicon": "2.5.0",
     "serve-favicon": "2.5.0",
     "simple-git": "1.129.0",
     "simple-git": "1.129.0",
@@ -168,26 +168,26 @@
     "tar-fs": "2.0.0",
     "tar-fs": "2.0.0",
     "twemoji": "12.1.4",
     "twemoji": "12.1.4",
     "uslug": "1.0.4",
     "uslug": "1.0.4",
-    "uuid": "3.3.3",
+    "uuid": "3.4.0",
     "validate.js": "0.13.1",
     "validate.js": "0.13.1",
     "winston": "3.2.1",
     "winston": "3.2.1",
     "xss": "1.0.6",
     "xss": "1.0.6",
     "yargs": "15.1.0"
     "yargs": "15.1.0"
   },
   },
   "devDependencies": {
   "devDependencies": {
-    "@babel/cli": "^7.7.7",
-    "@babel/core": "^7.7.7",
-    "@babel/plugin-proposal-class-properties": "^7.7.4",
-    "@babel/plugin-proposal-decorators": "^7.7.4",
-    "@babel/plugin-proposal-export-namespace-from": "^7.7.4",
-    "@babel/plugin-proposal-function-sent": "^7.7.4",
-    "@babel/plugin-proposal-json-strings": "^7.7.4",
-    "@babel/plugin-proposal-numeric-separator": "^7.7.4",
-    "@babel/plugin-proposal-throw-expressions": "^7.7.4",
-    "@babel/plugin-syntax-dynamic-import": "^7.7.4",
-    "@babel/plugin-syntax-import-meta": "^7.7.4",
-    "@babel/polyfill": "^7.7.0",
-    "@babel/preset-env": "^7.7.7",
+    "@babel/cli": "^7.8.3",
+    "@babel/core": "^7.8.3",
+    "@babel/plugin-proposal-class-properties": "^7.8.3",
+    "@babel/plugin-proposal-decorators": "^7.8.3",
+    "@babel/plugin-proposal-export-namespace-from": "^7.8.3",
+    "@babel/plugin-proposal-function-sent": "^7.8.3",
+    "@babel/plugin-proposal-json-strings": "^7.8.3",
+    "@babel/plugin-proposal-numeric-separator": "^7.8.3",
+    "@babel/plugin-proposal-throw-expressions": "^7.8.3",
+    "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+    "@babel/plugin-syntax-import-meta": "^7.8.3",
+    "@babel/polyfill": "^7.8.3",
+    "@babel/preset-env": "^7.8.3",
     "@mdi/font": "4.7.95",
     "@mdi/font": "4.7.95",
     "@panter/vue-i18next": "0.15.1",
     "@panter/vue-i18next": "0.15.1",
     "@requarks/ckeditor5": "12.4.0-wiki.14",
     "@requarks/ckeditor5": "12.4.0-wiki.14",
@@ -203,13 +203,13 @@
     "apollo-link-persisted-queries": "0.2.2",
     "apollo-link-persisted-queries": "0.2.2",
     "apollo-link-ws": "1.0.19",
     "apollo-link-ws": "1.0.19",
     "apollo-utilities": "1.3.3",
     "apollo-utilities": "1.3.3",
-    "autoprefixer": "9.7.3",
+    "autoprefixer": "9.7.4",
     "babel-eslint": "10.0.3",
     "babel-eslint": "10.0.3",
     "babel-jest": "24.9.0",
     "babel-jest": "24.9.0",
     "babel-loader": "^8.0.6",
     "babel-loader": "^8.0.6",
     "babel-plugin-graphql-tag": "2.5.0",
     "babel-plugin-graphql-tag": "2.5.0",
     "babel-plugin-lodash": "3.3.4",
     "babel-plugin-lodash": "3.3.4",
-    "babel-plugin-prismjs": "1.1.1",
+    "babel-plugin-prismjs": "2.0.0",
     "babel-plugin-transform-imports": "2.0.0",
     "babel-plugin-transform-imports": "2.0.0",
     "cache-loader": "4.1.0",
     "cache-loader": "4.1.0",
     "chart.js": "2.9.3",
     "chart.js": "2.9.3",
@@ -217,8 +217,8 @@
     "clipboard": "2.0.4",
     "clipboard": "2.0.4",
     "codemirror": "5.50.2",
     "codemirror": "5.50.2",
     "copy-webpack-plugin": "5.1.1",
     "copy-webpack-plugin": "5.1.1",
-    "core-js": "3.6.1",
-    "css-loader": "3.4.0",
+    "core-js": "3.6.4",
+    "css-loader": "3.4.2",
     "cssnano": "4.1.10",
     "cssnano": "4.1.10",
     "d3": "5.15.0",
     "d3": "5.15.0",
     "duplicate-package-checker-webpack-plugin": "3.0.0",
     "duplicate-package-checker-webpack-plugin": "3.0.0",
@@ -226,14 +226,14 @@
     "eslint": "6.8.0",
     "eslint": "6.8.0",
     "eslint-config-requarks": "1.0.7",
     "eslint-config-requarks": "1.0.7",
     "eslint-config-standard": "14.1.0",
     "eslint-config-standard": "14.1.0",
-    "eslint-plugin-import": "2.19.1",
+    "eslint-plugin-import": "2.20.0",
     "eslint-plugin-node": "11.0.0",
     "eslint-plugin-node": "11.0.0",
     "eslint-plugin-promise": "4.2.1",
     "eslint-plugin-promise": "4.2.1",
     "eslint-plugin-standard": "4.0.1",
     "eslint-plugin-standard": "4.0.1",
     "eslint-plugin-vue": "6.1.2",
     "eslint-plugin-vue": "6.1.2",
     "fibers": "4.0.2",
     "fibers": "4.0.2",
     "file-loader": "5.0.2",
     "file-loader": "5.0.2",
-    "filepond": "4.9.3",
+    "filepond": "4.9.4",
     "filepond-plugin-file-validate-type": "1.2.4",
     "filepond-plugin-file-validate-type": "1.2.4",
     "filesize.js": "2.0.0",
     "filesize.js": "2.0.0",
     "graphql-persisted-document-loader": "2.0.0",
     "graphql-persisted-document-loader": "2.0.0",
@@ -241,7 +241,7 @@
     "hammerjs": "2.0.8",
     "hammerjs": "2.0.8",
     "html-webpack-plugin": "4.0.0-beta.8",
     "html-webpack-plugin": "4.0.0-beta.8",
     "html-webpack-pug-plugin": "2.0.0",
     "html-webpack-pug-plugin": "2.0.0",
-    "i18next-chained-backend": "2.0.0",
+    "i18next-chained-backend": "2.0.1",
     "i18next-localstorage-backend": "3.0.0",
     "i18next-localstorage-backend": "3.0.0",
     "i18next-xhr-backend": "3.2.2",
     "i18next-xhr-backend": "3.2.2",
     "ignore-loader": "0.1.2",
     "ignore-loader": "0.1.2",
@@ -258,19 +258,19 @@
     "postcss-loader": "3.0.0",
     "postcss-loader": "3.0.0",
     "postcss-preset-env": "6.7.0",
     "postcss-preset-env": "6.7.0",
     "postcss-selector-parser": "6.0.2",
     "postcss-selector-parser": "6.0.2",
-    "prismjs": "1.17.1",
+    "prismjs": "1.19.0",
     "pug-lint": "2.6.0",
     "pug-lint": "2.6.0",
     "pug-loader": "2.4.0",
     "pug-loader": "2.4.0",
     "pug-plain-loader": "1.0.0",
     "pug-plain-loader": "1.0.0",
     "raw-loader": "4.0.0",
     "raw-loader": "4.0.0",
     "resolve-url-loader": "3.1.1",
     "resolve-url-loader": "3.1.1",
-    "sass": "1.24.0",
-    "sass-loader": "8.0.0",
+    "sass": "1.25.0",
+    "sass-loader": "8.0.2",
     "sass-resources-loader": "2.0.1",
     "sass-resources-loader": "2.0.1",
     "script-ext-html-webpack-plugin": "2.1.4",
     "script-ext-html-webpack-plugin": "2.1.4",
     "simple-progress-webpack-plugin": "1.1.2",
     "simple-progress-webpack-plugin": "1.1.2",
-    "style-loader": "1.1.2",
-    "terser": "4.5.0",
+    "style-loader": "1.1.3",
+    "terser": "4.6.3",
     "twemoji-awesome": "1.0.6",
     "twemoji-awesome": "1.0.6",
     "url-loader": "3.0.0",
     "url-loader": "3.0.0",
     "velocity-animate": "1.5.2",
     "velocity-animate": "1.5.2",
@@ -279,17 +279,17 @@
     "vue-apollo": "3.0.2",
     "vue-apollo": "3.0.2",
     "vue-chartjs": "3.5.0",
     "vue-chartjs": "3.5.0",
     "vue-clipboards": "1.3.0",
     "vue-clipboards": "1.3.0",
-    "vue-filepond": "6.0.0",
+    "vue-filepond": "6.0.2",
     "vue-hot-reload-api": "2.3.4",
     "vue-hot-reload-api": "2.3.4",
     "vue-loader": "15.8.3",
     "vue-loader": "15.8.3",
     "vue-moment": "4.1.0",
     "vue-moment": "4.1.0",
-    "vue-router": "3.1.3",
+    "vue-router": "3.1.5",
     "vue-status-indicator": "1.2.1",
     "vue-status-indicator": "1.2.1",
     "vue-template-compiler": "2.6.11",
     "vue-template-compiler": "2.6.11",
     "vue2-animate": "2.1.3",
     "vue2-animate": "2.1.3",
     "vuedraggable": "2.23.2",
     "vuedraggable": "2.23.2",
     "vuescroll": "4.14.4",
     "vuescroll": "4.14.4",
-    "vuetify": "2.2.0",
+    "vuetify": "2.2.4",
     "vuetify-loader": "1.4.3",
     "vuetify-loader": "1.4.3",
     "vuex": "3.1.2",
     "vuex": "3.1.2",
     "vuex-pathify": "1.4.1",
     "vuex-pathify": "1.4.1",
@@ -300,7 +300,7 @@
     "webpack-dev-middleware": "3.7.2",
     "webpack-dev-middleware": "3.7.2",
     "webpack-hot-middleware": "2.25.0",
     "webpack-hot-middleware": "2.25.0",
     "webpack-merge": "4.2.2",
     "webpack-merge": "4.2.2",
-    "webpack-subresource-integrity": "1.3.4",
+    "webpack-subresource-integrity": "1.4.0",
     "webpackbar": "4.0.0",
     "webpackbar": "4.0.0",
     "whatwg-fetch": "3.0.0",
     "whatwg-fetch": "3.0.0",
     "write-file-webpack-plugin": "4.5.1",
     "write-file-webpack-plugin": "4.5.1",

+ 2 - 2
server/controllers/common.js

@@ -109,7 +109,7 @@ router.get(['/h', '/h/*'], async (req, res, next) => {
 
 
   _.set(res, 'locals.siteConfig.lang', pageArgs.locale)
   _.set(res, 'locals.siteConfig.lang', pageArgs.locale)
 
 
-  if (!WIKI.auth.checkAccess(req.user, ['read:pages'], pageArgs)) {
+  if (!WIKI.auth.checkAccess(req.user, ['read:history'], pageArgs)) {
     _.set(res.locals, 'pageMeta.title', 'Unauthorized')
     _.set(res.locals, 'pageMeta.title', 'Unauthorized')
     return res.render('unauthorized', { action: 'history' })
     return res.render('unauthorized', { action: 'history' })
   }
   }
@@ -182,7 +182,7 @@ router.get(['/s', '/s/*'], async (req, res, next) => {
 
 
   _.set(res, 'locals.siteConfig.lang', pageArgs.locale)
   _.set(res, 'locals.siteConfig.lang', pageArgs.locale)
 
 
-  if (!WIKI.auth.checkAccess(req.user, ['read:pages'], pageArgs)) {
+  if (!WIKI.auth.checkAccess(req.user, ['read:source'], pageArgs)) {
     return res.render('unauthorized', { action: 'source' })
     return res.render('unauthorized', { action: 'source' })
   }
   }
 
 

+ 16 - 19
server/graph/resolvers/contribute.js

@@ -1,31 +1,28 @@
 const request = require('request-promise')
 const request = require('request-promise')
 const _ = require('lodash')
 const _ = require('lodash')
 
 
+/* global WIKI */
+
 module.exports = {
 module.exports = {
   Query: {
   Query: {
     async contribute() { return {} }
     async contribute() { return {} }
   },
   },
   ContributeQuery: {
   ContributeQuery: {
     async contributors(obj, args, context, info) {
     async contributors(obj, args, context, info) {
-      const resp = await request({
-        uri: 'https://opencollective.com/wikijs/members/all.json',
-        json: true
-      })
-      return _.filter(resp, c => {
-        return c.role === 'BACKER' && c.totalAmountDonated > 0
-      }).map(c => ({
-        company: _.get(c, 'company', '') || '',
-        currency: _.get(c, 'currency', 'USD') || 'USD',
-        description: _.get(c, 'description', '') || '',
-        id: _.get(c, 'MemberId', 0),
-        image: _.get(c, 'image', '') || '',
-        name: _.get(c, 'name', 'Anonymous') || '',
-        profile: _.get(c, 'profile', ''),
-        tier: _.toLower(_.get(c, 'tier', 'backers')),
-        totalDonated: Math.ceil(_.get(c, 'totalAmountDonated', 0)),
-        twitter: _.get(c, 'twitter', '') || '',
-        website: _.get(c, 'website', '') || ''
-      }))
+      try {
+        const resp = await request({
+          method: 'POST',
+          uri: 'https://graph.requarks.io',
+          json: true,
+          body: {
+            query: '{\n  sponsors {\n    list(kind: BACKER) {\n      id\n      source\n      name\n      joined\n      website\n      twitter\n      avatar\n    }\n  }\n}\n',
+            variables: {}
+          }
+        })
+        return _.get(resp, 'data.sponsors.list', [])
+      } catch (err) {
+        WIKI.logger.warn(err)
+      }
     }
     }
   }
   }
 }
 }

+ 6 - 10
server/graph/schemas/contribute.graphql

@@ -19,15 +19,11 @@ type ContributeQuery {
 # -----------------------------------------------
 # -----------------------------------------------
 
 
 type ContributeContributor {
 type ContributeContributor {
-  company: String!
-  currency: String!
-  description: String!
-  id: Int!
-  image: String!
+  id: String!
+  source: String!
   name: String!
   name: String!
-  profile: String!
-  tier: String!
-  totalDonated: Int!
-  twitter: String!
-  website: String!
+  joined: Date!
+  website: String
+  twitter: String
+  avatar: String
 }
 }

File diff suppressed because it is too large
+ 509 - 112
yarn.lock


Some files were not shown because too many files changed in this diff