diff --git a/iam/.env-example.env b/iam/.env-example.env index 0d9cbb599..c48662783 100644 --- a/iam/.env-example.env +++ b/iam/.env-example.env @@ -11,6 +11,8 @@ GITHUB_CLIENT_ID=MY_GITHUB_CLIENT_ID GITHUB_CLIENT_SECRET=MY_GITHUB_CLIENT_SECRET GRANT_HUB_GITHUB_CLIENT_ID=MY_GRANT_HUB_GITHUB_CLIENT_ID GRANT_HUB_GITHUB_CLIENT_SECRET=MY_GRANT_HUB_GITHUB_CLIENT_SECRET +GRANT_HUB_MACI_GITHUB_CLIENT_ID=MY_GRANT_HUB_GITHUB_CLIENT_ID +GRANT_HUB_MACI_GITHUB_CLIENT_SECRET=MY_GRANT_HUB_GITHUB_CLIENT_SECRET LINKEDIN_CLIENT_ID=MY_LINKEDIN_CLIENT_ID LINKEDIN_CLIENT_SECRET=MY_LINKEDIN_CLIENT_SECRET LINKEDIN_CALLBACK=http://localhost:3000/ diff --git a/infra/aws/iam_secrets.ts b/infra/aws/iam_secrets.ts index 74cc46117..57672cfca 100644 --- a/infra/aws/iam_secrets.ts +++ b/infra/aws/iam_secrets.ts @@ -55,6 +55,14 @@ export const getIamSecrets = (PASSPORT_VC_SECRETS_ARN: string, IAM_SERVER_SSM_AR name: "GRANT_HUB_GITHUB_CLIENT_SECRET", valueFrom: `${IAM_SERVER_SSM_ARN}:GRANT_HUB_GITHUB_CLIENT_SECRET::`, }, + { + name: "GRANT_HUB_MACI_GITHUB_CLIENT_ID", + valueFrom: `${IAM_SERVER_SSM_ARN}:GRANT_HUB_MACI_GITHUB_CLIENT_ID::`, + }, + { + name: "GRANT_HUB_MACI_GITHUB_CLIENT_SECRET", + valueFrom: `${IAM_SERVER_SSM_ARN}:GRANT_HUB_MACI_GITHUB_CLIENT_SECRET::`, + }, { name: "LINKEDIN_CLIENT_ID", valueFrom: `${IAM_SERVER_SSM_ARN}:LINKEDIN_CLIENT_ID::`, diff --git a/platforms/src/ClearText/Providers/clearTextGithubOrg.ts b/platforms/src/ClearText/Providers/clearTextGithubOrg.ts index d0998a017..96930998e 100644 --- a/platforms/src/ClearText/Providers/clearTextGithubOrg.ts +++ b/platforms/src/ClearText/Providers/clearTextGithubOrg.ts @@ -14,7 +14,8 @@ export type GithubFindMyUserResponse = { }; export enum ClientType { - GrantHub, + GrantHub = 0, + GrantHubMACI = 1, } export type GHUserRequestPayload = RequestPayload & { @@ -101,13 +102,27 @@ const verifyOrg = (data: Organization[], providedOrg: string): GithubMyOrg => { }; }; +const getCredentials = (requestedClient: ClientType): { clientId: string; clientSecret: string } => { + switch (requestedClient) { + case ClientType.GrantHub: + return { + clientId: process.env.GRANT_HUB_GITHUB_CLIENT_ID, + clientSecret: process.env.GRANT_HUB_GITHUB_CLIENT_SECRET, + }; + case ClientType.GrantHubMACI: + return { + clientId: process.env.GRANT_HUB_MACI_GITHUB_CLIENT_ID, + clientSecret: process.env.GRANT_HUB_MACI_GITHUB_CLIENT_SECRET, + }; + } + return { + clientId: process.env.GITHUB_CLIENT_ID, + clientSecret: process.env.GITHUB_CLIENT_SECRET, + }; +}; + const requestAccessToken = async (code: string, requestedClient: ClientType): Promise => { - const clientId = - requestedClient === ClientType.GrantHub ? process.env.GRANT_HUB_GITHUB_CLIENT_ID : process.env.GITHUB_CLIENT_ID; - const clientSecret = - requestedClient === ClientType.GrantHub - ? process.env.GRANT_HUB_GITHUB_CLIENT_SECRET - : process.env.GITHUB_CLIENT_SECRET; + const { clientId, clientSecret } = getCredentials(requestedClient); // Exchange the code for an access token const tokenRequest = await axios.post(