|
1 | 1 | from typing import Optional |
2 | 2 |
|
3 | | -from fastapi import Cookie, Depends, Header, HTTPException |
| 3 | +from fastapi import Cookie, Depends, HTTPException |
4 | 4 | from starlette.requests import Request |
5 | | -from starlette.responses import RedirectResponse |
6 | 5 | from starlette.status import HTTP_404_NOT_FOUND |
7 | 6 | from tortoise import Tortoise |
8 | 7 |
|
@@ -41,20 +40,24 @@ async def __get_user_or_none(access_token: Optional[str] = Cookie(None)) -> Opti |
41 | 40 | """ |
42 | 41 | 获取active为true的用户,否则返回none |
43 | 42 | """ |
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: |
48 | 50 | 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 |
54 | 54 | return None |
55 | 55 |
|
56 | 56 |
|
57 | 57 | async def get_user(request: Request, user: Optional[User] = Depends(__get_user_or_none)): |
| 58 | + """ |
| 59 | + found user and write to request |
| 60 | + """ |
58 | 61 | if not user or not user.is_active: |
59 | | - raise NoAuthError |
| 62 | + raise NoAuthError() |
60 | 63 | request.scope["user"] = user |
0 commit comments