🔧 chore: create oauth endpoint req to backend

This commit is contained in:
2026-01-08 14:58:21 +07:00
parent 77eeaf1adc
commit 940e84d168
3 changed files with 48 additions and 6 deletions

View File

@ -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 (
<div>
<h1>Loading....</h1>
</div>
);
};
export default page;

View File

@ -1,6 +1,20 @@
"use client"; "use server";
import { backendFetch, BackendResponse } from "@/shared/helper/backendFetch"; import { backendFetch, BackendResponse } from "@/shared/helper/backendFetch";
export const getOauthEndpoint = async (url: string) => { interface GetOauthEndpointParams {
return (await backendFetch(url)) as BackendResponse<{ endpointUrl: string }>; 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;
}>;
}; };

View File

@ -33,8 +33,14 @@ const SignInCard = () => {
})(); })();
}, []); }, []);
const getOauthEndpointUrl = async (providerReqEndpoint: string) => { const getOauthEndpointUrl = async (
const res = await getOauthEndpoint(providerReqEndpoint); providerReqEndpoint: string,
providerName: string
) => {
const res = await getOauthEndpoint({
endpointUrl: providerReqEndpoint,
providerName: providerName,
});
router.push(res.data?.endpointUrl || "/"); router.push(res.data?.endpointUrl || "/");
}; };
@ -66,7 +72,9 @@ const SignInCard = () => {
variant="outline" variant="outline"
className="w-full text-neutral-300 text-xs font-normal" className="w-full text-neutral-300 text-xs font-normal"
disabled={isLoading} disabled={isLoading}
onClick={() => getOauthEndpointUrl(provider.req_endpoint)} onClick={() =>
getOauthEndpointUrl(provider.req_endpoint, provider.name)
}
> >
{isLoading && <Spinner />} {isLoading && <Spinner />}
<Icon icon={provider.icon} /> <Icon icon={provider.icon} />