fix: clearer no-perm message with bound roles
This commit is contained in:
@@ -640,10 +640,13 @@ class ModifyAdminUserView(APIView):
|
||||
role_codes = request.data.get('role_codes', [])
|
||||
if not role_codes:
|
||||
return Response({'code': 400, 'msg': '请选择角色'})
|
||||
from jituan.services.club_rbac import resolve_role_by_name
|
||||
club_id = getattr(target_user, 'ClubID', '') or ''
|
||||
added, missing = [], []
|
||||
for rc in role_codes:
|
||||
try:
|
||||
role = Role.objects.get(RoleName=rc)
|
||||
except Role.DoesNotExist:
|
||||
role = resolve_role_by_name(rc, club_id)
|
||||
if not role:
|
||||
missing.append(rc)
|
||||
continue
|
||||
UserRole.objects.get_or_create(
|
||||
UserRoleUUID=uuid.uuid4().bytes,
|
||||
@@ -651,16 +654,28 @@ class ModifyAdminUserView(APIView):
|
||||
RoleUUID=role.RoleUUID,
|
||||
CompanyUUID=uuid.UUID('b0000000-0000-0000-0000-000000000001').bytes,
|
||||
)
|
||||
added.append(role.RoleName)
|
||||
if not added:
|
||||
return Response({
|
||||
'code': 400,
|
||||
'msg': f'未找到可绑定的角色:{", ".join(missing or role_codes)}。请确认顶栏俱乐部与角色所属俱乐部一致',
|
||||
})
|
||||
if missing:
|
||||
return Response({
|
||||
'code': 0,
|
||||
'msg': f'已绑定:{", ".join(added)};未找到:{", ".join(missing)}',
|
||||
})
|
||||
return Response({'code': 0, 'msg': '角色添加成功'})
|
||||
|
||||
elif action == 'remove_user_role':
|
||||
role_code = request.data.get('role_code')
|
||||
if not role_code:
|
||||
return Response({'code': 400, 'msg': '缺少角色编码'})
|
||||
try:
|
||||
role = Role.objects.get(RoleName=role_code)
|
||||
except Role.DoesNotExist:
|
||||
return Response({'code': 404, 'msg': '角色不存在'})
|
||||
from jituan.services.club_rbac import resolve_role_by_name
|
||||
club_id = getattr(target_user, 'ClubID', '') or ''
|
||||
role = resolve_role_by_name(role_code, club_id)
|
||||
if not role:
|
||||
return Response({'code': 404, 'msg': '角色不存在或与用户俱乐部不匹配'})
|
||||
UserRole.objects.filter(UserUUID=target_user.UserUUID, RoleUUID=role.RoleUUID).delete()
|
||||
return Response({'code': 0, 'msg': '角色移除成功'})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user