/
PetrovSA
/
python-dev-course
Обзор
Документация
Войти
/
PetrovSA
/
python-dev-course
Код
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Part 8 - FastAPI/BooksAPI_UI_Start/app/routers/auth.py
31 строка
1 KB
PetrovSerega
Initial commit
08 май 2026, 17:14
08 май 2026, 17:14
9e45db8
Код
Авторство
О чём код?
# app/routers/auth.py from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session import secrets from passlib.context import CryptContext from app.dependencies.db import get_db from app.schemas.user import UserCreate, UserLogin from app.crud.user import get_user_by_username, create_user, update_user_token router = APIRouter(tags=["auth"]) pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") @router.post("/register") def register(user_data: UserCreate, db: Session = Depends(get_db)): existing = get_user_by_username(db, user_data.username) if existing: raise HTTPException(status_code=400, detail="Пользователь уже существует") hashed = pwd_context.hash(user_data.password) create_user(db, user_data.username, hashed) return {"message": "Регистрация успешна"} @router.post("/login") def login(user_data: UserLogin, db: Session = Depends(get_db)): user = get_user_by_username(db, user_data.username) if not user or not pwd_context.verify(user_data.password, user.hashed_password): raise HTTPException(status_code=401, detail="Неверные учётные данные") token = secrets.token_urlsafe(32) update_user_token(db, user, token) return {"access_token": token, "token_type": "bearer"}