@@ -7,25 +7,19 @@ import { Context } from '../Context';
7
7
const directiveName = 'auth' ;
8
8
9
9
export const typeDefs = /* GraphQL */ `
10
- directive @${ directiveName } (
10
+ directive @${ directiveName } (
11
11
"""
12
12
Roles required for the operation (at least one)
13
13
"""
14
14
requires: [Role] = []
15
+ ) on OBJECT | FIELD_DEFINITION
15
16
16
- """
17
- Whether premium subscription is required
18
- """
19
- premium: Boolean = false
20
- ) on OBJECT | FIELD_DEFINITION
21
-
22
- enum Role {
17
+ enum Role {
23
18
MODERATOR
24
- }
19
+ }
25
20
` ;
26
21
27
- const typeDirectiveArgumentMaps : { requires ?: string [ ] ; premium ?: boolean } =
28
- { } ;
22
+ const typeDirectiveArgumentMaps : { requires ?: string [ ] } = { } ;
29
23
30
24
export const transformer = ( schema : GraphQLSchema ) : GraphQLSchema =>
31
25
mapSchema ( schema , {
@@ -43,11 +37,11 @@ export const transformer = (schema: GraphQLSchema): GraphQLSchema =>
43
37
// @ts -expect-error - internal mapping
44
38
typeDirectiveArgumentMaps [ typeName ] ;
45
39
if ( args ) {
46
- const { requires, premium } = args ;
40
+ const { requires } = args ;
47
41
if ( requires ) {
48
42
const { resolve = defaultFieldResolver } = fieldConfig ;
49
43
fieldConfig . resolve = function ( source , args , ctx : Context , info ) {
50
- if ( ! requires && ! premium ) {
44
+ if ( ! requires ) {
51
45
return resolve ( source , args , ctx , info ) ;
52
46
}
53
47
if ( ! ctx . userId ) {
@@ -60,17 +54,12 @@ export const transformer = (schema: GraphQLSchema): GraphQLSchema =>
60
54
resolve ( source , args , ctx , info ) ;
61
55
return null ;
62
56
}
63
- if ( requires . length > 0 || premium ) {
64
- let authorized : boolean ;
65
- if ( premium ) {
66
- authorized = ctx . premium ;
67
- } else {
68
- const roles = ctx . roles ;
69
- authorized =
70
- roles . findIndex (
71
- ( r ) => requires . indexOf ( r . toUpperCase ( ) ) > - 1 ,
72
- ) > - 1 ;
73
- }
57
+ if ( requires . length > 0 ) {
58
+ const roles = ctx . roles ;
59
+ const authorized =
60
+ roles . findIndex ( ( r ) => requires . indexOf ( r . toUpperCase ( ) ) > - 1 ) >
61
+ - 1 ;
62
+
74
63
if ( ! authorized ) {
75
64
if ( [ 'Query' , 'Mutation' ] . includes ( typeName ) ) {
76
65
throw new ForbiddenError (
0 commit comments