Skip to content

Commit ceec435

Browse files
committed
Add CORS support for trip management routes and handle preflight OPTIONS requests
1 parent a3e4ca1 commit ceec435

1 file changed

Lines changed: 30 additions & 3 deletions

File tree

planventure-api/routes/trips.py

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
from flask import Blueprint, request, jsonify, current_app
1+
from flask import Blueprint, request, jsonify, current_app, make_response
22
from flask_jwt_extended import get_jwt_identity, verify_jwt_in_request
3+
from flask_cors import cross_origin
4+
from Config import Config
35
from app import db
46
from models import Trip
57
from 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
2230
def 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
101122
def 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

Comments
 (0)