an app to share curated trails sidetrail.app
atproto nextjs react rsc
50
fork

Configure Feed

Select the types of activity you want to include in your feed.

Improve OAuth

authored by

Emelia Smith and committed by
Tangled
5a8b18b8 bed91f2b

+5 -3
+3 -1
app/login/page.tsx
··· 7 7 }: { 8 8 searchParams: Promise<{ error?: string; returnUrl?: string }>; 9 9 }) { 10 - const { error, returnUrl = "/" } = await searchParams; 10 + const params = await searchParams; 11 + const error = params.error 12 + const returnUrl = params.returnUrl && params.returnUrl.startsWith('/') ? params.returnUrl : '/'; 11 13 12 14 return ( 13 15 <div className="LoginPage">
+2 -2
app/oauth/callback/route.ts
··· 35 35 if (state) { 36 36 try { 37 37 const parsed = JSON.parse(state); 38 - if (parsed.returnUrl && typeof parsed.returnUrl === "string") { 38 + if (parsed.returnUrl && typeof parsed.returnUrl === "string" && parsed.returnUrl.startsWith('/')) { 39 39 returnUrl = parsed.returnUrl; 40 40 } 41 41 } catch { ··· 59 59 session.did = oauthSession.did; 60 60 await session.save(); 61 61 62 - // Redirect to returnUrl 62 + // Redirect to returnUrl: We have ensured the return URL is relative above: 63 63 const redirectUrl = new URL(returnUrl, baseUrl); 64 64 return NextResponse.redirect(redirectUrl); 65 65 } catch (err) {