From ad66d2519ee5f0b2335f4681201e447a5b8be1e8 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 15 Sep 2022 12:29:28 +0200 Subject: [PATCH 1/5] refactor: Add Client Request Time to Client Request and Add it to Context --- frontend/src/plugins/apolloProvider.js | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/plugins/apolloProvider.js b/frontend/src/plugins/apolloProvider.js index 4a0ff9914..05954d36b 100644 --- a/frontend/src/plugins/apolloProvider.js +++ b/frontend/src/plugins/apolloProvider.js @@ -12,6 +12,7 @@ const authLink = new ApolloLink((operation, forward) => { operation.setContext({ headers: { Authorization: token && token.length > 0 ? `Bearer ${token}` : '', + clientRequestTime: new Date().toString(), }, }) return forward(operation).map((response) => { From 80bbf2411669740747efcc3271bc49bc434ee88c Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 15 Sep 2022 12:30:29 +0200 Subject: [PATCH 2/5] add client request time to context --- backend/src/server/context.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/backend/src/server/context.ts b/backend/src/server/context.ts index d9fd55fe4..5bfc22e72 100644 --- a/backend/src/server/context.ts +++ b/backend/src/server/context.ts @@ -9,6 +9,7 @@ export interface Context { setHeaders: { key: string; value: string }[] role?: Role user?: dbUser + clientRequestTime?: string // hack to use less DB calls for Balance Resolver lastTransaction?: dbTransaction transactionCount?: number @@ -18,14 +19,17 @@ export interface Context { const context = (args: ExpressContext): Context => { const authorization = args.req.headers.authorization - let token: string | null = null - if (authorization) { - token = authorization.replace(/^Bearer /, '') - } - const context = { - token, + const clientRequestTime = args.req.headers.clientrequesttime + const context: Context = { + token: null, setHeaders: [], } + if (authorization) { + context.token = authorization.replace(/^Bearer /, '') + } + if (clientRequestTime && typeof clientRequestTime === 'string') { + context.clientRequestTime = clientRequestTime + } return context } From 23f5ebabd3d2eb5be98d5437b7e61b4629066721 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 15 Sep 2022 12:35:08 +0200 Subject: [PATCH 3/5] add client request time to request header of admin interface --- admin/src/plugins/apolloProvider.js | 1 + 1 file changed, 1 insertion(+) diff --git a/admin/src/plugins/apolloProvider.js b/admin/src/plugins/apolloProvider.js index 1f51be20a..95b7aab7e 100644 --- a/admin/src/plugins/apolloProvider.js +++ b/admin/src/plugins/apolloProvider.js @@ -10,6 +10,7 @@ const authLink = new ApolloLink((operation, forward) => { operation.setContext({ headers: { Authorization: token && token.length > 0 ? `Bearer ${token}` : '', + clientRequestTime: new Date().toString(), }, }) return forward(operation).map((response) => { From 5c784abe8a00e9222a59993901ca7084b513b4c8 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 22 Sep 2022 08:53:58 +0200 Subject: [PATCH 4/5] test client request time in request header --- frontend/src/plugins/apolloProvider.test.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/src/plugins/apolloProvider.test.js b/frontend/src/plugins/apolloProvider.test.js index aeb02243c..31e1a664b 100644 --- a/frontend/src/plugins/apolloProvider.test.js +++ b/frontend/src/plugins/apolloProvider.test.js @@ -98,6 +98,7 @@ describe('apolloProvider', () => { expect(setContextMock).toBeCalledWith({ headers: { Authorization: 'Bearer some-token', + clientRequestTime: expect.any(String), }, }) }) @@ -113,6 +114,7 @@ describe('apolloProvider', () => { expect(setContextMock).toBeCalledWith({ headers: { Authorization: '', + clientRequestTime: expect.any(String), }, }) }) From 91acb5f4b82edd2a5dd47920a1fb1a5939e1edef Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 22 Sep 2022 08:57:06 +0200 Subject: [PATCH 5/5] test client request time in request header --- admin/src/plugins/apolloProvider.test.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/admin/src/plugins/apolloProvider.test.js b/admin/src/plugins/apolloProvider.test.js index 75e415901..7889c3318 100644 --- a/admin/src/plugins/apolloProvider.test.js +++ b/admin/src/plugins/apolloProvider.test.js @@ -94,6 +94,7 @@ describe('apolloProvider', () => { expect(setContextMock).toBeCalledWith({ headers: { Authorization: 'Bearer some-token', + clientRequestTime: expect.any(String), }, }) }) @@ -109,6 +110,7 @@ describe('apolloProvider', () => { expect(setContextMock).toBeCalledWith({ headers: { Authorization: '', + clientRequestTime: expect.any(String), }, }) })