|
@@ -57,7 +57,7 @@ export default {
|
|
async authSiteStrategies (obj, args, context, info) {
|
|
async authSiteStrategies (obj, args, context, info) {
|
|
const site = await WIKI.db.sites.query().findById(args.siteId)
|
|
const site = await WIKI.db.sites.query().findById(args.siteId)
|
|
const activeStrategies = await WIKI.db.authentication.getStrategies({ enabledOnly: true })
|
|
const activeStrategies = await WIKI.db.authentication.getStrategies({ enabledOnly: true })
|
|
- return activeStrategies.map(str => {
|
|
|
|
|
|
+ const siteStrategies = _.sortBy(activeStrategies.map(str => {
|
|
const siteAuth = _.find(site.config.authStrategies, ['id', str.id]) || {}
|
|
const siteAuth = _.find(site.config.authStrategies, ['id', str.id]) || {}
|
|
return {
|
|
return {
|
|
id: str.id,
|
|
id: str.id,
|
|
@@ -65,7 +65,8 @@ export default {
|
|
order: siteAuth.order ?? 0,
|
|
order: siteAuth.order ?? 0,
|
|
isVisible: siteAuth.isVisible ?? false
|
|
isVisible: siteAuth.isVisible ?? false
|
|
}
|
|
}
|
|
- })
|
|
|
|
|
|
+ }), ['order'])
|
|
|
|
+ return args.visibleOnly ? siteStrategies.filter(s => s.isVisible) : siteStrategies
|
|
}
|
|
}
|
|
},
|
|
},
|
|
Mutation: {
|
|
Mutation: {
|
|
@@ -196,6 +197,10 @@ export default {
|
|
*/
|
|
*/
|
|
async setApiState (obj, args, context) {
|
|
async setApiState (obj, args, context) {
|
|
try {
|
|
try {
|
|
|
|
+ if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
|
|
|
|
+ throw new Error('ERR_FORBIDDEN')
|
|
|
|
+ }
|
|
|
|
+
|
|
WIKI.config.api.isEnabled = args.enabled
|
|
WIKI.config.api.isEnabled = args.enabled
|
|
await WIKI.configSvc.saveToDb(['api'])
|
|
await WIKI.configSvc.saveToDb(['api'])
|
|
return {
|
|
return {
|
|
@@ -210,6 +215,10 @@ export default {
|
|
*/
|
|
*/
|
|
async revokeApiKey (obj, args, context) {
|
|
async revokeApiKey (obj, args, context) {
|
|
try {
|
|
try {
|
|
|
|
+ if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
|
|
|
|
+ throw new Error('ERR_FORBIDDEN')
|
|
|
|
+ }
|
|
|
|
+
|
|
await WIKI.db.apiKeys.query().findById(args.id).patch({
|
|
await WIKI.db.apiKeys.query().findById(args.id).patch({
|
|
isRevoked: true
|
|
isRevoked: true
|
|
})
|
|
})
|
|
@@ -227,11 +236,14 @@ export default {
|
|
*/
|
|
*/
|
|
async updateAuthStrategies (obj, args, context) {
|
|
async updateAuthStrategies (obj, args, context) {
|
|
try {
|
|
try {
|
|
|
|
+ if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
|
|
|
|
+ throw new Error('ERR_FORBIDDEN')
|
|
|
|
+ }
|
|
|
|
+
|
|
const previousStrategies = await WIKI.db.authentication.getStrategies()
|
|
const previousStrategies = await WIKI.db.authentication.getStrategies()
|
|
for (const str of args.strategies) {
|
|
for (const str of args.strategies) {
|
|
const newStr = {
|
|
const newStr = {
|
|
displayName: str.displayName,
|
|
displayName: str.displayName,
|
|
- order: str.order,
|
|
|
|
isEnabled: str.isEnabled,
|
|
isEnabled: str.isEnabled,
|
|
config: _.reduce(str.config, (result, value, key) => {
|
|
config: _.reduce(str.config, (result, value, key) => {
|
|
_.set(result, `${value.key}`, _.get(JSON.parse(value.value), 'v', null))
|
|
_.set(result, `${value.key}`, _.get(JSON.parse(value.value), 'v', null))
|
|
@@ -280,6 +292,10 @@ export default {
|
|
*/
|
|
*/
|
|
async regenerateCertificates (obj, args, context) {
|
|
async regenerateCertificates (obj, args, context) {
|
|
try {
|
|
try {
|
|
|
|
+ if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
|
|
|
|
+ throw new Error('ERR_FORBIDDEN')
|
|
|
|
+ }
|
|
|
|
+
|
|
await WIKI.auth.regenerateCertificates()
|
|
await WIKI.auth.regenerateCertificates()
|
|
return {
|
|
return {
|
|
responseResult: generateSuccess('Certificates have been regenerated successfully.')
|
|
responseResult: generateSuccess('Certificates have been regenerated successfully.')
|
|
@@ -293,6 +309,10 @@ export default {
|
|
*/
|
|
*/
|
|
async resetGuestUser (obj, args, context) {
|
|
async resetGuestUser (obj, args, context) {
|
|
try {
|
|
try {
|
|
|
|
+ if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
|
|
|
|
+ throw new Error('ERR_FORBIDDEN')
|
|
|
|
+ }
|
|
|
|
+
|
|
await WIKI.auth.resetGuestUser()
|
|
await WIKI.auth.resetGuestUser()
|
|
return {
|
|
return {
|
|
responseResult: generateSuccess('Guest user has been reset successfully.')
|
|
responseResult: generateSuccess('Guest user has been reset successfully.')
|
|
@@ -302,7 +322,28 @@ export default {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ // ------------------------------------------------------------------
|
|
|
|
+ // TYPE: AuthenticationActiveStrategy
|
|
|
|
+ // ------------------------------------------------------------------
|
|
AuthenticationActiveStrategy: {
|
|
AuthenticationActiveStrategy: {
|
|
|
|
+ config (obj, args, context) {
|
|
|
|
+ if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
|
|
|
|
+ throw new Error('ERR_FORBIDDEN')
|
|
|
|
+ }
|
|
|
|
+ return obj.config ?? {}
|
|
|
|
+ },
|
|
|
|
+ allowedEmailRegex (obj, args, context) {
|
|
|
|
+ if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
|
|
|
|
+ throw new Error('ERR_FORBIDDEN')
|
|
|
|
+ }
|
|
|
|
+ return obj.allowedEmailRegex ?? ''
|
|
|
|
+ },
|
|
|
|
+ autoEnrollGroups (obj, args, context) {
|
|
|
|
+ if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
|
|
|
|
+ throw new Error('ERR_FORBIDDEN')
|
|
|
|
+ }
|
|
|
|
+ return obj.autoEnrollGroups ?? []
|
|
|
|
+ },
|
|
strategy (obj, args, context) {
|
|
strategy (obj, args, context) {
|
|
return _.find(WIKI.data.authentication, ['key', obj.module])
|
|
return _.find(WIKI.data.authentication, ['key', obj.module])
|
|
}
|
|
}
|