diff --git a/gvsds/apps/gerp/views/user.py b/gvsds/apps/gerp/views/user.py index 57283a6b..494db45c 100644 --- a/gvsds/apps/gerp/views/user.py +++ b/gvsds/apps/gerp/views/user.py @@ -69,13 +69,10 @@ class UserCenterCardView(ELTAuthenticatedAPIView): def get(self, request): user = request.user - from gvsds.apps.gerp.models import UserRole, Role + from gvsdsdk.auth.managers import RoleManager try: - # request.user 是 gvsdsdk.User,无 userrole_set 反向关系 - user_role = UserRole.objects.filter( - UserUUID=user.UserUUID - ).first() - role = Role.objects.filter(RoleUUID=user_role.RoleUUID).first() if user_role else None + # request.user 是 gvsdsdk.User,无 userrole_set 反向关系,经 RoleManager 获取角色 + role = RoleManager.GetRolesForUser(user.UserUUID).first() except Exception: role = None return Response({ diff --git a/gvsds/apps/gerp/views/user_detail.py b/gvsds/apps/gerp/views/user_detail.py index 090a6ffa..8696e068 100644 --- a/gvsds/apps/gerp/views/user_detail.py +++ b/gvsds/apps/gerp/views/user_detail.py @@ -71,10 +71,11 @@ class UserDetailView(ELTAuthenticatedAPIView): } # 角色列表(通过 UserRole.CompanyUUID 获取关联公司) + from gvsdsdk.auth.managers import RoleManager roles = [] - user_roles = UserRole.objects.filter(UserUUID=user_uuid) + user_roles = RoleManager.GetUserRoleDetails(user_uuid) for ur in user_roles: - role = Role.objects.filter(RoleUUID=ur.RoleUUID).first() + role = RoleManager.GetRoleByUUID(ur.RoleUUID) if role: company_name = '' company_short = '' diff --git a/gvsds/apps/gerp/views/viewsets.py b/gvsds/apps/gerp/views/viewsets.py index 5d0edc17..72ad64c5 100644 --- a/gvsds/apps/gerp/views/viewsets.py +++ b/gvsds/apps/gerp/views/viewsets.py @@ -212,15 +212,9 @@ class RoleViewSet(TenantScopedMixin, viewsets.ModelViewSet): # 无公司上下文:无法判断"同公司",返回空 qs = qs.none() else: - ur_qs = UserRole.objects.filter( - UserUUID=user_uuid_bytes, - CompanyUUID=company_uuid, - ) - bound_role_ids = set(ur_qs.values_list('RoleUUID', flat=True)) - if bound_role_ids: - qs = qs.filter(RoleUUID__in=bound_role_ids) - else: - qs = qs.none() + from gvsdsdk.auth.managers import RoleManager + bound_roles = RoleManager.GetRolesForUser(user_uuid_bytes, company_uuid) + qs = qs.filter(RoleUUID__in=bound_roles.values_list('RoleUUID', flat=True)) offset = int(request.query_params.get('offset', 0)) serializer = self.get_serializer(qs[offset:offset + 20], many=True) data = serializer.data diff --git a/gvsds/apps/ugm/views.py b/gvsds/apps/ugm/views.py index 9e3ff36f..de5c1453 100644 --- a/gvsds/apps/ugm/views.py +++ b/gvsds/apps/ugm/views.py @@ -89,9 +89,8 @@ def _ClearJwtCookies(response): def _SetCurrentRoleCookie(response, user): """查询用户首个角色并设置 CurrentRoleUUID cookie""" - from gvsds.apps.gerp.models import UserRole as _UserRole - # UserRole.RoleUUID 是 UUIDField,不能 select_related - first_role = _UserRole.objects.filter(UserUUID=user.UserUUID).first() + from gvsdsdk.auth.managers import RoleManager + first_role = RoleManager.GetRolesForUser(user.UserUUID).first() if first_role and first_role.RoleUUID: max_age = int(settings.SIMPLE_JWT['REFRESH_TOKEN_LIFETIME'].total_seconds()) response.set_cookie(