Skip to content

Commit 10936c5

Browse files
Copilotzlendo1
andcommitted
Require authentication for /routes/search endpoint
- Changed endpoint to require authentication using get_current_user - Updated all tests to provide authentication headers - Removed unused imports - All 91 tests pass - Code passes linting and formatting checks Co-authored-by: zlendo1 <115471708+zlendo1@users.noreply.github.com>
1 parent eea4f5c commit 10936c5

3 files changed

Lines changed: 194 additions & 43 deletions

File tree

app/api/v1/endpoints/routes.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import logging
88
from datetime import datetime, timezone
9-
from typing import Any, List, Optional
9+
from typing import Any, List
1010

1111
from fastapi import APIRouter, Depends, HTTPException
1212
from sqlalchemy.orm import Session
@@ -34,18 +34,18 @@
3434
async def search_routes(
3535
request: RouteSearchRequest,
3636
db: Session = Depends(get_db),
37-
current_user: Optional[User] = Depends(auth_service.get_current_user_optional),
37+
current_user: User = Depends(auth_service.get_current_user),
3838
) -> Any:
3939
"""
4040
Search for public transport routes between two locations.
4141
4242
Queries the HSL (Helsinki Regional Transport) API to find route alternatives
43-
between origin and destination coordinates.
43+
between origin and destination coordinates. Requires authentication.
4444
4545
Args:
4646
request: Route search parameters including origin, destination, and preferences
4747
db: Database session
48-
current_user: Optional authenticated user
48+
current_user: Authenticated user (required)
4949
5050
Returns:
5151
RouteSearchResponse with list of available route itineraries
@@ -58,7 +58,7 @@ async def search_routes(
5858
request.origin,
5959
request.destination,
6060
request.num_itineraries,
61-
current_user.id if current_user else None,
61+
current_user.id,
6262
)
6363

6464
# Use current time if earliest_departure not provided
@@ -71,13 +71,12 @@ async def search_routes(
7171
if request.preferences:
7272
user_preferences.extend(request.preferences)
7373

74-
# 2. Add stored preferences if user is authenticated
75-
if current_user:
76-
try:
77-
stored_prefs = preference_service.get_user_preferences(db, int(current_user.id))
78-
user_preferences.extend([str(pref.prompt) for pref in stored_prefs])
79-
except Exception as e: # pylint: disable=broad-except
80-
logger.warning("Failed to fetch user preferences: %s", str(e))
74+
# 2. Add stored preferences from authenticated user
75+
try:
76+
stored_prefs = preference_service.get_user_preferences(db, int(current_user.id))
77+
user_preferences.extend([str(pref.prompt) for pref in stored_prefs])
78+
except Exception as e: # pylint: disable=broad-except
79+
logger.warning("Failed to fetch user preferences: %s", str(e))
8180

8281
logger.info("Using %d user preferences for route insights", len(user_preferences))
8382

0 commit comments

Comments
 (0)