From db3d7dca3676d61dc1347d1543242351cb9f7349 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Sun, 21 Jan 2024 07:43:50 +0800 Subject: [PATCH] Add missing file --- packages/api/src/utils/gql-utils.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 packages/api/src/utils/gql-utils.ts diff --git a/packages/api/src/utils/gql-utils.ts b/packages/api/src/utils/gql-utils.ts new file mode 100644 index 000000000..ef5986f28 --- /dev/null +++ b/packages/api/src/utils/gql-utils.ts @@ -0,0 +1,26 @@ +import { ResolverFn } from '../generated/graphql' +import { Claims, WithDataSourcesContext } from '../resolvers/types' + +export function authorized< + TSuccess, + TError extends { errorCodes: string[] }, + /* eslint-disable @typescript-eslint/no-explicit-any */ + TArgs = any, + TParent = any + /* eslint-enable @typescript-eslint/no-explicit-any */ +>( + resolver: ResolverFn< + TSuccess | TError, + TParent, + WithDataSourcesContext & { claims: Claims }, + TArgs + > +): ResolverFn { + return (parent, args, ctx, info) => { + const { claims } = ctx + if (claims?.uid) { + return resolver(parent, args, { ...ctx, claims, uid: claims.uid }, info) + } + return { errorCodes: ['UNAUTHORIZED'] } as TError + } +}