Improve OAuth #1

merged
opened by thisismissem.social targeting main from thisismissem.social/sidetrail: feat/improve-oauth
Changed files
+5 -3
app
login
oauth
callback
+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) {