xtom0 commited on
Commit
670c677
·
1 Parent(s): 946d512

Add API key authentication support for /api/chat (Bearer or X-API-Key header)

Browse files
Files changed (1) hide show
  1. app.py +8 -0
app.py CHANGED
@@ -61,6 +61,11 @@ def create_access_token(data: dict, expires_delta: Optional[timedelta] = None):
61
 
62
  async def get_current_user(credentials: HTTPAuthorizationCredentials = Depends(security)):
63
  token = credentials.credentials
 
 
 
 
 
64
  try:
65
  payload = jwt.decode(token, settings.secret_key, algorithms=[settings.algorithm])
66
  username = payload.get("sub")
@@ -76,6 +81,9 @@ async def get_current_user(credentials: HTTPAuthorizationCredentials = Depends(s
76
  async def get_user_or_none(request: Request):
77
  auth = request.headers.get("Authorization", "")
78
  if not auth.startswith("Bearer "):
 
 
 
79
  return None
80
  try:
81
  return await get_current_user(HTTPAuthorizationCredentials(scheme="Bearer", credentials=auth[7:]))
 
61
 
62
  async def get_current_user(credentials: HTTPAuthorizationCredentials = Depends(security)):
63
  token = credentials.credentials
64
+ if token.startswith("ollama_"):
65
+ user = get_user_by_api_key(token)
66
+ if not user:
67
+ raise HTTPException(status_code=401, detail="Invalid API key")
68
+ return user
69
  try:
70
  payload = jwt.decode(token, settings.secret_key, algorithms=[settings.algorithm])
71
  username = payload.get("sub")
 
81
  async def get_user_or_none(request: Request):
82
  auth = request.headers.get("Authorization", "")
83
  if not auth.startswith("Bearer "):
84
+ api_key = request.headers.get("X-API-Key", "")
85
+ if api_key:
86
+ return get_user_by_api_key(api_key)
87
  return None
88
  try:
89
  return await get_current_user(HTTPAuthorizationCredentials(scheme="Bearer", credentials=auth[7:]))