Skip to content

Commit 2e5bda0

Browse files
committed
fix: get all Set-Cookie headers to support both cc-session and parent_session_credentials
ClassCharts returns two cookies on login: - cc-session - parent_session_credentials The original code used response.headers.get('set-cookie') which only returns the first cookie, causing subsequent API calls to fail with 'You are not logged in'. This fix uses getSetCookie() to retrieve all Set-Cookie headers.
1 parent 65ae5d4 commit 2e5bda0

1 file changed

Lines changed: 16 additions & 4 deletions

File tree

src/core/parentClient.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,23 @@ export class ParentClient extends BaseClient {
6161
);
6262
}
6363

64-
const cookies = String(response.headers.get("set-cookie"));
65-
// this.authCookies = cookies.split(";");
66-
const sessionCookies = parseCookies(cookies);
64+
// Get ALL Set-Cookie headers (get() only returns the first one!)
65+
const setCookieHeaders = response.headers.getSetCookie();
66+
if (!setCookieHeaders || setCookieHeaders.length < 2) {
67+
await response.body?.cancel();
68+
throw new Error("Unauthenticated: Missing Set-Cookie headers");
69+
}
70+
71+
// Parse both cookies
72+
const cookie1 = parseCookies(setCookieHeaders[0]);
73+
const cookie2 = parseCookies(setCookieHeaders[1]);
74+
75+
// Store both cookies for API requests
76+
this.authCookies = [setCookieHeaders[0], setCookieHeaders[1]];
77+
78+
// Get session ID from parent_session_credentials cookie
6779
const sessionID = JSON.parse(
68-
String(sessionCookies.parent_session_credentials),
80+
String(cookie1.parent_session_credentials || cookie2.parent_session_credentials),
6981
);
7082
this.sessionId = sessionID.session_id;
7183
this.pupils = await this.getPupils();

0 commit comments

Comments
 (0)