19 lines
803 B
Python
19 lines
803 B
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from fastapi.security import OAuth2PasswordRequestForm
|
|
from sqlalchemy.orm import Session
|
|
from ..database import get_db
|
|
from .. import models, auth
|
|
from datetime import timedelta
|
|
|
|
router = APIRouter()
|
|
|
|
@router.post("/token")
|
|
def login(form_data: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get_db)):
|
|
user = db.query(models.User).filter(models.User.username == form_data.username).first()
|
|
if not user or not user.verify_password(form_data.password):
|
|
raise HTTPException(401, "用户名或密码错误")
|
|
access_token = auth.create_access_token(
|
|
data={"sub": user.username, "role": user.role},
|
|
expires_delta=timedelta(hours=24)
|
|
)
|
|
return {"access_token": access_token, "token_type": "bearer"} |