18
18
from backend .app .admin .model import User
19
19
from backend .app .admin .schema .user import GetUserInfoWithRelationDetail
20
20
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
22
22
from backend .core .conf import settings
23
23
from backend .database .db import async_db_session
24
24
from backend .database .redis import redis_client
@@ -80,11 +80,11 @@ def jwt_decode(token: str) -> TokenPayload:
80
80
user_id = payload .get ('sub' )
81
81
expire_time = payload .get ('exp' )
82
82
if not user_id :
83
- raise TokenError (msg = 'Token 无效' )
83
+ raise errors . TokenError (msg = 'Token 无效' )
84
84
except ExpiredSignatureError :
85
- raise TokenError (msg = 'Token 已过期' )
85
+ raise errors . TokenError (msg = 'Token 已过期' )
86
86
except (JWTError , Exception ):
87
- raise TokenError (msg = 'Token 无效' )
87
+ raise errors . TokenError (msg = 'Token 无效' )
88
88
return TokenPayload (id = int (user_id ), session_uuid = session_uuid , expire_time = expire_time )
89
89
90
90
@@ -160,7 +160,7 @@ async def create_new_token(user_id: str, refresh_token: str, multi_login: bool,
160
160
"""
161
161
redis_refresh_token = await redis_client .get (f'{ settings .TOKEN_REFRESH_REDIS_PREFIX } :{ user_id } :{ refresh_token } ' )
162
162
if not redis_refresh_token or redis_refresh_token != refresh_token :
163
- raise TokenError (msg = 'Refresh Token 已过期,请重新登录' )
163
+ raise errors . TokenError (msg = 'Refresh Token 已过期,请重新登录' )
164
164
new_access_token = await create_access_token (user_id , multi_login , ** kwargs )
165
165
return NewToken (
166
166
new_access_token = new_access_token .access_token ,
@@ -191,7 +191,7 @@ def get_token(request: Request) -> str:
191
191
authorization = request .headers .get ('Authorization' )
192
192
scheme , token = get_authorization_scheme_param (authorization )
193
193
if not authorization or scheme .lower () != 'bearer' :
194
- raise TokenError (msg = 'Token 无效' )
194
+ raise errors . TokenError (msg = 'Token 无效' )
195
195
return token
196
196
197
197
@@ -207,18 +207,18 @@ async def get_current_user(db: AsyncSession, pk: int) -> User:
207
207
208
208
user = await user_dao .get_with_relation (db , user_id = pk )
209
209
if not user :
210
- raise TokenError (msg = 'Token 无效' )
210
+ raise errors . TokenError (msg = 'Token 无效' )
211
211
if not user .status :
212
- raise AuthorizationError (msg = '用户已被锁定,请联系系统管理员' )
212
+ raise errors . AuthorizationError (msg = '用户已被锁定,请联系系统管理员' )
213
213
if user .dept_id :
214
214
if not user .dept .status :
215
- raise AuthorizationError (msg = '用户所属部门已被锁定,请联系系统管理员' )
215
+ raise errors . AuthorizationError (msg = '用户所属部门已被锁定,请联系系统管理员' )
216
216
if user .dept .del_flag :
217
- raise AuthorizationError (msg = '用户所属部门已被删除,请联系系统管理员' )
217
+ raise errors . AuthorizationError (msg = '用户所属部门已被删除,请联系系统管理员' )
218
218
if user .roles :
219
219
role_status = [role .status for role in user .roles ]
220
220
if all (status == 0 for status in role_status ):
221
- raise AuthorizationError (msg = '用户所属角色已被锁定,请联系系统管理员' )
221
+ raise errors . AuthorizationError (msg = '用户所属角色已被锁定,请联系系统管理员' )
222
222
return user
223
223
224
224
@@ -231,7 +231,7 @@ def superuser_verify(request: Request) -> bool:
231
231
"""
232
232
superuser = request .user .is_superuser
233
233
if not superuser or not request .user .is_staff :
234
- raise AuthorizationError
234
+ raise errors . AuthorizationError
235
235
return superuser
236
236
237
237
@@ -246,10 +246,10 @@ async def jwt_authentication(token: str) -> GetUserInfoWithRelationDetail:
246
246
user_id = token_payload .id
247
247
redis_token = await redis_client .get (f'{ settings .TOKEN_REDIS_PREFIX } :{ user_id } :{ token_payload .session_uuid } ' )
248
248
if not redis_token :
249
- raise TokenError (msg = 'Token 已过期' )
249
+ raise errors . TokenError (msg = 'Token 已过期' )
250
250
251
251
if token != redis_token :
252
- raise TokenError (msg = 'Token 已失效' )
252
+ raise errors . TokenError (msg = 'Token 已失效' )
253
253
254
254
cache_user = await redis_client .get (f'{ settings .JWT_USER_REDIS_PREFIX } :{ user_id } ' )
255
255
if not cache_user :
0 commit comments