diff --git a/backend/src/auth/RIGHTS.ts b/backend/src/auth/RIGHTS.ts index f40088779..57401d361 100644 --- a/backend/src/auth/RIGHTS.ts +++ b/backend/src/auth/RIGHTS.ts @@ -24,6 +24,7 @@ export enum RIGHTS { QUERY_TRANSACTION_LINK = 'QUERY_TRANSACTION_LINK', REDEEM_TRANSACTION_LINK = 'REDEEM_TRANSACTION_LINK', LIST_TRANSACTION_LINKS = 'LIST_TRANSACTION_LINKS', + GDT_SUM = 'GDT_SUM', // Admin SEARCH_USERS = 'SEARCH_USERS', CREATE_PENDING_CREATION = 'CREATE_PENDING_CREATION', diff --git a/backend/src/auth/ROLES.ts b/backend/src/auth/ROLES.ts index 82c689848..5cb8f833a 100644 --- a/backend/src/auth/ROLES.ts +++ b/backend/src/auth/ROLES.ts @@ -22,6 +22,7 @@ export const ROLE_USER = new Role('user', [ RIGHTS.DELETE_TRANSACTION_LINK, RIGHTS.REDEEM_TRANSACTION_LINK, RIGHTS.LIST_TRANSACTION_LINKS, + RIGHTS.GDT_SUM, ]) export const ROLE_ADMIN = new Role('admin', Object.values(RIGHTS)) // all rights diff --git a/backend/src/graphql/resolver/GdtResolver.ts b/backend/src/graphql/resolver/GdtResolver.ts index 26ae9b210..302b17a4a 100644 --- a/backend/src/graphql/resolver/GdtResolver.ts +++ b/backend/src/graphql/resolver/GdtResolver.ts @@ -13,13 +13,11 @@ import { RIGHTS } from '@/auth/RIGHTS' export class GdtResolver { @Authorized([RIGHTS.LIST_GDT_ENTRIES]) @Query(() => GdtEntryList) - // eslint-disable-next-line @typescript-eslint/no-explicit-any async listGDTEntries( @Args() { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, @Ctx() context: any, ): Promise { - // load user const userEntity = context.user try { @@ -35,6 +33,25 @@ export class GdtResolver { } } + @Authorized([RIGHTS.GDT_SUM]) + @Query(() => Number | null) + async gdtSum(@Ctx() context: any): Promise { + const { user } = context + try { + const resultGDTSum = await apiPost(`${CONFIG.GDT_API_URL}/GdtEntries/sumPerEmailApi`, { + email: user.email, + }) + if (!resultGDTSum.success) { + throw new Error('Call not successful') + } + return Number(resultGDTSum.data.sum) || 0 + } catch (err: any) { + // eslint-disable-next-line no-console + console.log('Could not query GDT Server', err) + return null + } + } + @Authorized([RIGHTS.EXIST_PID]) @Query(() => Number) // eslint-disable-next-line @typescript-eslint/no-explicit-any