first commit
This commit is contained in:
34
app/routers/auth.py
Normal file
34
app/routers/auth.py
Normal file
@@ -0,0 +1,34 @@
|
||||
"""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())
|
||||
Reference in New Issue
Block a user