martian7777
feat: implement backend core with ORM models, authentication, and AI-driven telemetry diagnostics
e5be436 | """Authentication endpoints: register, login (OAuth2), current user.""" | |
| from __future__ import annotations | |
| from typing import Annotated | |
| from fastapi import APIRouter, Depends, status | |
| from fastapi.security import OAuth2PasswordRequestForm | |
| from app.api.dependencies import CurrentUser, DbSession | |
| from app.schemas.user import Token, UserCreate, UserRead | |
| from app.services.auth_service import AuthService | |
| router = APIRouter() | |
| async def register(data: UserCreate, session: DbSession) -> UserRead: | |
| user = await AuthService(session).register(data) | |
| return UserRead.model_validate(user) | |
| async def login( | |
| session: DbSession, | |
| form_data: Annotated[OAuth2PasswordRequestForm, Depends()], | |
| ) -> Token: | |
| """OAuth2 password flow. The `username` field carries the user's email.""" | |
| service = AuthService(session) | |
| user = await service.authenticate(form_data.username, form_data.password) | |
| return service.issue_token(user) | |
| async def read_me(current_user: CurrentUser) -> UserRead: | |
| return UserRead.model_validate(current_user) | |