66import secrets
77import urllib .parse
88from datetime import datetime , timedelta , timezone
9- from typing import Annotated
109
1110import jwt as pyjwt
1211from fastapi import APIRouter , HTTPException , Request , status
1312from fastapi .responses import RedirectResponse
14-
1513from langflow .api .utils .core import DbSession
1614from langflow .services .deps import get_auth_service , get_settings_service
1715
@@ -36,9 +34,7 @@ def _get_state_secret() -> str:
3634def _generate_pkce () -> tuple [str , str ]:
3735 """Return (code_verifier, code_challenge) for PKCE S256."""
3836 verifier = base64 .urlsafe_b64encode (os .urandom (32 )).rstrip (b"=" ).decode ()
39- challenge = base64 .urlsafe_b64encode (
40- hashlib .sha256 (verifier .encode ()).digest ()
41- ).rstrip (b"=" ).decode ()
37+ challenge = base64 .urlsafe_b64encode (hashlib .sha256 (verifier .encode ()).digest ()).rstrip (b"=" ).decode ()
4238 return verifier , challenge
4339
4440
@@ -227,7 +223,12 @@ async def keycloak_logout(request: Request):
227223
228224 redirect = RedirectResponse (url = "/login" , status_code = status .HTTP_302_FOUND )
229225 for name , httponly , samesite , secure in [
230- ("refresh_token_lf" , auth_settings .REFRESH_HTTPONLY , auth_settings .REFRESH_SAME_SITE , auth_settings .REFRESH_SECURE ),
226+ (
227+ "refresh_token_lf" ,
228+ auth_settings .REFRESH_HTTPONLY ,
229+ auth_settings .REFRESH_SAME_SITE ,
230+ auth_settings .REFRESH_SECURE ,
231+ ),
231232 ("access_token_lf" , auth_settings .ACCESS_HTTPONLY , auth_settings .ACCESS_SAME_SITE , auth_settings .ACCESS_SECURE ),
232233 ("apikey_tkn_lflw" , auth_settings .ACCESS_HTTPONLY , auth_settings .ACCESS_SAME_SITE , auth_settings .ACCESS_SECURE ),
233234 ("kc_id_token_lf" , True , auth_settings .ACCESS_SAME_SITE , auth_settings .ACCESS_SECURE ),
@@ -261,9 +262,24 @@ async def keycloak_logout(request: Request):
261262 redirect = RedirectResponse (url = kc_logout_url , status_code = status .HTTP_302_FOUND )
262263 # Re-delete the cookies on the new redirect response as well.
263264 for name , httponly , samesite , secure in [
264- ("refresh_token_lf" , auth_settings .REFRESH_HTTPONLY , auth_settings .REFRESH_SAME_SITE , auth_settings .REFRESH_SECURE ),
265- ("access_token_lf" , auth_settings .ACCESS_HTTPONLY , auth_settings .ACCESS_SAME_SITE , auth_settings .ACCESS_SECURE ),
266- ("apikey_tkn_lflw" , auth_settings .ACCESS_HTTPONLY , auth_settings .ACCESS_SAME_SITE , auth_settings .ACCESS_SECURE ),
265+ (
266+ "refresh_token_lf" ,
267+ auth_settings .REFRESH_HTTPONLY ,
268+ auth_settings .REFRESH_SAME_SITE ,
269+ auth_settings .REFRESH_SECURE ,
270+ ),
271+ (
272+ "access_token_lf" ,
273+ auth_settings .ACCESS_HTTPONLY ,
274+ auth_settings .ACCESS_SAME_SITE ,
275+ auth_settings .ACCESS_SECURE ,
276+ ),
277+ (
278+ "apikey_tkn_lflw" ,
279+ auth_settings .ACCESS_HTTPONLY ,
280+ auth_settings .ACCESS_SAME_SITE ,
281+ auth_settings .ACCESS_SECURE ,
282+ ),
267283 ("kc_id_token_lf" , True , auth_settings .ACCESS_SAME_SITE , auth_settings .ACCESS_SECURE ),
268284 ]:
269285 redirect .delete_cookie (
0 commit comments