@@ -2010,14 +2010,21 @@ async def golden_repo_details(
20102010 )
20112011
20122012 # Return repository details as JSON-like HTML response
2013- return templates .TemplateResponse (
2013+ # Get existing CSRF token from cookie or generate new one
2014+ csrf_token = get_csrf_token_from_cookie (request ) or generate_csrf_token ()
2015+
2016+ response = templates .TemplateResponse (
20142017 "partials/golden_repos_list.html" ,
20152018 {
20162019 "request" : request ,
2017- "csrf_token" : generate_csrf_token () ,
2020+ "csrf_token" : csrf_token ,
20182021 "repos" : [repo .to_dict ()],
20192022 },
20202023 )
2024+
2025+ # Set CSRF cookie to ensure token is available for form submission
2026+ set_csrf_cookie (response , csrf_token )
2027+ return response
20212028 except HTTPException :
20222029 raise
20232030 except Exception as e :
@@ -2376,14 +2383,21 @@ async def repo_details(
23762383 repo ["username" ] = username
23772384
23782385 # Return repository details as HTML partial
2379- return templates .TemplateResponse (
2386+ # Get existing CSRF token from cookie or generate new one
2387+ csrf_token = get_csrf_token_from_cookie (request ) or generate_csrf_token ()
2388+
2389+ response = templates .TemplateResponse (
23802390 "partials/repos_list.html" ,
23812391 {
23822392 "request" : request ,
2383- "csrf_token" : generate_csrf_token () ,
2393+ "csrf_token" : csrf_token ,
23842394 "repos" : [repo ],
23852395 },
23862396 )
2397+
2398+ # Set CSRF cookie to ensure token is available for form submission
2399+ set_csrf_cookie (response , csrf_token )
2400+ return response
23872401 except HTTPException :
23882402 raise
23892403 except Exception :
@@ -2530,7 +2544,9 @@ def _get_all_jobs(
25302544 ]
25312545
25322546 # Sort by started_at (most recently started first), fall back to created_at
2533- all_jobs .sort (key = lambda x : x .get ("started_at" ) or x .get ("created_at" ) or "" , reverse = True )
2547+ all_jobs .sort (
2548+ key = lambda x : x .get ("started_at" ) or x .get ("created_at" ) or "" , reverse = True
2549+ )
25342550
25352551 # Pagination
25362552 total_count = len (all_jobs )
@@ -4376,10 +4392,14 @@ def _build_gitlab_repos_response(
43764392 search_term : Optional [str ] = None ,
43774393):
43784394 """Build GitLab repos partial template response."""
4379- return templates .TemplateResponse (
4395+ # Get existing CSRF token from cookie or generate new one
4396+ csrf_token = get_csrf_token_from_cookie (request ) or generate_csrf_token ()
4397+
4398+ response = templates .TemplateResponse (
43804399 "partials/gitlab_repos.html" ,
43814400 {
43824401 "request" : request ,
4402+ "csrf_token" : csrf_token ,
43834403 "repositories" : repositories or [],
43844404 "total_count" : total_count ,
43854405 "page" : page ,
@@ -4391,6 +4411,10 @@ def _build_gitlab_repos_response(
43914411 },
43924412 )
43934413
4414+ # Set CSRF cookie to ensure token is available for form submission
4415+ set_csrf_cookie (response , csrf_token )
4416+ return response
4417+
43944418
43954419def _build_github_repos_response (
43964420 request : Request ,
@@ -4404,10 +4428,14 @@ def _build_github_repos_response(
44044428 search_term : Optional [str ] = None ,
44054429):
44064430 """Build GitHub repos partial template response."""
4407- return templates .TemplateResponse (
4431+ # Get existing CSRF token from cookie or generate new one
4432+ csrf_token = get_csrf_token_from_cookie (request ) or generate_csrf_token ()
4433+
4434+ response = templates .TemplateResponse (
44084435 "partials/github_repos.html" ,
44094436 {
44104437 "request" : request ,
4438+ "csrf_token" : csrf_token ,
44114439 "repositories" : repositories or [],
44124440 "total_count" : total_count ,
44134441 "page" : page ,
@@ -4419,6 +4447,10 @@ def _build_github_repos_response(
44194447 },
44204448 )
44214449
4450+ # Set CSRF cookie to ensure token is available for form submission
4451+ set_csrf_cookie (response , csrf_token )
4452+ return response
4453+
44224454
44234455@web_router .get ("/auto-discovery" , response_class = HTMLResponse )
44244456async def auto_discovery_page (request : Request ):
0 commit comments