From 358b80d4ced3561d42d28e3ab017a2027afe28d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Orb=C3=A1n?= Date: Tue, 31 May 2022 19:02:35 +0200 Subject: [PATCH] feat(providers): make `issuer` configurable on Salesforce (#4658) --- .../next-auth/src/providers/salesforce.js | 22 ------------- .../next-auth/src/providers/salesforce.ts | 32 +++++++++++++++++++ 2 files changed, 32 insertions(+), 22 deletions(-) delete mode 100644 packages/next-auth/src/providers/salesforce.js create mode 100644 packages/next-auth/src/providers/salesforce.ts diff --git a/packages/next-auth/src/providers/salesforce.js b/packages/next-auth/src/providers/salesforce.js deleted file mode 100644 index 40b1a0eca9..0000000000 --- a/packages/next-auth/src/providers/salesforce.js +++ /dev/null @@ -1,22 +0,0 @@ -/** @type {import(".").OAuthProvider} */ -export default function Salesforce(options) { - return { - id: "salesforce", - name: "Salesforce", - type: "oauth", - authorization: - "https://login.salesforce.com/services/oauth2/authorize?display=page", - token: "https://login.salesforce.com/services/oauth2/token", - userinfo: "https://login.salesforce.com/services/oauth2/userinfo", - profile(profile) { - return { - id: profile.user_id, - name: null, - email: null, - image: profile.picture, - } - }, - checks: ["none"], - options, - } -} diff --git a/packages/next-auth/src/providers/salesforce.ts b/packages/next-auth/src/providers/salesforce.ts new file mode 100644 index 0000000000..d4cd39c2e4 --- /dev/null +++ b/packages/next-auth/src/providers/salesforce.ts @@ -0,0 +1,32 @@ +import type { OAuthConfig, OAuthUserConfig } from "." + +export interface SalesforceProfile extends Record { + sub: string + nickname: string + email: string + picture: string +} + +export default function Salesforce

( + options: OAuthUserConfig

+): OAuthConfig

{ + const { issuer = "https://login.salesforce.com" } = options + return { + id: "salesforce", + name: "Salesforce", + type: "oauth", + authorization: `${issuer}/services/oauth2/authorize?display=page`, + token: `${issuer}/services/oauth2/token`, + userinfo: `${issuer}/services/oauth2/userinfo`, + profile(profile) { + return { + id: profile.user_id, + name: null, + email: null, + image: profile.picture, + } + }, + checks: ["none"], + options, + } +}