Skip to content

Commit 9ba7c40

Browse files
committed
make check
修复登录失败不跳转回去的问题
1 parent 9b0e7f0 commit 9ba7c40

35 files changed

+828
-1271
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ style: deps
2727
check: deps
2828
black --check $(black_opts) $(checkfiles) || (echo "Please run 'make style' to auto-fix style issues" && false)
2929
flake8 $(checkfiles)
30-
bandit -x test -r $(checkfiles)
31-
mypy $(checkfiles)
30+
bandit -x test -r $(checkfiles) -c pyproject.toml
31+
mypy fast_tmp/
3232

3333

3434
test_sqlite:

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
[![security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
2+
13
# fast-tmp
4+
25
项目模板
36

47
## 概述

fast_tmp/admin/creator.py

Lines changed: 0 additions & 149 deletions
This file was deleted.

fast_tmp/admin/depends.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from typing import Optional
22

3-
from fastapi import Cookie, Depends, Header, HTTPException
3+
from fastapi import Cookie, Depends, HTTPException
44
from starlette.requests import Request
5-
from starlette.responses import RedirectResponse
65
from starlette.status import HTTP_404_NOT_FOUND
76
from tortoise import Tortoise
87

@@ -41,20 +40,24 @@ async def __get_user_or_none(access_token: Optional[str] = Cookie(None)) -> Opti
4140
"""
4241
获取active为true的用户,否则返回none
4342
"""
44-
try:
45-
payload = decode_access_token(access_token)
46-
username: str = payload.get("sub")
47-
if username is None:
43+
if access_token is not None:
44+
try:
45+
payload = decode_access_token(access_token)
46+
username: str = payload.get("sub")
47+
if username is None:
48+
return None
49+
except Exception:
4850
return None
49-
except Exception:
50-
return None
51-
user = await User.filter(username=username).first()
52-
if user is not None and user.is_active:
53-
return user
51+
user = await User.filter(username=username).first()
52+
if user is not None and user.is_active:
53+
return user
5454
return None
5555

5656

5757
async def get_user(request: Request, user: Optional[User] = Depends(__get_user_or_none)):
58+
"""
59+
found user and write to request
60+
"""
5861
if not user or not user.is_active:
59-
raise NoAuthError
62+
raise NoAuthError()
6063
request.scope["user"] = user

fast_tmp/admin/endpoint.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
1-
from typing import Any, List, Optional
1+
from typing import Optional
22

33
from fastapi import APIRouter, Depends
4-
from pydantic import BaseModel
54
from starlette.requests import Request
65

6+
from fast_tmp.admin.depends import get_user
7+
from fast_tmp.responses import BaseRes, ListDataWithPage
78
from fast_tmp.site import ModelAdmin, get_model_site
89

9-
from ..models import User
10-
from ..responses import BaseRes, ListDataWithPage
11-
from .depends import get_user
12-
1310
router = APIRouter()
1411

1512

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,19 @@
11
from fastapi.responses import JSONResponse
2+
from starlette import status
23
from starlette.requests import Request
3-
from starlette.responses import RedirectResponse
4+
from starlette.responses import RedirectResponse, Response
45
from tortoise.exceptions import BaseORMException
56

67
from fast_tmp.responses import BaseRes, FastTmpError, NoAuthError
78

89

910
async def fasttmp_exception_handler(request: Request, exc: FastTmpError):
10-
return JSONResponse(
11-
status_code=200,
12-
content=exc.detail,
11+
if isinstance(exc, NoAuthError):
12+
return RedirectResponse(request.url_for("admin:login"), status_code=status.HTTP_302_FOUND)
13+
return Response(
14+
status_code=200, content=exc.detail, headers={"Content-Type": "appliation/json"}
1315
)
1416

1517

1618
async def tortoise_exception_handler(request: Request, exc: BaseORMException):
1719
return JSONResponse(content=BaseRes(msg=str(exc), status=400).dict(), status_code=200)
18-
19-
20-
async def no_auth_middle(request: Request, call_next):
21-
try:
22-
response = await call_next(request)
23-
except NoAuthError:
24-
return RedirectResponse(request.url_for("admin:login"))
25-
return response

fast_tmp/admin/responses.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
from typing import Any
2-
3-
from pydantic import BaseModel
41
from starlette.requests import Request
52
from starlette.responses import RedirectResponse
63
from starlette.status import HTTP_303_SEE_OTHER

0 commit comments

Comments
 (0)