diff --git a/src/app/dashboard/account/route.ts b/src/app/dashboard/account/route.ts index 612e46912..d59976617 100644 --- a/src/app/dashboard/account/route.ts +++ b/src/app/dashboard/account/route.ts @@ -1,5 +1,4 @@ import { AUTH_URLS, PROTECTED_URLS } from '@/configs/urls' -import { l } from '@/lib/clients/logger/logger' import { createClient } from '@/lib/clients/supabase/server' import { encodedRedirect } from '@/lib/utils/auth' import { setTeamCookies } from '@/lib/utils/cookies' @@ -7,50 +6,17 @@ import { resolveUserTeam } from '@/server/team/resolve-user-team' import { NextRequest, NextResponse } from 'next/server' export async function GET(request: NextRequest) { - l.debug( - { - key: 'account_route:start', - url: request.url, - }, - 'account route - start' - ) - const supabase = await createClient() const { data, error } = await supabase.auth.getUser() - l.debug( - { - key: 'account_route:user_auth', - hasUser: !!data?.user, - userId: data?.user?.id, - hasError: !!error, - }, - 'account route - user auth' - ) - if (error || !data.user) { - l.debug( - { - key: 'account_route:auth_redirect', - redirectTo: '/sign-in', - }, - 'account route - auth redirect' - ) - return NextResponse.redirect(new URL('/sign-in', request.url)) + return NextResponse.redirect(new URL(AUTH_URLS.SIGN_IN, request.url)) } // Resolve team for the user const team = await resolveUserTeam(data.user.id) if (!team) { - l.debug( - { - key: 'account_route:no_teams', - userId: data.user.id, - }, - 'account route - no teams found, redirecting to sign-in' - ) - // UNEXPECTED STATE - sign out and redirect to sign-in await supabase.auth.signOut() @@ -63,16 +29,6 @@ export async function GET(request: NextRequest) { ) } - l.debug( - { - key: 'account_route:team_resolved', - teamId: team.id, - teamSlug: team.slug, - source: team.source, - }, - 'account route - team resolved' - ) - // Set team cookies for persistence await setTeamCookies(team.id, team.slug) @@ -87,14 +43,5 @@ export async function GET(request: NextRequest) { redirectUrl.searchParams.set(key, value) }) - l.debug( - { - key: 'account_route:redirect', - redirectPath: redirectUrl.toString(), - teamIdentifier: team.slug || team.id, - }, - 'account route - redirecting to account settings' - ) - return NextResponse.redirect(redirectUrl) } diff --git a/src/app/dashboard/route.ts b/src/app/dashboard/route.ts index a4b5cf025..1e036efc6 100644 --- a/src/app/dashboard/route.ts +++ b/src/app/dashboard/route.ts @@ -1,5 +1,4 @@ import { AUTH_URLS, PROTECTED_URLS } from '@/configs/urls' -import { l } from '@/lib/clients/logger/logger' import { createClient } from '@/lib/clients/supabase/server' import { encodedRedirect } from '@/lib/utils/auth' import { setTeamCookies } from '@/lib/utils/cookies' @@ -24,51 +23,17 @@ export async function GET(request: NextRequest) { const searchParams = request.nextUrl.searchParams const tab = searchParams.get('tab') - l.debug( - { - key: 'dashboard_route:start', - tab, - url: request.url, - }, - 'dashboard route - start' - ) - const supabase = await createClient() const { data, error } = await supabase.auth.getUser() - l.debug( - { - key: 'dashboard_route:user_auth', - hasUser: !!data?.user, - userId: data?.user?.id, - hasError: !!error, - }, - 'dashboard route - user auth' - ) - if (error || !data.user) { - l.debug( - { - key: 'dashboard_route:auth_redirect', - redirectTo: '/sign-in', - }, - 'dashboard route - auth redirect' - ) return NextResponse.redirect(new URL('/sign-in', request.url)) } const team = await resolveUserTeam(data.user.id) if (!team) { - l.debug( - { - key: 'dashboard_route:no_teams', - userId: data.user.id, - }, - 'dashboard route - no teams found, redirecting to sign-in' - ) - // UNEXPECTED STATE - sign out and redirect to sign-in await supabase.auth.signOut() @@ -81,16 +46,6 @@ export async function GET(request: NextRequest) { ) } - l.debug( - { - key: 'dashboard_route:team_resolved', - teamId: team.id, - teamSlug: team.slug, - source: team.source, - }, - 'dashboard route - team resolved' - ) - // Set team cookies for persistence await setTeamCookies(team.id, team.slug) @@ -100,15 +55,5 @@ export async function GET(request: NextRequest) { ? urlGenerator(team.slug || team.id) : PROTECTED_URLS.SANDBOXES(team.slug || team.id) - l.debug( - { - key: 'dashboard_route:redirect', - tab, - redirectPath, - teamIdentifier: team.slug || team.id, - }, - 'dashboard route - redirecting to tab' - ) - return NextResponse.redirect(new URL(redirectPath, request.url)) } diff --git a/src/lib/utils/server.ts b/src/lib/utils/server.ts index 855209f9f..8b566869d 100644 --- a/src/lib/utils/server.ts +++ b/src/lib/utils/server.ts @@ -46,105 +46,28 @@ export async function generateE2BUserAccessToken(supabaseAccessToken: string) { return res.data } -/** - * Resolves team metadata from cookies. - * If no metadata is found, it redirects to the dashboard. - */ -export const getTeamMetadataFromCookiesCache = cache( - async ( - teamIdOrSlug: string, - cookieTeamId: string, - cookieTeamSlug: string - ) => { - const isSensical = - cookieTeamId === teamIdOrSlug || cookieTeamSlug === teamIdOrSlug - const isUUID = z.uuid().safeParse(cookieTeamId).success - - l.debug( - { - key: 'get_team_metadata_from_cookies:validation', - teamIdOrSlug, - cookieTeamId, - cookieTeamSlug, - isSensical, - isUUID, - }, - 'validating team metadata' - ) - - if (isUUID && isSensical) { - l.debug( - { - key: 'get_team_metadata_from_cookies:success', - teamIdOrSlug, - cookieTeamId, - cookieTeamSlug, - }, - 'successfully resolved team metadata from cookies' - ) - return { - id: cookieTeamId, - slug: cookieTeamSlug, - } - } - - l.debug( - { - key: 'get_team_metadata_from_cookies:invalid_data', - teamIdOrSlug, - cookieTeamId, - cookieTeamSlug, - isSensical, - isUUID, - }, - 'invalid team data, returning null' - ) - return null - } -) - -export const getTeamMetadataFromCookiesMemo = async (teamIdOrSlug: string) => { +export const getTeamMetadataFromCookies = async (teamIdOrSlug: string) => { const cookiesStore = await cookies() - l.debug( - { - key: 'get_team_metadata_from_cookies:start', - cookiesStore: cookiesStore.getAll(), - }, - 'resolving team metadata from cookies' - ) - const cookieTeamId = cookiesStore.get(COOKIE_KEYS.SELECTED_TEAM_ID)?.value const cookieTeamSlug = cookiesStore.get(COOKIE_KEYS.SELECTED_TEAM_SLUG)?.value - l.debug( - { - key: 'get_team_metadata_from_cookies:start', - hasId: !!cookieTeamId, - hasSlug: !!cookieTeamSlug, - cookieTeamId, - cookieTeamSlug, - }, - 'resolving team metadata from cookies' - ) - if (!cookieTeamId || !cookieTeamSlug) { - l.debug( - { - key: 'get_team_metadata_from_cookies:missing_data', - hasId: !!cookieTeamId, - hasSlug: !!cookieTeamSlug, - }, - 'missing team data in cookies, returning null' - ) return null } - return getTeamMetadataFromCookiesCache( - teamIdOrSlug, - cookieTeamId, - cookieTeamSlug - ) + const isSensical = + cookieTeamId === teamIdOrSlug || cookieTeamSlug === teamIdOrSlug + const isUUID = z.uuid().safeParse(cookieTeamId).success + + if (isUUID && isSensical) { + return { + id: cookieTeamId, + slug: cookieTeamSlug, + } + } + + return null } /** diff --git a/src/server/team/resolve-user-team.ts b/src/server/team/resolve-user-team.ts index 61f0cad44..33aafd484 100644 --- a/src/server/team/resolve-user-team.ts +++ b/src/server/team/resolve-user-team.ts @@ -3,7 +3,7 @@ import 'server-cli-only' import { COOKIE_KEYS } from '@/configs/cookies' import { l } from '@/lib/clients/logger/logger' import { supabaseAdmin } from '@/lib/clients/supabase/admin' -import { getTeamMetadataFromCookiesMemo } from '@/lib/utils/server' +import { getTeamMetadataFromCookies } from '@/lib/utils/server' import { cookies } from 'next/headers' import { serializeError } from 'serialize-error' import { ResolvedTeam } from './types' @@ -31,63 +31,21 @@ export async function resolveUserTeam( const cookieTeamId = cookieStore.get(COOKIE_KEYS.SELECTED_TEAM_ID)?.value const cookieTeamSlug = cookieStore.get(COOKIE_KEYS.SELECTED_TEAM_SLUG)?.value - l.debug( - { - key: 'resolve_user_team:start', - userId, - urlSegment, - hasCookieTeamId: !!cookieTeamId, - hasCookieTeamSlug: !!cookieTeamSlug, - }, - 'Starting team resolution' - ) - // If we have a URL segment, try to validate against cookie metadata if (urlSegment) { - const metadata = await getTeamMetadataFromCookiesMemo(urlSegment) + const metadata = await getTeamMetadataFromCookies(urlSegment) if (metadata) { - l.debug( - { - key: 'resolve_user_team:url_cookies_success', - userId, - teamId: metadata.id, - teamSlug: metadata.slug, - urlSegment, - }, - 'Resolved team from URL + cookie metadata' - ) - return { id: metadata.id, slug: metadata.slug, source: 'url-cookies', } } - - l.debug( - { - key: 'resolve_user_team:url_cookies_invalid', - urlSegment, - cookieTeamId, - cookieTeamSlug, - }, - 'Cookie metadata invalid for URL segment, falling back to DB' - ) } // If we have cookies but no valid URL match, still use them if available if (cookieTeamId && cookieTeamSlug) { - l.debug( - { - key: 'resolve_user_team:cookies_success', - userId, - teamId: cookieTeamId, - teamSlug: cookieTeamSlug, - }, - 'Resolved team from cookies only' - ) - return { id: cookieTeamId, slug: cookieTeamSlug, @@ -96,14 +54,6 @@ export async function resolveUserTeam( } // No valid cookies, query database - l.debug( - { - key: 'resolve_user_team:querying_db', - userId, - }, - 'No valid cookies, querying database for user teams' - ) - const { data: teamsData, error } = await supabaseAdmin .from('users_teams') .select( @@ -131,13 +81,6 @@ export async function resolveUserTeam( } if (!teamsData || teamsData.length === 0) { - l.debug( - { - key: 'resolve_user_team:no_teams', - userId, - }, - 'No teams found for user' - ) return null } @@ -145,16 +88,6 @@ export async function resolveUserTeam( const defaultTeam = teamsData.find((t) => t.is_default) if (defaultTeam?.team) { - l.debug( - { - key: 'resolve_user_team:default_db_success', - userId, - teamId: defaultTeam.team_id, - teamSlug: defaultTeam.team.slug, - }, - 'Resolved team from database (default team)' - ) - return { id: defaultTeam.team_id, slug: defaultTeam.team.slug || defaultTeam.team_id, @@ -166,16 +99,6 @@ export async function resolveUserTeam( const firstTeam = teamsData[0]! if (firstTeam?.team) { - l.debug( - { - key: 'resolve_user_team:first_db_success', - userId, - teamId: firstTeam.team_id, - teamSlug: firstTeam.team.slug, - }, - 'Resolved team from database (first team)' - ) - return { id: firstTeam.team_id, slug: firstTeam.team.slug || firstTeam.team_id,