Fedir Zadniprovskyi commited on
Commit
dcbab06
·
1 Parent(s): e6e84c6

feat: token based auth

Browse files
src/faster_whisper_server/config.py CHANGED
@@ -180,6 +180,7 @@ class Config(BaseSettings):
180
 
181
  model_config = SettingsConfigDict(env_nested_delimiter="__")
182
 
 
183
  log_level: str = "debug"
184
  host: str = Field(alias="UVICORN_HOST", default="0.0.0.0")
185
  port: int = Field(alias="UVICORN_PORT", default=8000)
 
180
 
181
  model_config = SettingsConfigDict(env_nested_delimiter="__")
182
 
183
+ api_key: str | None = None
184
  log_level: str = "debug"
185
  host: str = Field(alias="UVICORN_HOST", default="0.0.0.0")
186
  port: int = Field(alias="UVICORN_PORT", default=8000)
src/faster_whisper_server/dependencies.py CHANGED
@@ -1,7 +1,8 @@
1
  from functools import lru_cache
2
  from typing import Annotated
3
 
4
- from fastapi import Depends
 
5
 
6
  from faster_whisper_server.config import Config
7
  from faster_whisper_server.model_manager import PiperModelManager, WhisperModelManager
@@ -31,3 +32,16 @@ def get_piper_model_manager() -> PiperModelManager:
31
 
32
 
33
  PiperModelManagerDependency = Annotated[PiperModelManager, Depends(get_piper_model_manager)]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  from functools import lru_cache
2
  from typing import Annotated
3
 
4
+ from fastapi import Depends, HTTPException, status
5
+ from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
6
 
7
  from faster_whisper_server.config import Config
8
  from faster_whisper_server.model_manager import PiperModelManager, WhisperModelManager
 
32
 
33
 
34
  PiperModelManagerDependency = Annotated[PiperModelManager, Depends(get_piper_model_manager)]
35
+
36
+
37
+ security = HTTPBearer()
38
+
39
+
40
+ async def verify_api_key(
41
+ config: ConfigDependency, credentials: Annotated[HTTPAuthorizationCredentials, Depends(security)]
42
+ ) -> None:
43
+ if credentials.credentials != config.api_key:
44
+ raise HTTPException(status_code=status.HTTP_403_FORBIDDEN)
45
+
46
+
47
+ ApiKeyDependency = Depends(verify_api_key)
src/faster_whisper_server/main.py CHANGED
@@ -10,7 +10,7 @@ from fastapi import (
10
  )
11
  from fastapi.middleware.cors import CORSMiddleware
12
 
13
- from faster_whisper_server.dependencies import get_config, get_model_manager
14
  from faster_whisper_server.logger import setup_logger
15
  from faster_whisper_server.routers.list_models import (
16
  router as list_models_router,
@@ -50,7 +50,11 @@ def create_app() -> FastAPI:
50
  model_manager.load_model(model_name)
51
  yield
52
 
53
- app = FastAPI(lifespan=lifespan)
 
 
 
 
54
 
55
  app.include_router(stt_router)
56
  app.include_router(list_models_router)
 
10
  )
11
  from fastapi.middleware.cors import CORSMiddleware
12
 
13
+ from faster_whisper_server.dependencies import get_config, get_model_manager, verify_api_key
14
  from faster_whisper_server.logger import setup_logger
15
  from faster_whisper_server.routers.list_models import (
16
  router as list_models_router,
 
50
  model_manager.load_model(model_name)
51
  yield
52
 
53
+ dependencies = []
54
+ if config.api_key is not None:
55
+ dependencies.append(verify_api_key)
56
+
57
+ app = FastAPI(lifespan=lifespan, dependencies=dependencies)
58
 
59
  app.include_router(stt_router)
60
  app.include_router(list_models_router)