From 940e84d16814463cd9af5b4f018d5504a2a964b6 Mon Sep 17 00:00:00 2001 From: Rafi Arrafif Date: Thu, 8 Jan 2026 14:58:21 +0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20chore:=20create=20oauth=20endpoi?= =?UTF-8?q?nt=20req=20to=20backend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/auth/providers/[name]/callback/page.tsx | 20 +++++++++++++++++++ .../signin/actions/getOauthEndpoint.ts | 20 ++++++++++++++++--- .../widgets/signin/components/SignInCard.tsx | 14 ++++++++++--- 3 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 app/auth/providers/[name]/callback/page.tsx diff --git a/app/auth/providers/[name]/callback/page.tsx b/app/auth/providers/[name]/callback/page.tsx new file mode 100644 index 0000000..9b9cf13 --- /dev/null +++ b/app/auth/providers/[name]/callback/page.tsx @@ -0,0 +1,20 @@ +import React from "react"; + +const page = async ({ + params, + searchParams, +}: { + params: { name: string }; + searchParams: { [key: string]: string | string[] | undefined }; +}) => { + const resolvedParams = await params; + const resolvedSearchParams = await searchParams; + + return ( +
+

Loading....

+
+ ); +}; + +export default page; diff --git a/shared/widgets/signin/actions/getOauthEndpoint.ts b/shared/widgets/signin/actions/getOauthEndpoint.ts index 128648e..913953d 100644 --- a/shared/widgets/signin/actions/getOauthEndpoint.ts +++ b/shared/widgets/signin/actions/getOauthEndpoint.ts @@ -1,6 +1,20 @@ -"use client"; +"use server"; import { backendFetch, BackendResponse } from "@/shared/helper/backendFetch"; -export const getOauthEndpoint = async (url: string) => { - return (await backendFetch(url)) as BackendResponse<{ endpointUrl: string }>; +interface GetOauthEndpointParams { + endpointUrl: string; + providerName: string; +} + +export const getOauthEndpoint = async ({ + endpointUrl, + providerName, +}: GetOauthEndpointParams) => { + const envKey = providerName.toUpperCase() + "_CALLBACK_URL"; + + return (await backendFetch( + `${endpointUrl}?callback=${process.env.APP_URL}${process.env[envKey]}` + )) as BackendResponse<{ + endpointUrl: string; + }>; }; diff --git a/shared/widgets/signin/components/SignInCard.tsx b/shared/widgets/signin/components/SignInCard.tsx index 558ae22..d2a236c 100644 --- a/shared/widgets/signin/components/SignInCard.tsx +++ b/shared/widgets/signin/components/SignInCard.tsx @@ -33,8 +33,14 @@ const SignInCard = () => { })(); }, []); - const getOauthEndpointUrl = async (providerReqEndpoint: string) => { - const res = await getOauthEndpoint(providerReqEndpoint); + const getOauthEndpointUrl = async ( + providerReqEndpoint: string, + providerName: string + ) => { + const res = await getOauthEndpoint({ + endpointUrl: providerReqEndpoint, + providerName: providerName, + }); router.push(res.data?.endpointUrl || "/"); }; @@ -66,7 +72,9 @@ const SignInCard = () => { variant="outline" className="w-full text-neutral-300 text-xs font-normal" disabled={isLoading} - onClick={() => getOauthEndpointUrl(provider.req_endpoint)} + onClick={() => + getOauthEndpointUrl(provider.req_endpoint, provider.name) + } > {isLoading && }