Skip to content

Commit 8e75570

Browse files
committed
Add helper function to get the original request from user context provided to APIs and functions
1 parent 98efe74 commit 8e75570

File tree

3 files changed

+39
-10
lines changed

3 files changed

+39
-10
lines changed

supertokens_python/asyncio/__init__.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,19 @@
1111
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
1212
# License for the specific language governing permissions and limitations
1313
# under the License.
14-
from typing import List, Union, Optional, Dict
14+
from typing import Any, Dict, List, Optional, Union
1515

1616
from supertokens_python import Supertokens
17+
from supertokens_python.framework.request import BaseRequest
1718
from supertokens_python.interfaces import (
1819
CreateUserIdMappingOkResult,
20+
DeleteUserIdMappingOkResult,
21+
GetUserIdMappingOkResult,
22+
UnknownMappingError,
1923
UnknownSupertokensUserIDError,
24+
UpdateOrDeleteUserIdMappingInfoOkResult,
2025
UserIdMappingAlreadyExistsError,
2126
UserIDTypes,
22-
UnknownMappingError,
23-
GetUserIdMappingOkResult,
24-
DeleteUserIdMappingOkResult,
25-
UpdateOrDeleteUserIdMappingInfoOkResult,
2627
)
2728
from supertokens_python.types import UsersResponse
2829

@@ -97,3 +98,9 @@ async def update_or_delete_user_id_mapping_info(
9798
return await Supertokens.get_instance().update_or_delete_user_id_mapping_info(
9899
user_id, user_id_type, external_user_id_info
99100
)
101+
102+
103+
def get_request_from_user_context(
104+
user_context: Optional[Dict[str, Any]],
105+
) -> Optional[BaseRequest]:
106+
return Supertokens.get_instance().get_request_from_user_context(user_context)

supertokens_python/supertokens.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,3 +552,18 @@ async def handle_supertokens_error(
552552
)
553553
return await recipe.handle_error(request, err, response)
554554
raise err
555+
556+
def get_request_from_user_context( # pylint: disable=no-self-use
557+
self,
558+
user_context: Optional[Dict[str, Any]] = None,
559+
) -> Optional[BaseRequest]:
560+
if user_context is None:
561+
return None
562+
563+
if "_default" not in user_context:
564+
return None
565+
566+
if not isinstance(user_context["_default"], dict):
567+
return None
568+
569+
return user_context.get("_default", {}).get("request")

supertokens_python/syncio/__init__.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,20 @@
1111
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
1212
# License for the specific language governing permissions and limitations
1313
# under the License.
14-
from typing import List, Union, Optional, Dict
14+
from typing import Any, Dict, List, Optional, Union
1515

1616
from supertokens_python import Supertokens
1717
from supertokens_python.async_to_sync_wrapper import sync
18+
from supertokens_python.framework.request import BaseRequest
1819
from supertokens_python.interfaces import (
1920
CreateUserIdMappingOkResult,
21+
DeleteUserIdMappingOkResult,
22+
GetUserIdMappingOkResult,
23+
UnknownMappingError,
2024
UnknownSupertokensUserIDError,
25+
UpdateOrDeleteUserIdMappingInfoOkResult,
2126
UserIdMappingAlreadyExistsError,
2227
UserIDTypes,
23-
UnknownMappingError,
24-
GetUserIdMappingOkResult,
25-
DeleteUserIdMappingOkResult,
26-
UpdateOrDeleteUserIdMappingInfoOkResult,
2728
)
2829
from supertokens_python.types import UsersResponse
2930

@@ -103,3 +104,9 @@ def update_or_delete_user_id_mapping_info(
103104
user_id, user_id_type, external_user_id_info
104105
)
105106
)
107+
108+
109+
def get_request_from_user_context(
110+
user_context: Optional[Dict[str, Any]],
111+
) -> Optional[BaseRequest]:
112+
return Supertokens.get_instance().get_request_from_user_context(user_context)

0 commit comments

Comments
 (0)