|
@@ -1,5 +1,6 @@
|
|
|
const { SchemaDirectiveVisitor } = require('graphql-tools')
|
|
|
const { defaultFieldResolver } = require('graphql')
|
|
|
+const _ = require('lodash')
|
|
|
|
|
|
class AuthDirective extends SchemaDirectiveVisitor {
|
|
|
visitObject(type) {
|
|
@@ -39,11 +40,13 @@ class AuthDirective extends SchemaDirectiveVisitor {
|
|
|
}
|
|
|
|
|
|
const context = args[2]
|
|
|
- console.info(context.req.user)
|
|
|
- // const user = await getUser(context.headers.authToken)
|
|
|
- // if (!user.hasRole(requiredScopes)) {
|
|
|
- // throw new Error('not authorized')
|
|
|
- // }
|
|
|
+ if (!context.req.user) {
|
|
|
+ throw new Error('Unauthorized')
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!_.some(context.req.user.permissions, pm => _.includes(requiredScopes, pm))) {
|
|
|
+ throw new Error('Forbidden')
|
|
|
+ }
|
|
|
|
|
|
return resolve.apply(this, args)
|
|
|
}
|