Skip to content

Commit

Permalink
support permission checks with disabled auth
Browse files Browse the repository at this point in the history
  • Loading branch information
nk-coding committed Jul 24, 2023
1 parent f69806e commit be5b043
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}

0 comments on commit be5b043

Please sign in to comment.