Skip to content

Commit 0d1f05d

Browse files
authored
Fix some error class import (#672)
1 parent e6608d1 commit 0d1f05d

File tree

6 files changed

+32
-38
lines changed

6 files changed

+32
-38
lines changed

backend/app/task/service/task_service.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from backend.app.task.celery import celery_app
88
from backend.app.task.schema.task import RunParam, TaskResult
99
from backend.common.exception import errors
10-
from backend.common.exception.errors import NotFoundError
1110

1211

1312
class TaskService:
@@ -31,7 +30,7 @@ def get_detail(*, tid: str) -> TaskResult:
3130
try:
3231
result = AsyncResult(id=tid, app=celery_app)
3332
except NotRegistered:
34-
raise NotFoundError(msg='任务不存在')
33+
raise errors.NotFoundError(msg='任务不存在')
3534
return TaskResult(
3635
result=result.result,
3736
traceback=result.traceback,
@@ -55,7 +54,7 @@ def revoke(*, tid: str) -> None:
5554
try:
5655
result = AsyncResult(id=tid, app=celery_app)
5756
except NotRegistered:
58-
raise NotFoundError(msg='任务不存在')
57+
raise errors.NotFoundError(msg='任务不存在')
5958
result.revoke(terminate=True)
6059

6160
@staticmethod

backend/common/security/jwt.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from backend.app.admin.model import User
1919
from backend.app.admin.schema.user import GetUserInfoWithRelationDetail
2020
from backend.common.dataclasses import AccessToken, NewToken, RefreshToken, TokenPayload
21-
from backend.common.exception.errors import AuthorizationError, TokenError
21+
from backend.common.exception import errors
2222
from backend.core.conf import settings
2323
from backend.database.db import async_db_session
2424
from backend.database.redis import redis_client
@@ -80,11 +80,11 @@ def jwt_decode(token: str) -> TokenPayload:
8080
user_id = payload.get('sub')
8181
expire_time = payload.get('exp')
8282
if not user_id:
83-
raise TokenError(msg='Token 无效')
83+
raise errors.TokenError(msg='Token 无效')
8484
except ExpiredSignatureError:
85-
raise TokenError(msg='Token 已过期')
85+
raise errors.TokenError(msg='Token 已过期')
8686
except (JWTError, Exception):
87-
raise TokenError(msg='Token 无效')
87+
raise errors.TokenError(msg='Token 无效')
8888
return TokenPayload(id=int(user_id), session_uuid=session_uuid, expire_time=expire_time)
8989

9090

@@ -160,7 +160,7 @@ async def create_new_token(user_id: str, refresh_token: str, multi_login: bool,
160160
"""
161161
redis_refresh_token = await redis_client.get(f'{settings.TOKEN_REFRESH_REDIS_PREFIX}:{user_id}:{refresh_token}')
162162
if not redis_refresh_token or redis_refresh_token != refresh_token:
163-
raise TokenError(msg='Refresh Token 已过期,请重新登录')
163+
raise errors.TokenError(msg='Refresh Token 已过期,请重新登录')
164164
new_access_token = await create_access_token(user_id, multi_login, **kwargs)
165165
return NewToken(
166166
new_access_token=new_access_token.access_token,
@@ -191,7 +191,7 @@ def get_token(request: Request) -> str:
191191
authorization = request.headers.get('Authorization')
192192
scheme, token = get_authorization_scheme_param(authorization)
193193
if not authorization or scheme.lower() != 'bearer':
194-
raise TokenError(msg='Token 无效')
194+
raise errors.TokenError(msg='Token 无效')
195195
return token
196196

197197

@@ -207,18 +207,18 @@ async def get_current_user(db: AsyncSession, pk: int) -> User:
207207

208208
user = await user_dao.get_with_relation(db, user_id=pk)
209209
if not user:
210-
raise TokenError(msg='Token 无效')
210+
raise errors.TokenError(msg='Token 无效')
211211
if not user.status:
212-
raise AuthorizationError(msg='用户已被锁定,请联系系统管理员')
212+
raise errors.AuthorizationError(msg='用户已被锁定,请联系系统管理员')
213213
if user.dept_id:
214214
if not user.dept.status:
215-
raise AuthorizationError(msg='用户所属部门已被锁定,请联系系统管理员')
215+
raise errors.AuthorizationError(msg='用户所属部门已被锁定,请联系系统管理员')
216216
if user.dept.del_flag:
217-
raise AuthorizationError(msg='用户所属部门已被删除,请联系系统管理员')
217+
raise errors.AuthorizationError(msg='用户所属部门已被删除,请联系系统管理员')
218218
if user.roles:
219219
role_status = [role.status for role in user.roles]
220220
if all(status == 0 for status in role_status):
221-
raise AuthorizationError(msg='用户所属角色已被锁定,请联系系统管理员')
221+
raise errors.AuthorizationError(msg='用户所属角色已被锁定,请联系系统管理员')
222222
return user
223223

224224

@@ -231,7 +231,7 @@ def superuser_verify(request: Request) -> bool:
231231
"""
232232
superuser = request.user.is_superuser
233233
if not superuser or not request.user.is_staff:
234-
raise AuthorizationError
234+
raise errors.AuthorizationError
235235
return superuser
236236

237237

@@ -246,10 +246,10 @@ async def jwt_authentication(token: str) -> GetUserInfoWithRelationDetail:
246246
user_id = token_payload.id
247247
redis_token = await redis_client.get(f'{settings.TOKEN_REDIS_PREFIX}:{user_id}:{token_payload.session_uuid}')
248248
if not redis_token:
249-
raise TokenError(msg='Token 已过期')
249+
raise errors.TokenError(msg='Token 已过期')
250250

251251
if token != redis_token:
252-
raise TokenError(msg='Token 已失效')
252+
raise errors.TokenError(msg='Token 已失效')
253253

254254
cache_user = await redis_client.get(f'{settings.JWT_USER_REDIS_PREFIX}:{user_id}')
255255
if not cache_user:

backend/common/security/permission.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from backend.app.admin.crud.crud_data_scope import data_scope_dao
99
from backend.common.enums import RoleDataRuleExpressionType, RoleDataRuleOperatorType
1010
from backend.common.exception import errors
11-
from backend.common.exception.errors import ServerError
1211
from backend.core.conf import settings
1312
from backend.utils.import_parse import dynamic_import_data_model
1413

@@ -40,7 +39,7 @@ async def __call__(self, request: Request) -> None:
4039
"""
4140
if settings.RBAC_ROLE_MENU_MODE:
4241
if not isinstance(self.value, str):
43-
raise ServerError
42+
raise errors.ServerError
4443
# 附加权限标识到请求状态
4544
request.state.permission = self.value
4645

backend/common/security/rbac.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
from backend.common.enums import MethodType, StatusType
66
from backend.common.exception import errors
7-
from backend.common.exception.errors import AuthorizationError, TokenError
87
from backend.common.log import log
98
from backend.common.security.jwt import DependsJwtAuth
109
from backend.core.conf import settings
@@ -27,7 +26,7 @@ async def rbac_verify(request: Request, _token: str = DependsJwtAuth) -> None:
2726

2827
# JWT 授权状态强制校验
2928
if not request.auth.scopes:
30-
raise TokenError
29+
raise errors.TokenError
3130

3231
# 超级管理员免校验
3332
if request.user.is_superuser:
@@ -36,17 +35,17 @@ async def rbac_verify(request: Request, _token: str = DependsJwtAuth) -> None:
3635
# 检测用户角色
3736
user_roles = request.user.roles
3837
if not user_roles or all(status == 0 for status in user_roles):
39-
raise AuthorizationError(msg='用户未分配角色,请联系系统管理员')
38+
raise errors.AuthorizationError(msg='用户未分配角色,请联系系统管理员')
4039

4140
# 检测用户所属角色菜单
4241
if not any(len(role.menus) > 0 for role in user_roles):
43-
raise AuthorizationError(msg='用户未分配菜单,请联系系统管理员')
42+
raise errors.AuthorizationError(msg='用户未分配菜单,请联系系统管理员')
4443

4544
# 检测后台管理操作权限
4645
method = request.method
4746
if method != MethodType.GET or method != MethodType.OPTIONS:
4847
if not request.user.is_staff:
49-
raise AuthorizationError(msg='用户已被禁止后台管理操作,请联系系统管理员')
48+
raise errors.AuthorizationError(msg='用户已被禁止后台管理操作,请联系系统管理员')
5049

5150
# RBAC 鉴权
5251
if settings.RBAC_ROLE_MENU_MODE:
@@ -72,7 +71,7 @@ async def rbac_verify(request: Request, _token: str = DependsJwtAuth) -> None:
7271
if menu.perms and menu.status == StatusType.enable:
7372
allow_perms.extend(menu.perms.split(','))
7473
if path_auth_perm not in allow_perms:
75-
raise AuthorizationError
74+
raise errors.AuthorizationError
7675
else:
7776
try:
7877
casbin_rbac = import_module_cached('backend.plugin.casbin_rbac.rbac')

backend/plugin/errors.py

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

backend/plugin/tools.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,23 @@
1616
from starlette.concurrency import run_in_threadpool
1717

1818
from backend.common.enums import StatusType
19-
from backend.common.exception.errors import ForbiddenError
19+
from backend.common.exception import errors
2020
from backend.common.log import log
2121
from backend.core.conf import settings
2222
from backend.core.path_conf import PLUGIN_DIR
2323
from backend.database.redis import RedisCli, redis_client
24-
from backend.plugin.errors import PluginConfigError, PluginInjectError
2524
from backend.utils._await import run_await
2625
from backend.utils.import_parse import import_module_cached
2726

2827

28+
class PluginConfigError(Exception):
29+
"""插件信息错误"""
30+
31+
32+
class PluginInjectError(Exception):
33+
"""插件注入错误"""
34+
35+
2936
@lru_cache
3037
def get_plugins() -> list[str]:
3138
"""获取插件列表"""
@@ -324,4 +331,4 @@ async def __call__(self, request: Request) -> None:
324331
log.error(f'插件 {self.plugin} 状态未初始化或丢失,需重启服务自动修复')
325332
raise PluginInjectError(f'插件 {self.plugin} 状态未初始化或丢失,请联系系统管理员')
326333
if not int(plugin_status.get(self.plugin)):
327-
raise ForbiddenError(msg=f'插件 {self.plugin} 未启用,请联系系统管理员')
334+
raise errors.ForbiddenError(msg=f'插件 {self.plugin} 未启用,请联系系统管理员')

0 commit comments

Comments
 (0)