add custom login_view

This commit is contained in:
long2ice
2020-06-05 18:58:57 +08:00
parent 213f976ae3
commit 461335c421
9 changed files with 122 additions and 91 deletions

View File

@@ -2,8 +2,7 @@ from fastapi import Depends
from ..depends import jwt_required
from ..factory import app
from . import login, rest, site
from . import rest, site
app.include_router(login.router)
app.include_router(site.router)
app.include_router(rest.router, dependencies=[Depends(jwt_required)], prefix="/rest")

View File

@@ -1,29 +0,0 @@
import jwt
from fastapi import APIRouter, HTTPException
from starlette.status import HTTP_403_FORBIDDEN
from ..common import pwd_context
from ..factory import app
from ..schemas import LoginIn
from ..shortcuts import get_object_or_404
router = APIRouter()
@router.post("/login",)
async def login(login_in: LoginIn):
user_model = app.user_model
user = await get_object_or_404(user_model, username=login_in.username)
if not user.is_active:
raise HTTPException(status_code=HTTP_403_FORBIDDEN, detail="User is not Active!")
if not pwd_context.verify(login_in.password, user.password):
raise HTTPException(status_code=HTTP_403_FORBIDDEN, detail="Incorrect Password!")
ret = {
"user": {
"username": user.username,
"is_superuser": user.is_superuser,
"avatar": user.avatar if hasattr(user, "avatar") else None,
},
"token": jwt.encode({"user_id": user.pk}, app.admin_secret, algorithm="HS256"),
}
return ret