From 7e8b5be6cde19b801136422cbe0f3060eb332e1e Mon Sep 17 00:00:00 2001 From: Rafi Arrafif Date: Sun, 24 Aug 2025 10:42:36 +0700 Subject: [PATCH] :necktie: create list for oauth providers create list and endpoint to see avaiable oauth providers. --- src/config/oauthProvider.ts | 20 +++++++++++++++++++ .../getOauthProviders.controller.ts | 11 ++++++++++ src/modules/auth/index.ts | 2 ++ .../http/getOauthProviders.service.ts | 16 +++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 src/config/oauthProvider.ts create mode 100644 src/modules/auth/controllers/getOauthProviders.controller.ts create mode 100644 src/modules/auth/services/http/getOauthProviders.service.ts diff --git a/src/config/oauthProvider.ts b/src/config/oauthProvider.ts new file mode 100644 index 0000000..4964987 --- /dev/null +++ b/src/config/oauthProvider.ts @@ -0,0 +1,20 @@ +export const getOauthProviders = () => { + return [ + { + name: "google", + icon: "logos:google-icon", + req_endpoint: "auth/github", + client_id: process.env.GOOGLE_CLIENT_ID, + client_secret: process.env.GOOGLE_CLIENT_SECRET, + client_callback: "auth/google/callback", + }, + { + name: "github", + icon: "logos:github-icon", + req_endpoint: "auth/github", + client_id: process.env.GITHUB_CLIENT_ID, + client_secret: process.env.GITHUB_CLIENT_SECRET, + client_callback: "auth/github/callback", + }, + ]; +}; diff --git a/src/modules/auth/controllers/getOauthProviders.controller.ts b/src/modules/auth/controllers/getOauthProviders.controller.ts new file mode 100644 index 0000000..10e937e --- /dev/null +++ b/src/modules/auth/controllers/getOauthProviders.controller.ts @@ -0,0 +1,11 @@ +import { Context } from "elysia"; +import { mainErrorHandler } from "../../../helpers/error/handler"; +import { getOauthProvidersService } from "../services/http/getOauthProviders.service"; + +export const getOauthProvidersController = (ctx: Context) => { + try { + return getOauthProvidersService(); + } catch (error) { + return mainErrorHandler(ctx.set, error); + } +}; diff --git a/src/modules/auth/index.ts b/src/modules/auth/index.ts index ad5c1d1..87fd29a 100644 --- a/src/modules/auth/index.ts +++ b/src/modules/auth/index.ts @@ -3,8 +3,10 @@ import { githubRequestController } from "./controllers/githubRequest.controller" import { githubCallbackController } from "./controllers/githubCallback.controller"; import { googleRequestController } from "./controllers/googleRequest.controller"; import { googleCallbackController } from "./controllers/googleCallback.controller"; +import { getOauthProvidersController } from "./controllers/getOauthProviders.controller"; export const authModule = new Elysia({ prefix: "/auth" }) + .get("/providers", getOauthProvidersController) .get("/github", githubRequestController) .get("/github/callback", githubCallbackController) .get("/google", googleRequestController) diff --git a/src/modules/auth/services/http/getOauthProviders.service.ts b/src/modules/auth/services/http/getOauthProviders.service.ts new file mode 100644 index 0000000..e063759 --- /dev/null +++ b/src/modules/auth/services/http/getOauthProviders.service.ts @@ -0,0 +1,16 @@ +import { getOauthProviders } from "../../../../config/oauthProvider"; +import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder"; + +export const getOauthProvidersService = () => { + try { + const listProviders = getOauthProviders(); + + return listProviders.map(({ name, icon, req_endpoint }) => ({ + name, + icon, + req_endpoint, + })); + } catch (error) { + ErrorForwarder(error); + } +};