diff --git a/src/env.d.ts b/src/env.d.ts index eca1d69..63e3eaf 100644 --- a/src/env.d.ts +++ b/src/env.d.ts @@ -30,3 +30,5 @@ interface ImportMetaEnv { interface ImportMeta { readonly env: ImportMetaEnv; } + +declare const process: { env: Record }; diff --git a/src/pages/api/auth/signin.ts b/src/pages/api/auth/signin.ts new file mode 100644 index 0000000..e661dc4 --- /dev/null +++ b/src/pages/api/auth/signin.ts @@ -0,0 +1,15 @@ +import type { APIRoute } from 'astro'; +import { serverClient } from '@/lib/supabase'; + +export const GET: APIRoute = async ({ cookies, url, redirect }) => { + const appUrl = process.env.PUBLIC_APP_URL ?? import.meta.env.PUBLIC_APP_URL ?? url.origin; + const supabase = serverClient(cookies); + + const { data, error } = await supabase.auth.signInWithOAuth({ + provider: 'google', + options: { redirectTo: `${appUrl}/api/auth/callback` }, + }); + + if (error || !data?.url) return redirect('/login?error=oauth'); + return redirect(data.url); +}; diff --git a/src/pages/login.astro b/src/pages/login.astro index b3c364a..31a5b52 100644 --- a/src/pages/login.astro +++ b/src/pages/login.astro @@ -9,10 +9,7 @@ const errorMsg = errorParam === 'dominio' ? 'No se pudo completar la autenticación con Google. Inténtalo de nuevo.' : null; -const appUrl = process.env.PUBLIC_APP_URL ?? import.meta.env.PUBLIC_APP_URL ?? url.origin; -const supabaseUrl = process.env.PUBLIC_SUPABASE_URL ?? import.meta.env.PUBLIC_SUPABASE_URL; -const redirectTo = `${appUrl}/api/auth/callback`; -const googleAuthUrl = `${supabaseUrl}/auth/v1/authorize?provider=google&redirect_to=${encodeURIComponent(redirectTo)}`; +const googleAuthUrl = '/api/auth/signin'; ---