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 && }