Skip to content

Commit 35e87c3

Browse files
committed
🐞 fix
1 parent f637f43 commit 35e87c3

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

src/api/services/OIDC.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,19 +125,27 @@ export async function resolveSignin(
125125
code_verifier: string,
126126
raw_state: string,
127127
) {
128+
console.info("Resolving Signin");
128129

129130
//TODO https://github.com/gornostay25/svelte-adapter-bun/issues/62
130131
if (process.env.NODE_ENV === "production") {
131132
visitedUrl.protocol = "https:";
133+
console.info("Fixed protocol:", visitedUrl);
132134
}
133135
const state = JSON.parse(raw_state) as OIDCFlowState;
136+
console.info("Parsed state:", state);
134137
const tokens = await authorizationCodeGrant(config, visitedUrl, {
135138
pkceCodeVerifier: code_verifier,
136139
expectedState: JSON.stringify(state),
137140
});
141+
142+
console.info("Retrieved tokens");
143+
138144
(state as any).random = undefined;
139145
const strippedState: Omit<OIDCFlowState, "random"> = { ...state };
140146

147+
console.info("Stripped state");
148+
141149
return { tokens, state: strippedState };
142150
}
143151

src/middleware.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import {
1010
} from "./api/services/OIDC";
1111

1212
export async function middleware(request: NextRequest) {
13+
console.info("Triggered middleware");
14+
1315
const forwardedHost =
1416
request.headers.get("x-forwarded-host") || request.nextUrl.hostname;
1517
const forwardedProto = request.headers.get("x-forwarded-proto") || "http";
@@ -19,20 +21,28 @@ export async function middleware(request: NextRequest) {
1921
`${forwardedProto}://${forwardedHost}`,
2022
);
2123
const { pathname } = request.nextUrl;
24+
console.info("Real visited URL: ", realVisitedUrl);
2225

2326
let response = paraglide(request);
27+
console.info("Created localized response");
2428

2529
if (/^\/app(\/.*)?$/.test(pathname)) {
30+
console.info("Detected app route");
2631
const tokenCookieValue = JSON.parse(
2732
request.cookies.get(tokensCookieName)?.value ?? "{}",
2833
);
34+
console.info("Parsed token cookie value: ");
2935

3036
try {
37+
console.info("Validating tokens");
38+
3139
await validateTokens({
3240
access_token: tokenCookieValue.access_token,
3341
id_token: tokenCookieValue.id_token,
3442
});
3543

44+
console.info("Validation succeeded, responding");
45+
3646
return response;
3747
} catch (error) {
3848
console.warn("Could not validate tokens, starting login flow");
@@ -43,8 +53,12 @@ export async function middleware(request: NextRequest) {
4353
"/auth/resolve-login",
4454
);
4555

56+
console.info("Started login flow");
57+
4658
response = NextResponse.redirect(redirect_uri.toString());
4759

60+
console.info("Created response with redirect", redirect_uri);
61+
4862
response.cookies.set({
4963
name: codeVerifierCookieName,
5064
value: code_verifier,
@@ -65,10 +79,14 @@ export async function middleware(request: NextRequest) {
6579
httpOnly: true,
6680
});
6781

82+
console.info("Set cookies");
83+
console.info("Responding with redirect and cookies");
84+
6885
return response;
6986
}
7087

7188
if (/^\/auth\/resolve-login(\/.*)?$/.test(pathname)) {
89+
console.info("Detected resolve login route");
7290
const verifier = request.cookies.get(codeVerifierCookieName);
7391
if (!verifier || !verifier.value) {
7492
throw new Error("No code verifier cookie found.");
@@ -78,14 +96,20 @@ export async function middleware(request: NextRequest) {
7896
throw new Error("No oidc state cookie found.");
7997
}
8098

99+
console.info("Found verifier and state cookies. State:");
100+
81101
const { state, tokens } = await resolveSignin(
82102
realVisitedUrl,
83103
verifier.value,
84104
oidcState.value,
85105
);
86106

107+
console.info("Resolved login flow with state", state);
108+
87109
response = NextResponse.redirect(state.visitedUrl, 302);
88110

111+
console.info("Created response with redirect", state.visitedUrl);
112+
89113
response.cookies.set({
90114
name: tokensCookieName,
91115
value: JSON.stringify(tokens),
@@ -96,12 +120,18 @@ export async function middleware(request: NextRequest) {
96120
httpOnly: true,
97121
});
98122

123+
console.info("Set tokens cookie");
124+
99125
request.cookies.delete(codeVerifierCookieName);
100126
request.cookies.delete(oidcStateCookieName);
101127

128+
console.info("Deleted verifier and state cookies");
129+
console.info("Responding with redirect to visited URL");
130+
102131
return response;
103132
}
104-
133+
134+
console.info("Responding with default localized response");
105135
return response;
106136
}
107137

0 commit comments

Comments
 (0)