diff --git a/api-common/src/main/kotlin/gropius/graphql/GraphQLConfiguration.kt b/api-common/src/main/kotlin/gropius/graphql/GraphQLConfiguration.kt index 3d767a4c..1e0c0191 100644 --- a/api-common/src/main/kotlin/gropius/graphql/GraphQLConfiguration.kt +++ b/api-common/src/main/kotlin/gropius/graphql/GraphQLConfiguration.kt @@ -14,6 +14,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import graphql.Scalars import graphql.scalars.regex.RegexScalar import graphql.schema.* +import gropius.authorization.checkPermission import gropius.authorization.gropiusAuthorizationContext import gropius.model.common.PERMISSION_FIELD_BEAN import gropius.model.template.TEMPLATED_FIELDS_FILTER_BEAN @@ -185,11 +186,10 @@ class GraphQLConfiguration { node: org.neo4j.cypherdsl.core.Node, nodeDefinition: NodeDefinition ): Expression { - val context = dfe.gropiusAuthorizationContext - return if (context.checkPermission) { + return if (dfe.checkPermission) { val conditionGenerator = nodeDefinitionCollection.generateAuthorizationCondition( nodeDefinition, - Permission(arguments["permission"] as String, context) + Permission(arguments["permission"] as String, dfe.gropiusAuthorizationContext) ) val condition = conditionGenerator.generateCondition(node) condition diff --git a/core/src/main/kotlin/gropius/authorization/GropiusAuthorizationContext.kt b/core/src/main/kotlin/gropius/authorization/GropiusAuthorizationContext.kt index 533ddf1f..12d04c8f 100644 --- a/core/src/main/kotlin/gropius/authorization/GropiusAuthorizationContext.kt +++ b/core/src/main/kotlin/gropius/authorization/GropiusAuthorizationContext.kt @@ -31,4 +31,15 @@ val DataFetchingEnvironment.gropiusAuthorizationContext: GropiusAuthorizationCon throw IllegalArgumentException("No GropiusAuthorizationContext available") } return tempAuthorizationContext +} + +/** + * Gets checkPermission of a possibly set [GropiusAuthorizationContext] and evaluates to false otherwise + */ +val DataFetchingEnvironment.checkPermission: Boolean get() { + return if (this.authorizationContext is GropiusAuthorizationContext) { + this.gropiusAuthorizationContext.checkPermission + } else { + false + } } \ No newline at end of file