52 lines
1.3 KiB
Python
52 lines
1.3 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
|
|
from Utils.EncryptProcess import EncyptUtil
|
|
|
|
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, EncyptUtil.decrypt_data(encrypt_msg=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
|