user-wsc/User/router_user.py

51 lines
1.2 KiB
Python

from datetime import timedelta
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from werkzeug.security import check_password_hash
from User import crud, models, schemas
from User.database import SessionLocal, engine
from Utils.Authentication import Config, TokenUtil
models.Base.metadata.create_all(bind=engine)
router = APIRouter()
def get_db():
try:
db = SessionLocal()
yield db
finally:
db.close()
@router.post("/login", summary="登录")
def login(body: schemas.UserLogin, db: Session = Depends(get_db)):
data = crud.get_user_by_email(db, email=body.email)
if not data:
return {"info": "User Not Existed"}
if not check_password_hash(data.passwd, body.passwd):
return {"info": "Password Incorrect"}
user = {
"uid": data.id,
"email": data.email,
"name": data.name,
"role": data.role,
"depart": data.depart,
"is_active": data.is_active
}
access_token_expires = timedelta(minutes=Config.ACCESS_TOKEN_EXPIRE_MINUTES)
access_token = TokenUtil.create_token(
data=user, expires_delta=access_token_expires
)
user.update({"token": access_token})
return user