import { href, redirect } from 'react-router';
import { type callbackOAuth } from 'better-auth/api';
import { APIError, auth } from '~/services/auth.server';
import type { Route } from './+types/$providerId.callback';
export const loader = async ({ request, params }: Route.LoaderArgs) => {
try {
const url = new URL(request.url);
const { state, code, device_id, error, user, error_description } = Object.fromEntries(url.searchParams);
await ((auth.api as any).callbackOAuth as typeof callbackOAuth)({
request,
headers: request.headers,
returnHeaders: true,
method: 'GET',
query: {
state,
code,
device_id,
error,
user,
error_description,
},
params: {
id: params.providerId,
},
});
} catch (error) {
if (error instanceof APIError) {
if (error.headers) {
return redirect(href('/auth/login'), { headers: error.headers });
}
}
return redirect(href('/auth/login'));
}
};
import { href, redirect } from 'react-router';
import { type callbackOAuth } from 'better-auth/api';
import { APIError, auth } from '~/services/auth.server';
import type { Route } from './+types/$providerId.callback';
export const loader = async ({ request, params }: Route.LoaderArgs) => {
try {
const url = new URL(request.url);
const { state, code, device_id, error, user, error_description } = Object.fromEntries(url.searchParams);
await ((auth.api as any).callbackOAuth as typeof callbackOAuth)({
request,
headers: request.headers,
returnHeaders: true,
method: 'GET',
query: {
state,
code,
device_id,
error,
user,
error_description,
},
params: {
id: params.providerId,
},
});
} catch (error) {
if (error instanceof APIError) {
if (error.headers) {
return redirect(href('/auth/login'), { headers: error.headers });
}
}
return redirect(href('/auth/login'));
}
};