From 437426cfc4e911e02a1d1171a79c92083f5cffae Mon Sep 17 00:00:00 2001 From: buiducnhat Date: Mon, 30 Dec 2024 23:14:40 +0700 Subject: [PATCH] feat(oauth-providers): availbility pass state into middlewares --- .changeset/red-cheetahs-argue.md | 5 +++++ .../oauth-providers/src/providers/facebook/facebookAuth.ts | 3 ++- packages/oauth-providers/src/providers/github/githubAuth.ts | 3 ++- .../oauth-providers/src/providers/linkedin/linkedinAuth.ts | 3 ++- packages/oauth-providers/src/providers/x/xAuth.ts | 3 ++- 5 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 .changeset/red-cheetahs-argue.md diff --git a/.changeset/red-cheetahs-argue.md b/.changeset/red-cheetahs-argue.md new file mode 100644 index 00000000..5912e5c2 --- /dev/null +++ b/.changeset/red-cheetahs-argue.md @@ -0,0 +1,5 @@ +--- +'@hono/oauth-providers': minor +--- + +Add availbility to pass parameter state into OAuth middlewares diff --git a/packages/oauth-providers/src/providers/facebook/facebookAuth.ts b/packages/oauth-providers/src/providers/facebook/facebookAuth.ts index 75865d7a..220f1ee5 100644 --- a/packages/oauth-providers/src/providers/facebook/facebookAuth.ts +++ b/packages/oauth-providers/src/providers/facebook/facebookAuth.ts @@ -12,10 +12,11 @@ export function facebookAuth(options: { fields: Fields[] client_id?: string client_secret?: string + state?: string redirect_uri?: string }): MiddlewareHandler { return async (c, next) => { - const newState = getRandomState() + const newState = options.state || getRandomState() // Create new Auth instance const auth = new AuthFlow({ client_id: options.client_id || (env(c).FACEBOOK_ID as string), diff --git a/packages/oauth-providers/src/providers/github/githubAuth.ts b/packages/oauth-providers/src/providers/github/githubAuth.ts index 3e0875ab..f4804853 100644 --- a/packages/oauth-providers/src/providers/github/githubAuth.ts +++ b/packages/oauth-providers/src/providers/github/githubAuth.ts @@ -12,10 +12,11 @@ export function githubAuth(options: { client_secret?: string scope?: GitHubScope[] oauthApp?: boolean + state?: string redirect_uri?: string }): MiddlewareHandler { return async (c, next) => { - const newState = getRandomState() + const newState = options.state || getRandomState() // Create new Auth instance const auth = new AuthFlow({ client_id: options.client_id || (env(c).GITHUB_ID as string), diff --git a/packages/oauth-providers/src/providers/linkedin/linkedinAuth.ts b/packages/oauth-providers/src/providers/linkedin/linkedinAuth.ts index e0ac131f..35f4f512 100644 --- a/packages/oauth-providers/src/providers/linkedin/linkedinAuth.ts +++ b/packages/oauth-providers/src/providers/linkedin/linkedinAuth.ts @@ -12,10 +12,11 @@ export function linkedinAuth(options: { client_secret?: string scope?: LinkedInScope[] appAuth?: boolean + state?: string redirect_uri?: string }): MiddlewareHandler { return async (c, next) => { - const newState = getRandomState() + const newState = options.state || getRandomState() // Create new Auth instance const auth = new AuthFlow({ client_id: options.client_id || (env(c).LINKEDIN_ID as string), diff --git a/packages/oauth-providers/src/providers/x/xAuth.ts b/packages/oauth-providers/src/providers/x/xAuth.ts index 18381a35..298b1f1c 100644 --- a/packages/oauth-providers/src/providers/x/xAuth.ts +++ b/packages/oauth-providers/src/providers/x/xAuth.ts @@ -13,11 +13,12 @@ export function xAuth(options: { fields?: XFields[] client_id?: string client_secret?: string + state?: string redirect_uri?: string }): MiddlewareHandler { return async (c, next) => { // Generate encoded "keys" - const newState = getRandomState() + const newState = options.state || getRandomState() const challenge = await getCodeChallenge() const auth = new AuthFlow({