From 0ad8eb8e120e58dcf61e8962b6821c84c6cb4094 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Wed, 18 Dec 2024 12:52:52 +0100 Subject: [PATCH] server: add @admin directive implementation This will be used at least by meta.sr.ht in the near future. --- server/directives.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/directives.go b/server/directives.go index b141a56311c1f51a69d66c15920f7fd76521bdef..17f60c1b88603856b444b0eb472ea30d2a3ead5f 100644 --- a/server/directives.go +++ b/server/directives.go @@ -9,6 +9,16 @@ import ( "git.sr.ht/~sircmpwn/core-go/auth" ) +func Admin(ctx context.Context, obj interface{}, + next graphql.Resolver) (interface{}, error) { + + if auth.ForContext(ctx).UserType != auth.USER_TYPE_ADMIN { + return nil, fmt.Errorf("Access denied") + } + + return next(ctx) +} + func AnonInternal(ctx context.Context, obj interface{}, next graphql.Resolver) (interface{}, error) {