Skip to content

Commit fcd3810

Browse files
Merge pull request #205 from UWB-ACM/fix-dev-session
Fix sessions in development
2 parents 2bee179 + 7e191d0 commit fcd3810

2 files changed

Lines changed: 15 additions & 8 deletions

File tree

src/util/logout.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,18 @@
33
import { cookies } from "next/headers";
44
import { redis } from "@/src/util/redis";
55
import { buildKey } from "@/src/util/redis";
6+
import { cookieName } from "@/src/util/session";
67

78
/**
89
* Function to log out a user by deleting their session from Redis and clearing their session cookie. Redirection handled in handleLogout().
910
*/
1011
export async function logoutUser() {
1112
const cookieStore = await cookies();
12-
const sessionCookie = cookieStore.get("__Host-session-uwbh25");
13+
const sessionCookie = cookieStore.get(cookieName);
1314

1415
if (sessionCookie?.value) {
1516
await redis.del(buildKey("session", sessionCookie.value));
16-
cookieStore.delete("__Host-session-uwbh25");
17+
cookieStore.delete(cookieName);
1718

1819
console.log("User logged out successfully.");
1920
}

src/util/session.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ import { buildKey, redis } from "@/src/util/redis";
55
import { NextRequest, NextResponse } from "next/server";
66
import { User } from "./dataTypes";
77

8+
export const cookieName =
9+
process.env.NODE_ENV === "development"
10+
? "session-uwbh25-dev"
11+
: "__Host-session-uwbh25";
12+
813
/**
914
* The time that a session should last for, in seconds.
1015
*/
@@ -53,7 +58,7 @@ export interface Session {
5358
export async function getSession(): Promise<Session> {
5459
const cookieStore = await cookies();
5560

56-
const cookie = cookieStore.get("__Host-session-uwbh25");
61+
const cookie = cookieStore.get(cookieName);
5762
if (!cookie?.value) {
5863
console.error("No session cookie found.");
5964
return {};
@@ -73,7 +78,7 @@ export async function getSession(): Promise<Session> {
7378
* Ensures that a request/response has a session
7479
*/
7580
export async function ensureSession(req: NextRequest, res: NextResponse) {
76-
const cookie = req.cookies.get("__Host-session-uwbh25");
81+
const cookie = req.cookies.get(cookieName);
7782

7883
// If we have a cookie, ensure that it points to a valid session.
7984
// Otherwise, create a new one.
@@ -99,19 +104,20 @@ export async function ensureSession(req: NextRequest, res: NextResponse) {
99104
const expiresAt = new Date(Date.now() + sessionTimeSeconds * 1000);
100105

101106
res.cookies.set({
102-
name: "__Host-session-uwbh25",
107+
name: cookieName,
103108
value: newSessionId,
104109
expires: expiresAt,
105110
httpOnly: true,
106-
secure: true,
111+
// Development isn't a secure context.
112+
secure: process.env.NODE_ENV !== "development",
107113
sameSite: "strict",
108114
});
109115

110116
// Also set the request header so that any server
111117
// side code has the right session ID.
112118
// This doesn't write any cookies.
113119
req.cookies.set({
114-
name: "__Host-session-uwbh25",
120+
name: cookieName,
115121
value: newSessionId,
116122
});
117123
}
@@ -125,7 +131,7 @@ export async function ensureSession(req: NextRequest, res: NextResponse) {
125131
export async function saveSession(data: Session): Promise<void> {
126132
const cookieStore = await cookies();
127133

128-
const cookie = cookieStore.get("__Host-session-uwbh25");
134+
const cookie = cookieStore.get(cookieName);
129135
if (!cookie?.value) {
130136
// This shouldn't happen, since every user should
131137
// have a session.

0 commit comments

Comments
 (0)