feat: authentication providers resolver - filter + orderBy

This commit is contained in:
NGPixel
2018-03-09 00:33:43 -05:00
parent 6ff4152e1c
commit 69a0711d16
7 changed files with 151 additions and 96 deletions

View File

@@ -1,6 +1,9 @@
const _ = require('lodash')
const fs = require('fs-extra')
const path = require('path')
const graphHelper = require('../../helpers/graph')
// const getFieldNames = require('graphql-list-fields')
/* global WIKI */
@@ -13,16 +16,17 @@ module.exports = {
},
AuthenticationQuery: {
providers(obj, args, context, info) {
return _.chain(WIKI.auth.strategies).map(str => {
return {
isEnabled: true,
key: str.key,
props: str.props,
title: str.title,
useForm: str.useForm,
config: []
}
}).sortBy(['title']).value()
let prv = _.map(WIKI.auth.strategies, str => ({
isEnabled: true,
key: str.key,
props: str.props,
title: str.title,
useForm: str.useForm,
config: []
}))
if (args.filter) { prv = graphHelper.filter(prv, args.filter) }
if (args.orderBy) { prv = graphHelper.orderBy(prv, args.orderBy) }
return prv
}
},
AuthenticationProvider: {

View File

@@ -7,7 +7,10 @@ extend type Mutation {
}
type AuthenticationQuery {
providers: [AuthenticationProvider]
providers(
filter: String
orderBy: String
): [AuthenticationProvider]
}
type AuthenticationMutation {

13
server/helpers/graph.js Normal file
View File

@@ -0,0 +1,13 @@
const _ = require('lodash')
const Filter = require('scim-query-filter-parser')
module.exports = {
filter (arr, filterString) {
const prvFilter = new Filter(_.toString(filterString).replace(/'/g, `"`))
return arr.filter(prvFilter.test)
},
orderBy (arr, orderString) {
let orderParams = _.zip(orderString.split(',').map(ord => _.trim(ord).split(' ').map(_.trim)))
return _.orderBy(arr, orderParams[0], orderParams[1])
}
}