Skip to content

Commit ddc576a

Browse files
authored
fix: async cookies() calls in Next.js 14.2+ server actions (#43)
1 parent 3e75bd2 commit ddc576a

File tree

8 files changed

+82
-48
lines changed

8 files changed

+82
-48
lines changed

src/app/(auth)/auth/actions.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,21 @@ export async function getUserSession({ uid, pass }: { uid: string, pass: string
4040
.setExpirationTime("2h")
4141
.sign(secret);
4242

43-
cookies().set("internal_token", tokenJwt);
44-
cookies().set("tokenExpiry", new Date(expiry).toISOString());
45-
cookies().set("token", token);
43+
const cookieStore = await cookies();
44+
cookieStore.set("internal_token", tokenJwt);
45+
cookieStore.set("tokenExpiry", new Date(expiry).toISOString());
46+
cookieStore.set("token", token);
4647
}
4748

4849
export async function getUserDetails() {
49-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
50+
const cookieStore = await cookies();
51+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
5052
if (!userData) {
5153
return handleAuthError();
5254
}
5355
const page = await (await fetch("https://web.spaggiari.eu/home/app/default/menu_webinfoschool_genitori.php", {
5456
headers: {
55-
"Cookie": `PHPSESSID=${cookies().get("token")?.value}; webidentity=${userData.uid};`,
57+
"Cookie": `PHPSESSID=${cookieStore.get("token")?.value}; webidentity=${userData.uid};`,
5658
},
5759
})).text();
5860
const dom = new JSDOM(page);
@@ -67,13 +69,14 @@ export async function getUserDetails() {
6769
}
6870

6971
export async function verifySession() {
70-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
72+
const cookieStore = await cookies();
73+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
7174
if (!userData) {
7275
return handleAuthError();
7376
}
7477
const page = await (await fetch("https://web.spaggiari.eu/home/app/default/menu_webinfoschool_genitori.php", {
7578
headers: {
76-
"Cookie": `PHPSESSID=${cookies().get("token")?.value}; webidentity=${userData.uid};`,
79+
"Cookie": `PHPSESSID=${cookieStore.get("token")?.value}; webidentity=${userData.uid};`,
7780
},
7881
})).text();
7982
const dom = new JSDOM(page);

src/app/(main)/actions.ts

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import { getMarks, getPresence } from "./register/actions";
88
import { getUserDetailsFromToken } from "@/lib/utils";
99

1010
export async function getDayAgenda(date: Date) {
11-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
11+
const cookieStore = await cookies();
12+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
1213
if (!userData) {
1314
return handleAuthError();
1415
}
@@ -18,7 +19,7 @@ export async function getDayAgenda(date: Date) {
1819
const res = await fetch(`https://web.spaggiari.eu/fml/app/default/agenda_studenti.php?ope=get_events`, {
1920
method: "POST",
2021
headers: {
21-
"Cookie": `PHPSESSID=${cookies().get("token")?.value}; webidentity=${userData.uid};`,
22+
"Cookie": `PHPSESSID=${cookieStore.get("token")?.value}; webidentity=${userData.uid};`,
2223
},
2324
body: formData
2425
})
@@ -32,14 +33,15 @@ export async function getDayAgenda(date: Date) {
3233
}
3334

3435
export async function getDayLessons(date: Date) {
35-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
36+
const cookieStore = await cookies();
37+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
3638
if (!userData) {
3739
return handleAuthError();
3840
}
3941
const formattedDate = date.toISOString().split('T')[0];
4042
const res = await fetch(`https://web.spaggiari.eu/fml/app/default/attivita_studente.php?a=get_lezioni&data=${formattedDate}`, {
4143
headers: {
42-
"Cookie": `PHPSESSID=${cookies().get("token")?.value}; webidentity=${userData.uid};`,
44+
"Cookie": `PHPSESSID=${cookieStore.get("token")?.value}; webidentity=${userData.uid};`,
4345
},
4446
});
4547
let data;
@@ -53,7 +55,8 @@ export async function getDayLessons(date: Date) {
5355

5456
// SERVER-DATA-SECTION
5557
export async function getAllNotifications(): Promise<Notification[] | void> {
56-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
58+
const cookieStore = await cookies();
59+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
5760
if (!userData) {
5861
return handleAuthError();
5962
}
@@ -91,7 +94,8 @@ export async function getAllNotifications(): Promise<Notification[] | void> {
9194
}
9295

9396
export async function getNotificationDetails(id: string) {
94-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
97+
const cookieStore = await cookies();
98+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
9599
if (!userData) {
96100
return handleAuthError();
97101
}
@@ -122,7 +126,8 @@ export async function setNotificationAsRead({ notificationId }: { notificationId
122126
if (!notificationId) {
123127
return handleAuthError();
124128
}
125-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
129+
const cookieStore = await cookies();
130+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
126131
if (!userData) {
127132
return handleAuthError();
128133
}
@@ -144,7 +149,8 @@ export async function setNotificationAsRead({ notificationId }: { notificationId
144149
}
145150

146151
export async function updateServerData() {
147-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
152+
const cookieStore = await cookies();
153+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
148154
if (!userData) {
149155
return handleAuthError();
150156
}
@@ -223,7 +229,8 @@ async function updateServerPresenceData(userId: string) {
223229
}
224230

225231
export async function setUserName(username: string) {
226-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
232+
const cookieStore = await cookies();
233+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
227234
if (!userData) {
228235
return handleAuthError();
229236
}

src/app/(main)/files/actions.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import { getUserDetailsFromToken } from "@/lib/utils";
55
import { cookies } from "next/headers";
66

77
export async function getBacheca() {
8-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
8+
const cookieStore = await cookies();
9+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
910
if (!userData) {
1011
return handleAuthError();
1112
}
@@ -14,7 +15,7 @@ export async function getBacheca() {
1415
const res = await fetch(`https://web.spaggiari.eu/sif/app/default/bacheca_personale.php`, {
1516
method: "POST",
1617
headers: {
17-
"Cookie": `PHPSESSID=${cookies().get("token")?.value}; webidentity=${userData.uid};`,
18+
"Cookie": `PHPSESSID=${cookieStore.get("token")?.value}; webidentity=${userData.uid};`,
1819
},
1920
body: formData
2021
});
@@ -28,7 +29,8 @@ export async function getBacheca() {
2829
}
2930

3031
export async function setReadBachecaItem(itemId: string) {
31-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
32+
const cookieStore = await cookies();
33+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
3234
if (!userData) {
3335
return handleAuthError();
3436
}
@@ -38,7 +40,7 @@ export async function setReadBachecaItem(itemId: string) {
3840
await fetch(`https://web.spaggiari.eu/sif/app/default/bacheca_personale.php`, {
3941
method: "POST",
4042
headers: {
41-
"Cookie": `PHPSESSID=${cookies().get("token")?.value}; webidentity=${userData.uid};`,
43+
"Cookie": `PHPSESSID=${cookieStore.get("token")?.value}; webidentity=${userData.uid};`,
4244
},
4345
body: formData
4446
});

src/app/(main)/profile/actions.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ import { getLeaderboard } from "../social/lb/actions";
1212
import { LeaderboardEntryType } from "../social/lb/page";
1313

1414
export async function getUserData(userId?: string) {
15-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
15+
const cookieStore = await cookies();
16+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
1617
if (!userData) {
1718
return handleAuthError();
1819
}
@@ -103,7 +104,8 @@ export async function getUserData(userId?: string) {
103104
}
104105

105106
export async function followUser(userId: string) {
106-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
107+
const cookieStore = await cookies();
108+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
107109
if (!userData) {
108110
return handleAuthError();
109111
}
@@ -124,7 +126,8 @@ export async function followUser(userId: string) {
124126
}
125127

126128
export async function unfollowUser(userId: string) {
127-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
129+
const cookieStore = await cookies();
130+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
128131
if (!userData) {
129132
return handleAuthError();
130133
}
@@ -141,7 +144,8 @@ export async function unfollowUser(userId: string) {
141144
}
142145

143146
export async function updateBio(bio: string) {
144-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
147+
const cookieStore = await cookies();
148+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
145149
if (!userData) {
146150
return handleAuthError();
147151
}
@@ -158,7 +162,8 @@ export async function updateBio(bio: string) {
158162
}
159163

160164
export async function updateAvatar(base64Image: string) {
161-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
165+
const cookieStore = await cookies();
166+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
162167
if (!userData) {
163168
return handleAuthError();
164169
}
@@ -187,7 +192,8 @@ export async function updateAvatar(base64Image: string) {
187192
}
188193

189194
export async function updateBanner(base64Image: string) {
190-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
195+
const cookieStore = await cookies();
196+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
191197
if (!userData) {
192198
return handleAuthError();
193199
}

src/app/(main)/register/actions.ts

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import { handleAuthError } from "@/lib/api";
66
import { getUserDetailsFromToken } from "@/lib/utils";
77

88
export async function getPeriods(inputPage?: string) {
9-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
9+
const cookieStore = await cookies();
10+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
1011
if (!userData) {
1112
return handleAuthError();
1213
}
@@ -16,7 +17,7 @@ export async function getPeriods(inputPage?: string) {
1617
} else {
1718
page = await (await fetch("https://web.spaggiari.eu/cvv/app/default/genitori_voti.php", {
1819
headers: {
19-
"Cookie": `PHPSESSID=${cookies().get("token")?.value}; webidentity=${userData.uid};`,
20+
"Cookie": `PHPSESSID=${cookieStore.get("token")?.value}; webidentity=${userData.uid};`,
2021
},
2122
})).text();
2223
}
@@ -50,7 +51,8 @@ const markTable: { [key: string]: number } = {
5051
};
5152

5253
export async function getMarks(inputPage?: string) {
53-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
54+
const cookieStore = await cookies();
55+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
5456
if (!userData) {
5557
return handleAuthError();
5658
}
@@ -60,7 +62,7 @@ export async function getMarks(inputPage?: string) {
6062
} else {
6163
page = await (await fetch("https://web.spaggiari.eu/cvv/app/default/genitori_voti.php", {
6264
headers: {
63-
"Cookie": `PHPSESSID=${cookies().get("token")?.value}; webidentity=${userData.uid};`,
65+
"Cookie": `PHPSESSID=${cookieStore.get("token")?.value}; webidentity=${userData.uid};`,
6466
},
6567
})).text();
6668
}
@@ -105,7 +107,8 @@ export async function getMarks(inputPage?: string) {
105107

106108

107109
export async function getPresence(inputPage?: string) {
108-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
110+
const cookieStore = await cookies();
111+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
109112
if (!userData) {
110113
return handleAuthError();
111114
}
@@ -115,7 +118,7 @@ export async function getPresence(inputPage?: string) {
115118
} else {
116119
page = await (await fetch("https://web.spaggiari.eu/tic/app/default/consultasingolo.php#eventi", {
117120
headers: {
118-
"Cookie": `PHPSESSID=${cookies().get("token")?.value}; webidentity=${userData.uid};`,
121+
"Cookie": `PHPSESSID=${cookieStore.get("token")?.value}; webidentity=${userData.uid};`,
119122
},
120123
})).text();
121124
}
@@ -133,13 +136,14 @@ export async function getPresence(inputPage?: string) {
133136
}
134137

135138
export async function getMarkNotes(evtId: number) {
136-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
139+
const cookieStore = await cookies();
140+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
137141
if (!userData) {
138142
return handleAuthError();
139143
}
140144
const page = await (await fetch(`https://web.spaggiari.eu/cvv/app/default/genitori_voti.php?ope=voto_detail&evento_id=${evtId}`, {
141145
headers: {
142-
"Cookie": `PHPSESSID=${cookies().get("token")?.value}; webidentity=${userData.uid};`,
146+
"Cookie": `PHPSESSID=${cookieStore.get("token")?.value}; webidentity=${userData.uid};`,
143147
},
144148
})).text();
145149
const dom = new JSDOM(page);
@@ -154,13 +158,14 @@ export async function getMarkNotes(evtId: number) {
154158
}
155159

156160
export async function getSubject(subjectName: string) {
157-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
161+
const cookieStore = await cookies();
162+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
158163
if (!userData) {
159164
return handleAuthError();
160165
}
161166
const subjectIdPage = await (await fetch(`https://web.spaggiari.eu/fml/app/default/regclasse_lezioni_xstudenti.php`, {
162167
headers: {
163-
"Cookie": `PHPSESSID=${cookies().get("token")?.value}; webidentity=${userData.uid};`,
168+
"Cookie": `PHPSESSID=${cookieStore.get("token")?.value}; webidentity=${userData.uid};`,
164169
},
165170
})).text();
166171
const subjectIdDom = new JSDOM(subjectIdPage);
@@ -189,13 +194,14 @@ export async function getUserPresenceData() {
189194

190195
// combined functions
191196
export async function getMarksAndPeriods() {
192-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
197+
const cookieStore = await cookies();
198+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
193199
if (!userData) {
194200
return handleAuthError();
195201
}
196202
const page = await (await fetch("https://web.spaggiari.eu/cvv/app/default/genitori_voti.php", {
197203
headers: {
198-
"Cookie": `PHPSESSID=${cookies().get("token")?.value}; webidentity=${userData.uid};`,
204+
"Cookie": `PHPSESSID=${cookieStore.get("token")?.value}; webidentity=${userData.uid};`,
199205
},
200206
})).text();
201207
const marks = await getMarks(page);

src/app/(main)/social/actions.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import { getUserDetailsFromToken } from "@/lib/utils";
77
import { cookies } from "next/headers";
88

99
export async function getUserPermissions() {
10-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
10+
const cookieStore = await cookies();
11+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
1112
if (!userData) {
1213
return handleAuthError();
1314
}
@@ -27,7 +28,8 @@ export async function getUserPermissions() {
2728
}
2829

2930
export async function hasUserAcceptedSocialTerms() {
30-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
31+
const cookieStore = await cookies();
32+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
3133
if (!userData) {
3234
return handleAuthError();
3335
}
@@ -45,7 +47,8 @@ export async function hasUserAcceptedSocialTerms() {
4547
}
4648

4749
export async function acceptSocialTerms() {
48-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
50+
const cookieStore = await cookies();
51+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
4952
if (!userData) {
5053
return handleAuthError();
5154
}
@@ -65,7 +68,8 @@ export async function acceptSocialTerms() {
6568
}
6669

6770
export async function revokeSocialTerms() {
68-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
71+
const cookieStore = await cookies();
72+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
6973
if (!userData) {
7074
return handleAuthError();
7175
}

src/app/(main)/social/lb/actions.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import { getUserDetailsFromToken } from "@/lib/utils";
66
import { cookies } from "next/headers";
77

88
export async function getLeaderboard() {
9-
const userData = await getUserDetailsFromToken(cookies().get("internal_token")?.value || "");
9+
const cookieStore = await cookies();
10+
const userData = await getUserDetailsFromToken(cookieStore.get("internal_token")?.value || "");
1011
if (!userData) {
1112
return handleAuthError();
1213
}

0 commit comments

Comments
 (0)