Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion apps/sim/lib/oauth/microsoft.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,15 @@ describe('deriveMicrosoftEmailVerified', () => {
expect(deriveMicrosoftEmailVerified({ email_verified: 'true' }, EMAIL)).toBe(true)
})

it('treats a malformed verified-email claim as unverified', () => {
it('treats malformed (non-array) verified-email claims as unverified without throwing', () => {
expect(deriveMicrosoftEmailVerified({ verified_primary_email: 'not-an-array' }, EMAIL)).toBe(
false
)
expect(deriveMicrosoftEmailVerified({ verified_primary_email: 123 }, EMAIL)).toBe(false)
expect(deriveMicrosoftEmailVerified({ verified_secondary_email: { foo: 'bar' } }, EMAIL)).toBe(
false
)
expect(deriveMicrosoftEmailVerified({ verified_primary_email: null }, EMAIL)).toBe(false)
})
Comment thread
waleedlatif1 marked this conversation as resolved.
})

Expand Down
9 changes: 6 additions & 3 deletions apps/sim/lib/oauth/microsoft.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,10 @@ export function deriveMicrosoftEmailVerified(
if (claims.email_verified !== undefined) {
return Boolean(claims.email_verified)
}
const verifiedPrimaryEmail = claims.verified_primary_email as string[] | undefined
const verifiedSecondaryEmail = claims.verified_secondary_email as string[] | undefined
return Boolean(verifiedPrimaryEmail?.includes(email) || verifiedSecondaryEmail?.includes(email))
const { verified_primary_email: verifiedPrimary, verified_secondary_email: verifiedSecondary } =
claims
return (
(Array.isArray(verifiedPrimary) && verifiedPrimary.includes(email)) ||
(Array.isArray(verifiedSecondary) && verifiedSecondary.includes(email))
)
}
Loading