|
16 | 16 | import sys |
17 | 17 | from functools import wraps |
18 | 18 | from typing import Any, Dict, Union |
| 19 | +from base64 import b64encode |
| 20 | +import time |
19 | 21 |
|
20 | 22 | from flask import Flask, g, jsonify, make_response, render_template, request |
21 | 23 | from flask.wrappers import Response |
|
44 | 46 | from supertokens_python.constants import VERSION |
45 | 47 | from supertokens_python.utils import is_version_gte |
46 | 48 | from supertokens_python.recipe.session.syncio import get_session_information |
| 49 | +from supertokens_python.normalised_url_path import NormalisedURLPath |
| 50 | +from supertokens_python.querier import Querier |
| 51 | +from supertokens_python.async_to_sync_wrapper import sync |
47 | 52 |
|
48 | 53 | protected_prop_name = { |
49 | 54 | "sub", |
@@ -292,6 +297,41 @@ def login(): |
292 | 297 | return _session.get_user_id() |
293 | 298 |
|
294 | 299 |
|
| 300 | +@app.route("/login-2.18", methods=["POST"]) # type: ignore |
| 301 | +def login_218(): |
| 302 | + request_json = request.get_json() # type: ignore |
| 303 | + user_id = request_json["userId"] # type: ignore |
| 304 | + payload = request_json["payload"] # type: ignore |
| 305 | + |
| 306 | + querier = Querier.get_instance() |
| 307 | + Querier.api_version = "2.18" |
| 308 | + |
| 309 | + legacy_session_resp = sync( |
| 310 | + querier.send_post_request( |
| 311 | + NormalisedURLPath("/recipe/session"), |
| 312 | + { |
| 313 | + "userId": user_id, |
| 314 | + "enableAntiCsrf": False, |
| 315 | + "userDataInJWT": payload, |
| 316 | + "userDataInDatabase": {}, |
| 317 | + }, |
| 318 | + {}, |
| 319 | + ) |
| 320 | + ) |
| 321 | + Querier.api_version = None |
| 322 | + front_token = b64encode( |
| 323 | + json.dumps( |
| 324 | + {"uid": user_id, "up": payload, "ate": time.time() * 1000 + 3600000} |
| 325 | + ).encode("utf8") |
| 326 | + ).decode("utf-8") |
| 327 | + |
| 328 | + resp = Response("") |
| 329 | + resp.headers["st-access-token"] = legacy_session_resp["accessToken"]["token"] |
| 330 | + resp.headers["st-refresh-token"] = legacy_session_resp["refreshToken"]["token"] |
| 331 | + resp.headers["front-token"] = front_token |
| 332 | + return resp |
| 333 | + |
| 334 | + |
295 | 335 | @app.route("/beforeeach", methods=["OPTIONS"]) # type: ignore |
296 | 336 | def before_each_options(): |
297 | 337 | return send_options_api_response() |
|
0 commit comments