Skip to content

Commit 96b54c2

Browse files
authored
Revert "remove: error exceptions in Ky (#155)" (#157)
This reverts commit ad0af06.
1 parent 50f523c commit 96b54c2

File tree

1 file changed

+47
-27
lines changed

1 file changed

+47
-27
lines changed

src/lib/serverKy.ts

Lines changed: 47 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import ky from "ky";
22

33
import { cookies } from "next/headers";
4+
import { NextResponse } from "next/server";
45

56
const REFRESH_ENDPOINT = "/v1/auth/token/refresh";
67
const UNAUTHORIZED_CODE = 401;
@@ -34,40 +35,59 @@ export const serverApi = ky.create({
3435
const refreshToken = cookieStore.get("refreshToken")?.value;
3536

3637
if (response.status === UNAUTHORIZED_CODE || !currentAccessToken) {
37-
const refreshResponse = await fetch(
38-
`${process.env.NEXT_PUBLIC_API_URL}${REFRESH_ENDPOINT}`,
39-
{
40-
method: "POST",
41-
headers: { "Content-Type": "application/json" },
42-
body: JSON.stringify({
43-
refreshToken: refreshToken,
44-
}),
45-
},
46-
);
38+
try {
39+
const refreshResponse = await fetch(
40+
`${process.env.NEXT_PUBLIC_API_URL}${REFRESH_ENDPOINT}`,
41+
{
42+
method: "POST",
43+
headers: { "Content-Type": "application/json" },
44+
body: JSON.stringify({
45+
refreshToken: refreshToken,
46+
}),
47+
},
48+
);
4749

48-
const { accessToken: newAccessToken, refreshToken: newRefreshToken } =
49-
(await refreshResponse.json()) as {
50+
if (!refreshResponse.ok) {
51+
const errText = await refreshResponse.text();
52+
53+
console.error("Refresh API 실패:", errText);
54+
55+
cookieStore.delete("accessToken");
56+
cookieStore.delete("refreshToken");
57+
58+
return NextResponse.redirect(new URL("/login", request.url));
59+
}
60+
61+
const {
62+
accessToken: newAccessToken,
63+
refreshToken: newRefreshToken,
64+
} = (await refreshResponse.json()) as {
5065
accessToken: string;
5166
refreshToken: string;
5267
};
5368

54-
cookieStore.set("accessToken", newAccessToken, {
55-
httpOnly: true,
56-
secure: true,
57-
sameSite: "none",
58-
path: "/",
59-
maxAge: 60 * 60,
60-
});
69+
cookieStore.set("accessToken", newAccessToken, {
70+
httpOnly: true,
71+
secure: true,
72+
sameSite: "none",
73+
path: "/",
74+
maxAge: 60 * 60,
75+
});
76+
77+
cookieStore.set("refreshToken", newRefreshToken, {
78+
httpOnly: true,
79+
secure: true,
80+
sameSite: "none",
81+
path: "/",
82+
maxAge: 60 * 60 * 24 * 7,
83+
});
6184

62-
cookieStore.set("refreshToken", newRefreshToken, {
63-
httpOnly: true,
64-
secure: true,
65-
sameSite: "none",
66-
path: "/",
67-
maxAge: 60 * 60 * 24 * 7,
68-
});
85+
return serverApi(request, options);
86+
} catch (error) {
87+
console.error("refresh 요청 중 에러 발생:", error);
6988

70-
return serverApi(request, options);
89+
return NextResponse.redirect(new URL("/login", request.url));
90+
}
7191
}
7292

7393
return response;

0 commit comments

Comments
 (0)