Spaces:
Sleeping
Sleeping
from flask import Flask, request, redirect, session | |
from authlib.integrations.flask_client import OAuth | |
import os | |
# Flask app setup | |
app = Flask(__name__) | |
app.secret_key = os.getenv("FLASK_SECRET_KEY") | |
# OAuth setup | |
oauth = OAuth(app) | |
azure = oauth.register( | |
name='azure', | |
client_id=os.getenv("AZURE_CLIENT_ID"), | |
client_secret=os.getenv("AZURE_CLIENT_SECRET"), | |
server_metadata_url=f"https://login.microsoftonline.com/{os.getenv('AZURE_TENANT_ID')}/v2.0/.well-known/openid-configuration", | |
client_kwargs={"scope": "openid email profile"}, | |
) | |
def login(): | |
redirect_uri = os.getenv("REDIRECT_URI", "http://localhost:8501") | |
return azure.authorize_redirect(redirect_uri) | |
def callback(): | |
token = azure.authorize_access_token() | |
user = azure.parse_id_token(token) | |
# You can save user info or session here | |
return redirect("/") | |
def auth_middleware(): | |
if request.endpoint not in ("login", "callback") and "user" not in session: | |
return redirect("/login") | |