diff --git a/apps/login/src/app/(login)/idp/[provider]/success/page.tsx b/apps/login/src/app/(login)/idp/[provider]/success/page.tsx index 50d902007d6..ce3070d265b 100644 --- a/apps/login/src/app/(login)/idp/[provider]/success/page.tsx +++ b/apps/login/src/app/(login)/idp/[provider]/success/page.tsx @@ -44,6 +44,38 @@ const PROVIDER_MAPPING: { }; return req; }, + [ProviderSlug.AZURE]: (idp: IDPInformation) => { + const rawInfo = idp.rawInformation?.toJson() as { + User: { + email: string; + name?: string; + given_name?: string; + family_name?: string; + }; + }; + + const idpLink: PartialMessage = { + idpId: idp.idpId, + userId: idp.userId, + userName: idp.userName, + }; + + const req: PartialMessage = { + username: idp.userName, + email: { + email: rawInfo.User?.email, + verification: { case: "isVerified", value: true }, + }, + // organisation: Organisation | undefined; + profile: { + displayName: rawInfo.User?.name ?? "", + givenName: rawInfo.User?.given_name ?? "", + familyName: rawInfo.User?.family_name ?? "", + }, + idpLinks: [idpLink], + }; + return req; + }, [ProviderSlug.GITHUB]: (idp: IDPInformation) => { const rawInfo = idp.rawInformation?.toJson() as { email: string; diff --git a/apps/login/src/lib/demos.ts b/apps/login/src/lib/demos.ts index 464bb578897..13e2a3017a8 100644 --- a/apps/login/src/lib/demos.ts +++ b/apps/login/src/lib/demos.ts @@ -7,6 +7,7 @@ export type Item = { export enum ProviderSlug { GOOGLE = "google", GITHUB = "github", + AZURE = "microsoft", } export const demos: { name: string; items: Item[] }[] = [ diff --git a/apps/login/src/ui/SignInWithIDP.tsx b/apps/login/src/ui/SignInWithIDP.tsx index eee49e25720..f9b2f6431fd 100644 --- a/apps/login/src/ui/SignInWithIDP.tsx +++ b/apps/login/src/ui/SignInWithIDP.tsx @@ -102,7 +102,13 @@ export function SignInWithIDP({ return ( alert("TODO: unimplemented")} + onClick={() => + startFlow(idp.id, ProviderSlug.AZURE).then( + ({ authUrl }) => { + router.push(authUrl); + }, + ) + } > ); case 10: // IdentityProviderType.IDENTITY_PROVIDER_TYPE_GOOGLE: