Skip to content

Commit 1b7803b

Browse files
committed
Merge dev into main
2 parents 114dd6b + 99dc41d commit 1b7803b

6 files changed

Lines changed: 26 additions & 7 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# OSBot-Fast-API
22

3-
![Current Release](https://img.shields.io/badge/release-v0.35.0-blue)
3+
![Current Release](https://img.shields.io/badge/release-v0.35.1-blue)
44
![Python](https://img.shields.io/badge/python-3.8+-green)
55
![FastAPI](https://img.shields.io/badge/FastAPI-0.100+-red)
66
![Type-Safe](https://img.shields.io/badge/Type--Safe-✓-brightgreen)

osbot_fast_api/api/Fast_API.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,10 @@ def setup_static_routes_docs(self):
218218
def setup_middleware__api_key_check(self, env_var__api_key_name:str=ENV_VAR__FAST_API__AUTH__API_KEY__NAME, env_var__api_key_value:str=ENV_VAR__FAST_API__AUTH__API_KEY__VALUE):
219219
from osbot_fast_api.api.middlewares.Middleware__Check_API_Key import Middleware__Check_API_Key
220220
if self.config.enable_api_key:
221-
self.app().add_middleware(Middleware__Check_API_Key, env_var__api_key__name=env_var__api_key_name, env_var__api_key__value=env_var__api_key_value)
221+
self.app().add_middleware(Middleware__Check_API_Key,
222+
env_var__api_key__name = env_var__api_key_name ,
223+
env_var__api_key__value = env_var__api_key_value ,
224+
allow_cors = self.config.enable_cors)
222225
return self
223226

224227
def setup_middleware__cors(self): # todo: double check that this is working see bug test

osbot_fast_api/api/middlewares/Middleware__Check_API_Key.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,14 @@
1515

1616
class Middleware__Check_API_Key(BaseHTTPMiddleware):
1717

18-
def __init__(self, app, env_var__api_key__name, env_var__api_key__value):
18+
def __init__(self, app, env_var__api_key__name,
19+
env_var__api_key__value ,
20+
allow_cors : bool = False):
21+
1922
super().__init__(app)
2023
self.api_key__name = get_env(env_var__api_key__name )
2124
self.api_key__value = get_env(env_var__api_key__value)
25+
self.allow_cors = allow_cors
2226

2327
def return_error(self, error_message):
2428
content = to_json_str(status_error(error_message))
@@ -30,6 +34,8 @@ async def dispatch(self, request: Request, call_next) -> Response:
3034

3135
if request.url.path in AUTH__EXCLUDED_PATHS: # allow for the seeing the docs and accessing the methods to set the cookie
3236
return await call_next(request)
37+
if request.method == 'OPTIONS' and self.allow_cors:
38+
return self.create_allow_cors_response(request=request)
3339

3440
if not self.api_key__name:
3541
return self.return_error(ERROR_MESSAGE__NO_KEY_NAME_SETUP)
@@ -47,4 +53,13 @@ async def dispatch(self, request: Request, call_next) -> Response:
4753
return self.return_error(ERROR_MESSAGE__API_KEY_INVALID)
4854

4955
response = await call_next(request) # If API key is valid, continue with the request
50-
return response
56+
return response
57+
58+
59+
def create_allow_cors_response(self, request: Request):
60+
origin = request.headers.get('origin', '*')
61+
return Response(status_code = 204,
62+
headers = { 'Access-Control-Allow-Origin' : origin ,
63+
'Access-Control-Allow-Methods' : 'GET, POST, PUT, DELETE, OPTIONS' ,
64+
'Access-Control-Allow-Headers' : 'api-key__for__mgraph-ai__service, content-type',
65+
'Access-Control-Max-Age' : '86400' })

osbot_fast_api/version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v0.35.0
1+
v0.35.1

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "osbot_fast_api"
3-
version = "v0.35.0"
3+
version = "v0.35.1"
44
description = "OWASP Security Bot - Fast API"
55
authors = ["Dinis Cruz <dinis.cruz@owasp.org>"]
66
license = "MIT"

tests/unit/api/middlewares/test_MIddleware__Check_API_Key.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ def setUp(self):
2727

2828
def test__init__(self):
2929
expected_middleware = { 'function_name': None ,
30-
'params' : { 'env_var__api_key__name' : 'FAST_API__AUTH__API_KEY__NAME' ,
30+
'params' : { 'allow_cors' : False ,
31+
'env_var__api_key__name' : 'FAST_API__AUTH__API_KEY__NAME' ,
3132
'env_var__api_key__value': 'FAST_API__AUTH__API_KEY__VALUE'},
3233
'type' : 'Middleware__Check_API_Key'}
3334
with self.admin_fastapi as _:

0 commit comments

Comments
 (0)