Files
sdb-back/app/routes/auth.py
2025-06-27 13:14:29 +02:00

52 lines
1.2 KiB
Python

"""Authentication routes."""
from flask import Blueprint, url_for
from app.services.auth_service import AuthService
bp = Blueprint("auth", __name__)
auth_service = AuthService()
@bp.route("/login")
def login() -> dict[str, str]:
"""Initiate Google OAuth login."""
redirect_uri = url_for("auth.callback", _external=True)
login_url = auth_service.get_login_url(redirect_uri)
return {"login_url": login_url}
@bp.route("/callback")
def callback():
"""Handle OAuth callback from Google."""
try:
user_data, response = auth_service.handle_callback()
return response
except Exception as e:
return {"error": str(e)}, 400
@bp.route("/logout")
def logout():
"""Logout current user."""
return auth_service.logout()
@bp.route("/me")
def me() -> dict[str, str] | tuple[dict[str, str], int]:
"""Get current user information."""
user = auth_service.get_current_user()
if not user:
return {"error": "Not authenticated"}, 401
return {"user": user}
@bp.route("/refresh")
def refresh():
"""Refresh access token using refresh token."""
response = auth_service.refresh_tokens()
if not response:
return {"error": "Invalid or expired refresh token"}, 401
return response