mirror of
https://github.com/kurbezz/discord-bot.git
synced 2025-12-10 10:20:23 +01:00
New structure
This commit is contained in:
38
src/applications/web_app/views/auth.py
Normal file
38
src/applications/web_app/views/auth.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
from domain.auth import OAuthProvider, OAuthData
|
||||
from domain.users import CreateUser
|
||||
from modules.web_app.services.oauth.process_callback import process_callback
|
||||
from modules.web_app.services.oauth.authorization_url_getter import get_authorization_url as gen_auth_link
|
||||
from modules.web_app.serializers.auth import GetAuthorizationUrlResponse, CallbackResponse
|
||||
from modules.web_app.auth.authx import auth
|
||||
from repositories.users import UserRepository
|
||||
|
||||
|
||||
auth_router = APIRouter(prefix="/api/auth", tags=["auth"])
|
||||
|
||||
|
||||
@auth_router.get("/get_authorization_url/{provider}/")
|
||||
async def get_authorization_url(provider: OAuthProvider) -> GetAuthorizationUrlResponse:
|
||||
link = await gen_auth_link(provider)
|
||||
|
||||
return GetAuthorizationUrlResponse(authorization_url=link)
|
||||
|
||||
|
||||
@auth_router.get("/callback/{provider}/")
|
||||
async def callback(provider: OAuthProvider, code: str) -> CallbackResponse:
|
||||
user_data = await process_callback(provider, code)
|
||||
|
||||
user = await UserRepository.get_or_create_user(
|
||||
CreateUser(
|
||||
oauths={provider: OAuthData(id=user_data[0], email=user_data[1])},
|
||||
is_admin=False,
|
||||
)
|
||||
)
|
||||
|
||||
token = auth.create_access_token(
|
||||
uid=user.id,
|
||||
is_admin=user.is_admin
|
||||
)
|
||||
|
||||
return CallbackResponse(token=token)
|
||||
Reference in New Issue
Block a user