Spaces:
Runtime error
Runtime error
auth
Browse files
auth.py
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
-
import os
|
2 |
import hashlib
|
3 |
-
|
|
|
|
|
4 |
from authlib.integrations.starlette_client import OAuth
|
5 |
from fastapi import FastAPI
|
6 |
from fastapi.requests import Request
|
7 |
-
from fastapi.responses import
|
8 |
from starlette.middleware.sessions import SessionMiddleware
|
9 |
-
from authlib.integrations.base_client import MismatchingStateError
|
10 |
|
11 |
|
12 |
OAUTH_CLIENT_ID = os.environ.get("OAUTH_CLIENT_ID")
|
@@ -31,10 +31,11 @@ oauth.register(
|
|
31 |
server_metadata_url=METADATA_URL,
|
32 |
)
|
33 |
|
34 |
-
#
|
35 |
-
# TODO: can it be less hacky?
|
36 |
CLOSE_WINDOW_HTML = HTMLResponse("<script>window.close();</script>")
|
37 |
-
|
|
|
|
|
38 |
|
39 |
|
40 |
async def oauth_login(request: Request):
|
@@ -47,7 +48,6 @@ async def oauth_login(request: Request):
|
|
47 |
async def oauth_logout(request: Request) -> RedirectResponse:
|
48 |
request.session.pop("user", None)
|
49 |
return CLOSE_WINDOW_HTML
|
50 |
-
return CLOSE_WINDOW_HTML if close_tab else RedirectResponse("/")
|
51 |
|
52 |
|
53 |
async def oauth_redirect_callback(request: Request) -> RedirectResponse:
|
|
|
|
|
1 |
import hashlib
|
2 |
+
import os
|
3 |
+
|
4 |
+
from authlib.integrations.base_client import MismatchingStateError
|
5 |
from authlib.integrations.starlette_client import OAuth
|
6 |
from fastapi import FastAPI
|
7 |
from fastapi.requests import Request
|
8 |
+
from fastapi.responses import HTMLResponse, RedirectResponse
|
9 |
from starlette.middleware.sessions import SessionMiddleware
|
|
|
10 |
|
11 |
|
12 |
OAUTH_CLIENT_ID = os.environ.get("OAUTH_CLIENT_ID")
|
|
|
31 |
server_metadata_url=METADATA_URL,
|
32 |
)
|
33 |
|
34 |
+
# Close the login/logout page once the user is logged in/out.
|
|
|
35 |
CLOSE_WINDOW_HTML = HTMLResponse("<script>window.close();</script>")
|
36 |
+
|
37 |
+
# If no third-party cookie, open a new tab to login/logout + redirect to the gradio app on this tab.
|
38 |
+
OPEN_WINDOW_HTML = HTMLResponse("<script>window.open('{url}', '_blank'); window.location.replace('/');</script>")
|
39 |
|
40 |
|
41 |
async def oauth_login(request: Request):
|
|
|
48 |
async def oauth_logout(request: Request) -> RedirectResponse:
|
49 |
request.session.pop("user", None)
|
50 |
return CLOSE_WINDOW_HTML
|
|
|
51 |
|
52 |
|
53 |
async def oauth_redirect_callback(request: Request) -> RedirectResponse:
|