arxplorer / src /router /auth.py
Subhadeep Mandal
Fresh deploy
54eb2ce
Raw
History Blame Contribute Delete
2.1 kB
from fastapi import APIRouter, Request, Depends
from ..controller.auth import (
initiate_google_login,
handle_google_callback,
logout_user,
get_user_sessions,
register_user,
login_user,
delete_user_account,
refresh_access_token,
)
from ..schema.auth import RegisterRequest, LoginRequest, RefreshTokenRequest
from ..lib.auth import get_current_user
router = APIRouter()
@router.post("/register")
async def register(register_data: RegisterRequest):
"""Register a new user"""
return await register_user(register_data)
@router.post("/login")
async def login(login_data: LoginRequest, request: Request):
"""Login with email and password"""
return await login_user(login_data, request)
@router.post("/refresh")
async def refresh(refresh_data: RefreshTokenRequest):
"""Refresh access token using refresh token"""
return await refresh_access_token(refresh_data.refresh_token)
@router.get("/google/login")
async def login_google():
"""Initiate Google OAuth2 login"""
return await initiate_google_login()
@router.get("/google/callback")
async def auth_google_callback(code: str, state: str, request: Request):
"""Handle Google OAuth2 callback"""
return await handle_google_callback(code, state, request)
@router.post("/logout")
async def logout(user_id: int = Depends(get_current_user)):
"""Logout current user from all sessions"""
return await logout_user(user_id)
@router.post("/logout/{session_id}")
async def logout_session(session_id: int, user_id: int = Depends(get_current_user)):
"""Logout from specific session"""
return await logout_user(user_id, session_id)
@router.get("/sessions")
async def get_sessions(user_id: int = Depends(get_current_user)):
"""Get user's login sessions"""
return await get_user_sessions(user_id)
@router.delete("/account")
async def delete_account(user_id: int = Depends(get_current_user)):
"""Delete user account and all associated data"""
return await delete_user_account(user_id)