Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [unreleased]

## [20.1.7] - 2025-06-17

- Refactors internal logic of parsing cookies to check accessToken and optimizes it to avoid parsing unrelated cookies.

## [20.1.6] - 2024-11-26

- Fixes an issue where `removeDevice` API allowed removing verifiedTOTP devices without the user completing MFA.
Expand Down
18 changes: 10 additions & 8 deletions lib/build/recipe/session/cookieAndHeaders.js
Original file line number Diff line number Diff line change
Expand Up @@ -253,15 +253,17 @@ function parseCookieStringFromRequestHeaderAllowingDuplicates(cookieString) {
const cookies = {};
const cookiePairs = cookieString.split(";");
for (const cookiePair of cookiePairs) {
const [name, value] = cookiePair
.trim()
.split("=")
.map((part) => decodeURIComponent(part));
if (cookies.hasOwnProperty(name)) {
cookies[name].push(value);
} else {
cookies[name] = [value];
const [name, value] = cookiePair.trim().split("=");
// Try to decode the name or fallback to the original name
let decodedName = name;
try {
decodedName = decodeURIComponent(name);
} catch (e) {
logger_1.logDebugMessage(
`parseCookieStringFromRequestHeaderAllowingDuplicates: Error decoding cookie name: ${name}`
);
}
cookies.hasOwnProperty(decodedName) ? cookies[decodedName].push(value) : (cookies[decodedName] = [value]);
}
return cookies;
}
2 changes: 1 addition & 1 deletion lib/build/version.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion lib/build/version.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 12 additions & 9 deletions lib/ts/recipe/session/cookieAndHeaders.ts
Original file line number Diff line number Diff line change
Expand Up @@ -303,16 +303,19 @@ function parseCookieStringFromRequestHeaderAllowingDuplicates(cookieString: stri
const cookiePairs = cookieString.split(";");

for (const cookiePair of cookiePairs) {
const [name, value] = cookiePair
.trim()
.split("=")
.map((part) => decodeURIComponent(part));

if (cookies.hasOwnProperty(name)) {
cookies[name].push(value);
} else {
cookies[name] = [value];
const [name, value] = cookiePair.trim().split("=");

// Try to decode the name or fallback to the original name
let decodedName = name;
try {
decodedName = decodeURIComponent(name);
} catch (e) {
logDebugMessage(
`parseCookieStringFromRequestHeaderAllowingDuplicates: Error decoding cookie name: ${name}`
);
}

cookies.hasOwnProperty(decodedName) ? cookies[decodedName].push(value) : (cookies[decodedName] = [value]);
}

return cookies;
Expand Down
2 changes: 1 addition & 1 deletion lib/ts/version.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* License for the specific language governing permissions and limitations
* under the License.
*/
export const version = "20.1.6";
export const version = "20.1.7";

export const cdiSupported = ["5.1"];

Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "supertokens-node",
"version": "20.1.6",
"version": "20.1.7",
"description": "NodeJS driver for SuperTokens core",
"main": "index.js",
"scripts": {
Expand Down
Loading