Skip to content

Commit 699001a

Browse files
committed
Fix code missing and redundancy
1 parent 6aed023 commit 699001a

4 files changed

Lines changed: 50 additions & 16 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import uuid
2+
3+
from fast_captcha import img_captcha
4+
from fastapi import APIRouter, Depends
5+
from fastapi_limiter.depends import RateLimiter
6+
from starlette.concurrency import run_in_threadpool
7+
8+
from backend.app.admin.schema.captcha import GetCaptchaDetail
9+
from backend.common.response.response_schema import ResponseSchemaModel, response_base
10+
from backend.core.conf import settings
11+
from backend.database.db import CurrentSession
12+
from backend.database.redis import redis_client
13+
from backend.utils.dynamic_config import load_login_config
14+
15+
router = APIRouter()
16+
17+
18+
@router.get(
19+
'/captcha',
20+
summary='获取登录验证码',
21+
dependencies=[Depends(RateLimiter(times=5, seconds=10))],
22+
)
23+
async def get_captcha(db: CurrentSession) -> ResponseSchemaModel[GetCaptchaDetail]:
24+
await load_login_config(db)
25+
img, code = await run_in_threadpool(img_captcha, img_byte='base64')
26+
captcha_uuid = str(uuid.uuid4())
27+
await redis_client.set(
28+
f'{settings.LOGIN_CAPTCHA_REDIS_PREFIX}:{captcha_uuid}',
29+
code,
30+
ex=settings.LOGIN_CAPTCHA_EXPIRE_SECONDS,
31+
)
32+
data = GetCaptchaDetail(
33+
is_enabled=settings.LOGIN_CAPTCHA_ENABLED,
34+
expire_seconds=settings.LOGIN_CAPTCHA_EXPIRE_SECONDS,
35+
uuid=captcha_uuid,
36+
image=img,
37+
)
38+
return response_base.success(data=data)

backend/app/admin/api/v1/user.py

Whitespace-only changes.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from pydantic import Field
2+
3+
from backend.common.schema import SchemaBase
4+
5+
6+
class GetCaptchaDetail(SchemaBase):
7+
"""验证码详情"""
8+
9+
is_enabled: bool = Field(description='是否启用')
10+
expire_seconds: int = Field(description='过期秒数')
11+
uuid: str = Field(description='图片唯一标识')
12+
image: str = Field(description='图片内容')

backend/core/conf.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -100,26 +100,10 @@ class Settings(BaseSettings):
100100
# JWT
101101
JWT_USER_REDIS_PREFIX: str = 'fba:user'
102102

103-
# RBAC
104-
RBAC_ROLE_MENU_MODE: bool = True
105-
RBAC_ROLE_MENU_EXCLUDE: list[str] = [
106-
'sys:monitor:redis',
107-
'sys:monitor:server',
108-
]
109-
110103
# Cookie
111104
COOKIE_REFRESH_TOKEN_KEY: str = 'fba_refresh_token'
112105
COOKIE_REFRESH_TOKEN_EXPIRE_SECONDS: int = 60 * 60 * 24 * 7 # 7 天
113106

114-
# 数据权限
115-
DATA_PERMISSION_COLUMN_EXCLUDE: list[str] = [ # 排除允许进行数据过滤的 SQLA 模型列
116-
'id',
117-
'sort',
118-
'del_flag',
119-
'created_time',
120-
'updated_time',
121-
]
122-
123107
# CORS
124108
CORS_ALLOWED_ORIGINS: list[str] = [ # 末尾不带斜杠
125109
'http://127.0.0.1:8000',

0 commit comments

Comments
 (0)