alpha
Login
or
Join now
danabra.mov
/
sidetrail
Star
1
Fork
1
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
an app to share curated trails
sidetrail.app
Star
1
Fork
1
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
Improve OAuth
author
Emelia Smith
committer
Tangled
date
6 months ago
(Dec 6, 2025, 9:10 AM UTC)
commit
5a8b18b8
5a8b18b80d4a52adf9fb34e80b087ad9135bbea8
parent
bed91f2b
bed91f2bace67ffe2a1fd7b528c307956ab665a4
+5
-3
2 changed files
Expand all
Collapse all
Unified
Split
app
login
page.tsx
oauth
callback
route.ts
+3
-1
app/login/page.tsx
Reviewed
···
7
7
}: {
8
8
searchParams: Promise<{ error?: string; returnUrl?: string }>;
9
9
}) {
10
10
-
const { error, returnUrl = "/" } = await searchParams;
10
10
+
const params = await searchParams;
11
11
+
const error = params.error
12
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
Reviewed
···
35
35
if (state) {
36
36
try {
37
37
const parsed = JSON.parse(state);
38
38
-
if (parsed.returnUrl && typeof parsed.returnUrl === "string") {
38
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
62
-
// Redirect to returnUrl
62
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) {