Refactor auth and unify error handling in routers

Renamed AuthRequired/AdminRequired to auth_required/admin_required and updated all references. Replaced direct HTTPException usage with utils.http_exceptions for consistent error handling. Updated router endpoints to use new auth dependency and standardized not implemented responses. Cleaned up unused theme fields in SiteConfigResponse and improved site config endpoint. Minor type and import cleanups across routers and middleware.
This commit is contained in:
2025-12-25 19:08:46 +08:00
parent 5835b4c626
commit abd85e2290
24 changed files with 347 additions and 391 deletions

View File

@@ -6,7 +6,7 @@ from sqlmodel.ext.asyncio.session import AsyncSession
from models.user import User, LoginRequest, TokenResponse
from models.group import Group
from service.user.login import Login
from service.user.login import login
from utils.password.pwd import Password
@@ -86,7 +86,7 @@ async def test_login_success(db_session: AsyncSession, setup_user):
password=user_data["password"]
)
result = await Login(db_session, login_request)
result = await login(db_session, login_request)
assert isinstance(result, TokenResponse)
assert result.access_token is not None
@@ -103,7 +103,7 @@ async def test_login_user_not_found(db_session: AsyncSession):
password="any_password"
)
result = await Login(db_session, login_request)
result = await login(db_session, login_request)
assert result is None
@@ -116,7 +116,7 @@ async def test_login_wrong_password(db_session: AsyncSession, setup_user):
password="wrong_password"
)
result = await Login(db_session, login_request)
result = await login(db_session, login_request)
assert result is None
@@ -129,7 +129,7 @@ async def test_login_user_banned(db_session: AsyncSession, setup_banned_user):
password="password"
)
result = await Login(db_session, login_request)
result = await login(db_session, login_request)
assert result is False
@@ -145,7 +145,7 @@ async def test_login_2fa_required(db_session: AsyncSession, setup_2fa_user):
# 未提供 two_fa_code
)
result = await Login(db_session, login_request)
result = await login(db_session, login_request)
assert result == "2fa_required"
@@ -161,7 +161,7 @@ async def test_login_2fa_invalid(db_session: AsyncSession, setup_2fa_user):
two_fa_code="000000" # 错误的验证码
)
result = await Login(db_session, login_request)
result = await login(db_session, login_request)
assert result == "2fa_invalid"
@@ -184,7 +184,7 @@ async def test_login_2fa_success(db_session: AsyncSession, setup_2fa_user):
two_fa_code=valid_code
)
result = await Login(db_session, login_request)
result = await login(db_session, login_request)
assert isinstance(result, TokenResponse)
assert result.access_token is not None
@@ -202,7 +202,7 @@ async def test_login_returns_valid_tokens(db_session: AsyncSession, setup_user):
password=user_data["password"]
)
result = await Login(db_session, login_request)
result = await login(db_session, login_request)
assert isinstance(result, TokenResponse)
@@ -227,7 +227,7 @@ async def test_login_case_sensitive_username(db_session: AsyncSession, setup_use
password=user_data["password"]
)
result = await Login(db_session, login_request)
result = await login(db_session, login_request)
# 应该失败,因为用户名大小写不匹配
assert result is None