1- from flask import Blueprint , request , jsonify , current_app
1+ from flask import Blueprint , request , jsonify , current_app , make_response
22from flask_jwt_extended import get_jwt_identity , verify_jwt_in_request
3+ from flask_cors import cross_origin
4+ from Config import Config
35from app import db
46from models import Trip
57from middleware .auth import auth_middleware
@@ -17,9 +19,22 @@ def validate_auth_header():
1719 return False , 'Invalid authorization format. Use Bearer token'
1820 return True , None
1921
20- @trips_bp .route ('/trips' , methods = ['GET' , 'POST' ])
22+ @trips_bp .route ('/trips' , methods = ['GET' , 'POST' , 'OPTIONS' ])
23+ @cross_origin (
24+ origins = Config .CORS_ORIGINS ,
25+ methods = Config .CORS_METHODS ,
26+ allow_headers = Config .CORS_HEADERS ,
27+ supports_credentials = Config .CORS_SUPPORTS_CREDENTIALS
28+ )
2129@auth_middleware
2230def handle_trips ():
31+ # Handle preflight OPTIONS request
32+ if request .method == 'OPTIONS' :
33+ response = make_response ()
34+ response .headers .add ('Access-Control-Allow-Methods' , ',' .join (Config .CORS_METHODS ))
35+ response .headers .add ('Access-Control-Allow-Headers' , ',' .join (Config .CORS_HEADERS ))
36+ return response
37+
2338 try :
2439 # Log incoming request details
2540 token = request .headers .get ('Authorization' , '' ).replace ('Bearer ' , '' )
@@ -96,9 +111,21 @@ def get_trips():
96111 } for trip in trips ]
97112 }), 200
98113
99- @trips_bp .route ('/trips/<int:trip_id>' , methods = ['GET' , 'PUT' , 'DELETE' ])
114+ @trips_bp .route ('/trips/<int:trip_id>' , methods = ['GET' , 'PUT' , 'DELETE' , 'OPTIONS' ])
115+ @cross_origin (
116+ origins = Config .CORS_ORIGINS ,
117+ methods = Config .CORS_METHODS ,
118+ allow_headers = Config .CORS_HEADERS ,
119+ supports_credentials = Config .CORS_SUPPORTS_CREDENTIALS
120+ )
100121@auth_middleware
101122def handle_trip (trip_id ):
123+ if request .method == 'OPTIONS' :
124+ response = make_response ()
125+ response .headers .add ('Access-Control-Allow-Methods' , ',' .join (Config .CORS_METHODS ))
126+ response .headers .add ('Access-Control-Allow-Headers' , ',' .join (Config .CORS_HEADERS ))
127+ return response
128+
102129 if request .method == 'GET' :
103130 return get_trip (trip_id )
104131 elif request .method == 'PUT' :
0 commit comments