Files
Dennis Thiessen 61ab24490d
Some checks failed
Deploy / lint (push) Failing after 7s
Deploy / test (push) Has been skipped
Deploy / deploy (push) Has been skipped
first commit
2026-02-20 17:31:01 +01:00

35 lines
1.2 KiB
Python

"""Auth router: registration and login endpoints."""
from fastapi import APIRouter, Depends
from sqlalchemy.ext.asyncio import AsyncSession
from app.dependencies import get_db
from app.schemas.auth import LoginRequest, RegisterRequest, TokenResponse
from app.schemas.common import APIEnvelope
from app.services import auth_service
router = APIRouter(tags=["auth"])
@router.post("/auth/register", response_model=APIEnvelope)
async def register(body: RegisterRequest, db: AsyncSession = Depends(get_db)):
"""Public endpoint — register a new user."""
user = await auth_service.register(db, body.username, body.password)
return APIEnvelope(
status="success",
data={
"id": user.id,
"username": user.username,
"role": user.role,
"has_access": user.has_access,
},
)
@router.post("/auth/login", response_model=APIEnvelope)
async def login(body: LoginRequest, db: AsyncSession = Depends(get_db)):
"""Public endpoint — login and receive a JWT."""
token = await auth_service.login(db, body.username, body.password)
token_resp = TokenResponse(access_token=token)
return APIEnvelope(status="success", data=token_resp.model_dump())