|
24 | 24 | from supertokens_python import get_all_cors_headers |
25 | 25 | from supertokens_python import InputAppInfo, Supertokens, SupertokensConfig, init |
26 | 26 | from supertokens_python.framework import BaseRequest, BaseResponse |
| 27 | +from base64 import b64encode |
| 28 | +from supertokens_python.utils import get_timestamp_ms |
| 29 | +from supertokens_python.async_to_sync_wrapper import sync |
| 30 | +from supertokens_python.querier import Querier, NormalisedURLPath |
27 | 31 | from supertokens_python.recipe import session |
28 | 32 | from supertokens_python.recipe.session import ( |
29 | 33 | InputErrorHandlers, |
@@ -338,12 +342,45 @@ def login(request: HttpRequest): |
338 | 342 |
|
339 | 343 | def login_2_18(request: HttpRequest): |
340 | 344 | if request.method == "POST": |
| 345 | + # This CDI version is no longer supported by this SDK, but |
| 346 | + # we want to ensure that sessions keep working after the upgrade |
| 347 | + # We can hard-code the structure of the request&response, since |
| 348 | + # this is a fixed CDI version and it's not going to change |
| 349 | + |
| 350 | + Querier.api_version = "2.18" |
| 351 | + |
341 | 352 | body = json.loads(request.body) |
342 | 353 | user_id = body["userId"] |
343 | 354 | payload = body["payload"] |
344 | 355 |
|
345 | | - session_ = create_new_session(request, user_id, payload) |
346 | | - return HttpResponse(session_.get_user_id()) |
| 356 | + legacy_session_res = sync( |
| 357 | + Querier.get_instance().send_post_request( |
| 358 | + NormalisedURLPath("/recipe/session"), |
| 359 | + { |
| 360 | + "userId": user_id, |
| 361 | + "enableAntiCsrf": False, |
| 362 | + "userDataInJWT": payload, |
| 363 | + "userDataInDatabase": {}, |
| 364 | + }, |
| 365 | + ) |
| 366 | + ) |
| 367 | + Querier.api_version = None |
| 368 | + |
| 369 | + legacy_access_token = legacy_session_res["accessToken"]["token"] |
| 370 | + legacy_refresh_token = legacy_session_res["refreshToken"]["token"] |
| 371 | + |
| 372 | + front_token = json.dumps( |
| 373 | + {"uid": user_id, "ate": get_timestamp_ms() + 3600000, "up": payload} |
| 374 | + ) |
| 375 | + |
| 376 | + return JsonResponse( |
| 377 | + {}, |
| 378 | + headers={ |
| 379 | + "st-access-token": legacy_access_token, |
| 380 | + "st-refresh-token": legacy_refresh_token, |
| 381 | + "front-token": b64encode(front_token.encode()).decode(), |
| 382 | + }, |
| 383 | + ) |
347 | 384 | else: |
348 | 385 | return send_options_api_response() |
349 | 386 |
|
|
0 commit comments