Skip to content

Commit ddf1a6c

Browse files
committed
fix: ignore protected props in create_new_session functions
1 parent 387077c commit ddf1a6c

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

supertokens_python/recipe/session/asyncio/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
get_session_from_request,
4242
refresh_session_in_request,
4343
)
44+
from ..constants import protected_props
4445
from ..utils import get_required_claim_validators
4546

4647
from supertokens_python.recipe.multitenancy.constants import DEFAULT_TENANT_ID
@@ -106,6 +107,10 @@ async def create_new_session_without_request_response(
106107

107108
final_access_token_payload = {**access_token_payload, "iss": issuer}
108109

110+
for prop in protected_props:
111+
if prop in final_access_token_payload:
112+
del final_access_token_payload[prop]
113+
109114
for claim in claims_added_by_other_recipes:
110115
update = await claim.build(user_id, tenant_id, user_context)
111116
final_access_token_payload = {**final_access_token_payload, **update}

supertokens_python/recipe/session/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,6 @@
4242
"parentRefreshTokenHash1",
4343
"refreshTokenHash1",
4444
"antiCsrfToken",
45+
"rsub",
4546
"tId",
4647
]

supertokens_python/recipe/session/recipe_implementation.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
from supertokens_python import AppInfo
4848

4949
from .interfaces import SessionContainer
50+
from .constants import protected_props
5051
from supertokens_python.querier import Querier
5152
from supertokens_python.recipe.multitenancy.constants import DEFAULT_TENANT_ID
5253

@@ -378,8 +379,13 @@ async def merge_into_access_token_payload(
378379
if session_info is None:
379380
return False
380381

382+
new_access_token_payload = session_info.custom_claims_in_access_token_payload
383+
for k in protected_props:
384+
if k in new_access_token_payload:
385+
del new_access_token_payload[k]
386+
381387
new_access_token_payload = {
382-
**session_info.custom_claims_in_access_token_payload,
388+
**new_access_token_payload,
383389
**access_token_payload_update,
384390
}
385391
for k in access_token_payload_update.keys():

supertokens_python/recipe/session/session_request_functions.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
set_request_in_user_context_if_not_defined,
6161
)
6262
from supertokens_python.supertokens import Supertokens
63+
from .constants import protected_props
6364

6465
if TYPE_CHECKING:
6566
from supertokens_python.recipe.session.recipe import SessionRecipe
@@ -240,6 +241,10 @@ async def create_new_session_in_request(
240241

241242
final_access_token_payload = {**access_token_payload, "iss": issuer}
242243

244+
for prop in protected_props:
245+
if prop in final_access_token_payload:
246+
del final_access_token_payload[prop]
247+
243248
for claim in claims_added_by_other_recipes:
244249
update = await claim.build(user_id, tenant_id, user_context)
245250
final_access_token_payload = {**final_access_token_payload, **update}

0 commit comments

Comments
 (0)