From 14f8806b3ad74b4d231bc1dea881d08102949fa4 Mon Sep 17 00:00:00 2001 From: nijoe1 Date: Tue, 25 Feb 2025 12:39:25 -0700 Subject: [PATCH 1/4] fix: twitter verification --- .../src/components/providers/identity/credentials.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/builder/src/components/providers/identity/credentials.ts b/packages/builder/src/components/providers/identity/credentials.ts index aafa6a9661..fd2f6ec114 100644 --- a/packages/builder/src/components/providers/identity/credentials.ts +++ b/packages/builder/src/components/providers/identity/credentials.ts @@ -5,6 +5,7 @@ import { IssuedChallenge, VerifiableCredentialRecord, } from "@gitcoinco/passport-sdk-types"; +import { CredentialProvider } from "../../../types"; export type { VerifiableCredential } from "@gitcoinco/passport-sdk-types"; @@ -37,6 +38,8 @@ export enum ClientType { } export type GHOrgRequestPayload = RequestPayload & { + type: string; + types: CredentialProvider[]; requestedClient?: ClientType.GrantHub; org?: string; }; @@ -51,7 +54,7 @@ export class VerificationError extends Error { // Fetch a verifiableCredential export const fetchVerifiableCredential = async ( iamUrl: string, - payload: any, + payload: GHOrgRequestPayload, signer: { signMessage: (message: string) => Promise } ): Promise => { // first pull a challenge that can be signed by the user @@ -86,8 +89,8 @@ export const fetchVerifiableCredential = async ( return { signature, challenge, - record: response?.data.record, - credential: response?.data.credential, + record: response?.data[0].record, + credential: response?.data[0].credential, } as VerifiableCredentialRecord; }; From 76c4e3dc5becdba72bc50855c171bdd6331d143f Mon Sep 17 00:00:00 2001 From: nijoe1 Date: Tue, 25 Feb 2025 12:55:33 -0700 Subject: [PATCH 2/4] fix: lint issue --- .../providers/identity/credentials.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/builder/src/components/providers/identity/credentials.ts b/packages/builder/src/components/providers/identity/credentials.ts index fd2f6ec114..da576098a9 100644 --- a/packages/builder/src/components/providers/identity/credentials.ts +++ b/packages/builder/src/components/providers/identity/credentials.ts @@ -4,6 +4,7 @@ import { RequestPayload, IssuedChallenge, VerifiableCredentialRecord, + VerifiableCredential, } from "@gitcoinco/passport-sdk-types"; import { CredentialProvider } from "../../../types"; @@ -77,20 +78,29 @@ export const fetchVerifiableCredential = async ( payload.proofs = { ...payload.proofs, ...{ signature } }; // fetch a credential from the API that fits the version, payload and passes the signature message challenge - const response = await axios.post( + const response = (await axios.post( `${iamUrl.replace(/\/*?$/, "")}/v${payload.version}/verify`, { payload, challenge, } - ); + )) as { + data: { + record: VerifiableCredentialRecord["record"]; + credential: VerifiableCredential; + }[]; + }; + + if (response.data.length === 0) { + throw new VerificationError("No credential found"); + } // return everything that was used to create the credential (along with the credential) return { signature, challenge, - record: response?.data[0].record, - credential: response?.data[0].credential, + record: response.data[0].record, + credential: response.data[0].credential, } as VerifiableCredentialRecord; }; From 70f09c6df2361274f4a0c683d43aacd0c3beabae Mon Sep 17 00:00:00 2001 From: nijoe1 Date: Tue, 25 Feb 2025 13:01:20 -0700 Subject: [PATCH 3/4] fix: lint issue in tests --- .../components/providers/identity/__tests__/credentials.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/builder/src/components/providers/identity/__tests__/credentials.test.ts b/packages/builder/src/components/providers/identity/__tests__/credentials.test.ts index 06c41629aa..6b2125d9aa 100644 --- a/packages/builder/src/components/providers/identity/__tests__/credentials.test.ts +++ b/packages/builder/src/components/providers/identity/__tests__/credentials.test.ts @@ -21,6 +21,7 @@ describe("Fetch Credentials", () => { const payload: GHOrgRequestPayload = { address: "0x0", type: "Simple", + types: [], version: "Test-Case-1", org: "gitcoinco", }; From 0f8653f400cf942bdee534caeaf6e3148c493bff Mon Sep 17 00:00:00 2001 From: nijoe1 Date: Tue, 25 Feb 2025 13:06:50 -0700 Subject: [PATCH 4/4] fix: lint issue in tests --- .../identity/__tests__/credentials.test.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/builder/src/components/providers/identity/__tests__/credentials.test.ts b/packages/builder/src/components/providers/identity/__tests__/credentials.test.ts index 6b2125d9aa..0dc2312a33 100644 --- a/packages/builder/src/components/providers/identity/__tests__/credentials.test.ts +++ b/packages/builder/src/components/providers/identity/__tests__/credentials.test.ts @@ -72,7 +72,7 @@ describe("Fetch Credentials", () => { if (url.includes("verify")) { return { - data: MOCK_VERIFY_RESPONSE_BODY, + data: [MOCK_VERIFY_RESPONSE_BODY], }; } @@ -103,13 +103,15 @@ describe("Fetch Credentials", () => { it("will not attempt to sign if not provided a challenge in the challenge credential", async () => { jest.spyOn(axios, "post").mockResolvedValueOnce({ - data: { - credential: { - credentialSubject: { - challenge: null, + data: [ + { + credential: { + credentialSubject: { + challenge: null, + }, }, }, - }, + ], }); await expect(