Spaces:
Sleeping
Sleeping
Commit
·
b6d296b
1
Parent(s):
7a94c8b
oauth test flow
Browse files- main.py +32 -0
- static/assets/{index-7974ca0c.js → index-025bf825.js} +0 -0
- static/index.html +1 -1
main.py
CHANGED
@@ -5,6 +5,8 @@ from fastapi import FastAPI, BackgroundTasks, HTTPException, Query
|
|
5 |
from fastapi.responses import StreamingResponse
|
6 |
from starlette.concurrency import run_in_threadpool
|
7 |
from datasets import load_dataset
|
|
|
|
|
8 |
import random
|
9 |
import json
|
10 |
from genson import SchemaBuilder
|
@@ -37,6 +39,8 @@ client = OpenAI(
|
|
37 |
api_key=os.environ.get('OPENROUTER_KEY')
|
38 |
)
|
39 |
|
|
|
|
|
40 |
state_queue_map = {}
|
41 |
|
42 |
def is_sharegpt(sample):
|
@@ -412,6 +416,34 @@ async def get_oauth_config(request: Request):
|
|
412 |
}
|
413 |
|
414 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
415 |
@app.get("/")
|
416 |
def index() -> FileResponse:
|
417 |
return FileResponse(path="static/index.html", media_type="text/html")
|
|
|
5 |
from fastapi.responses import StreamingResponse
|
6 |
from starlette.concurrency import run_in_threadpool
|
7 |
from datasets import load_dataset
|
8 |
+
from fastapi import FastAPI, Depends, HTTPException, status
|
9 |
+
from fastapi.security import OAuth2PasswordBearer
|
10 |
import random
|
11 |
import json
|
12 |
from genson import SchemaBuilder
|
|
|
39 |
api_key=os.environ.get('OPENROUTER_KEY')
|
40 |
)
|
41 |
|
42 |
+
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
|
43 |
+
|
44 |
state_queue_map = {}
|
45 |
|
46 |
def is_sharegpt(sample):
|
|
|
416 |
}
|
417 |
|
418 |
|
419 |
+
async def get_current_user(token: str = Depends(oauth2_scheme)):
|
420 |
+
if not token:
|
421 |
+
raise HTTPException(
|
422 |
+
status_code=status.HTTP_401_UNAUTHORIZED,
|
423 |
+
detail="Missing token",
|
424 |
+
headers={"WWW-Authenticate": "Bearer"},
|
425 |
+
)
|
426 |
+
|
427 |
+
url = "https://huggingface.co/oauth/userinfo"
|
428 |
+
headers = {"Authorization": f"Bearer {token}"}
|
429 |
+
response = requests.get(url, headers=headers)
|
430 |
+
|
431 |
+
if response.status_code != 200:
|
432 |
+
raise HTTPException(
|
433 |
+
status_code=status.HTTP_401_UNAUTHORIZED,
|
434 |
+
detail="Invalid token",
|
435 |
+
headers={"WWW-Authenticate": "Bearer"},
|
436 |
+
)
|
437 |
+
|
438 |
+
user_info = response.json()
|
439 |
+
return user_info
|
440 |
+
|
441 |
+
@app.get("/gated_route")
|
442 |
+
async def gated_route(current_user: str = Depends(get_current_user)):
|
443 |
+
# Your logic here. The endpoint will only be accessible if the token is valid
|
444 |
+
return {"message": "You are authorized to access this route"}
|
445 |
+
|
446 |
+
|
447 |
@app.get("/")
|
448 |
def index() -> FileResponse:
|
449 |
return FileResponse(path="static/index.html", media_type="text/html")
|
static/assets/{index-7974ca0c.js → index-025bf825.js}
RENAMED
The diff for this file is too large to render.
See raw diff
|
|
static/index.html
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
6 |
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
7 |
<title>Vite + Preact</title>
|
8 |
-
<script type="module" crossorigin src="/assets/index-
|
9 |
<link rel="stylesheet" href="/assets/index-abe6d7fb.css">
|
10 |
</head>
|
11 |
<body ondrop="event.preventDefault()" >
|
|
|
5 |
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
6 |
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
7 |
<title>Vite + Preact</title>
|
8 |
+
<script type="module" crossorigin src="/assets/index-025bf825.js"></script>
|
9 |
<link rel="stylesheet" href="/assets/index-abe6d7fb.css">
|
10 |
</head>
|
11 |
<body ondrop="event.preventDefault()" >
|