Luca
08/27/2022, 7:30 PM...
File "/home/.../app/venv/lib/python3.9/site-packages/supertokens_python/recipe/session/api/implementation.py", line 46, in signout_post
session = await api_options.recipe_implementation.get_session(
TypeError: get_session() got an unexpected keyword argument 'anti_csrf_check'
rp_st
08/28/2022, 5:36 AMrp_st
08/28/2022, 5:36 AMrp_st
08/28/2022, 5:36 AMKShivendu
08/28/2022, 7:18 AMLuca
08/28/2022, 12:24 PMpython
init(
app_info=InputAppInfo(
app_name="Test",
api_domain=API_HOST,
website_domain="localhost:3000",
api_base_path="/auth",
website_base_path="/auth"
),
supertokens_config=SupertokensConfig(
connection_uri=SUPERTOKENS_CONNECTION_URI,
api_key=SUPERTOKENS_API_KEY
),
framework='fastapi',
recipe_list=[
session.init(
jwt=session.JWTConfig(
enable=True
),
override=session.InputOverrideConfig(
functions=override_session_functions
)
),
thirdpartyemailpassword.init(
sign_up_feature=thirdpartyemailpassword.InputSignUpFeature(
form_fields=[InputFormField(id='name')]
),
providers=[
Google(
client_id='...',
client_secret='...'
),
Apple(
client_id="...",
client_key_id="...",
client_private_key="...",
client_team_id="..."
)
],
email_delivery=EmailDeliveryConfig(
override=email_delivery_override
),
override=thirdpartyemailpassword.InputOverrideConfig(
apis=override_thirdparty_email_password_apis
)
)
],
mode='wsgi'
)
Luca
08/28/2022, 12:25 PMpython
def _update_headers_in_request(rq: BaseRequest):
rq: Request = rq.request
new_headers = rq.headers.mutablecopy()
if st_cookie := rq.headers.get(SUPERTOKENS_HEADER):
current = new_headers.get('cookie') or ''
new_headers['cookie'] = f'f{current}; {st_cookie}'
rq._headers = new_headers
rq.scope.update(headers=rq.headers.raw)
def override_session_functions(oi: RecipeInterface):
original_create_new_session = oi.create_new_session
original_refresh_session = oi.refresh_session
original_get_session = oi.get_session
async def create_new_session(request, user_id, access_token_payload, session_data, user_context):
_update_headers_in_request(request)
session = await original_create_new_session(request, user_id, access_token_payload, session_data, user_context)
return session
async def refresh_session(request, user_context):
_update_headers_in_request(request)
session = await original_refresh_session(request, user_context)
return session
async def get_session(request, anti_csrf, session_required, user_context):
_update_headers_in_request(request)
session = await original_get_session(request, anti_csrf, session_required, user_context)
return session
oi.create_new_session = create_new_session
oi.refresh_session = refresh_session
oi.get_session = get_session
return oi
KShivendu
08/29/2022, 7:12 AManti_csrf
to anti_csrf_check
in your override like this:
python
async def get_session(request, anti_csrf_check, session_required, user_context):
_update_headers_in_request(request)
session = await original_get_session(request, anti_csrf_check, session_required, user_context)
return session
KShivendu
08/29/2022, 7:15 AMsession = await api_options.recipe_implementation.get_session(...)
If you see its source code, we pass anti_csrf_check=None
but since the override has changed the arg name to anti_csrf
, we face an error.
Let me know if you face any problem 😄Luca
08/29/2022, 10:51 AMrp_st
08/29/2022, 11:21 AM