mirror of
https://github.com/dat515-2025/Group-8.git
synced 2026-03-22 23:20:56 +01:00
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
import json
|
|
import os
|
|
|
|
from fastapi import APIRouter
|
|
from fastapi.params import Depends
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.models.user import User
|
|
from app.oauth.csas import CSASOAuth
|
|
from app.services.db import get_async_session
|
|
from app.services.user_service import current_active_user
|
|
|
|
router = APIRouter(prefix="/auth/csas", tags=["csas"])
|
|
|
|
CLIENT_ID = os.getenv("CSAS_CLIENT_ID")
|
|
CLIENT_SECRET = os.getenv("CSAS_CLIENT_SECRET")
|
|
CSAS_OAUTH = CSASOAuth(CLIENT_ID, CLIENT_SECRET)
|
|
|
|
|
|
@router.get("/authorize")
|
|
async def csas_authorize():
|
|
return {"authorization_url":
|
|
await CSAS_OAUTH.get_authorization_url(os.getenv("FRONTEND_DOMAIN_SCHEME") + "/auth/csas/callback")}
|
|
|
|
|
|
@router.get("/callback")
|
|
async def csas_callback(code: str, session: AsyncSession = Depends(get_async_session),
|
|
user: User = Depends(current_active_user)):
|
|
response = await CSAS_OAUTH.get_access_token(code, os.getenv("FRONTEND_DOMAIN_SCHEME") + "/auth/csas/callback")
|
|
|
|
if not user.config:
|
|
user.config = {}
|
|
|
|
new_dict = user.config.copy()
|
|
new_dict["csas"] = json.dumps(response)
|
|
|
|
user.config = new_dict
|
|
await session.commit()
|
|
|
|
return "OK"
|