This commit is contained in:
王思川 2024-06-05 14:11:10 +08:00
parent 72970f02c4
commit 3c82a548e4
1 changed files with 14 additions and 4 deletions

View File

@ -167,10 +167,20 @@ def get_user_existing_permissions(request, user_id):
user = get_object_or_404(User, pk=user_id)
# 获取所有权限
all_permissions = format_permissions(Permission.objects.all().select_related('content_type').values('id', 'name', 'codename', 'content_type__app_label'))
# 获取用户的个人权限
user_permissions = user.user_permissions.all().values_list('codename', flat=True)
# 获取用户所在组的权限
group_permissions = Permission.objects.filter(group__user=user).values_list('codename', flat=True)
# 合并用户个人权限和组权限
user_permissions_set = set(user_permissions)
group_permissions_set = set(group_permissions)
all_user_permissions = user_permissions_set.union(group_permissions_set)
# 处理数据以合并相同资源分组和资源名称的权限
processed_permissions = {}
for perm in all_permissions:
@ -187,12 +197,12 @@ def get_user_existing_permissions(request, user_id):
}
if perm['permission'] == '新增':
processed_permissions[key]['add'] = perm['codename'] in user_permissions
processed_permissions[key]['add'] = perm['codename'] in all_user_permissions
elif perm['permission'] == '删除':
processed_permissions[key]['remove'] = perm['codename'] in user_permissions
processed_permissions[key]['remove'] = perm['codename'] in all_user_permissions
elif perm['permission'] == '修改':
processed_permissions[key]['change'] = perm['codename'] in user_permissions
processed_permissions[key]['change'] = perm['codename'] in all_user_permissions
elif perm['permission'] == '查看':
processed_permissions[key]['view'] = perm['codename'] in user_permissions
processed_permissions[key]['view'] = perm['codename'] in all_user_permissions
return JsonResponse({'permissions': list(processed_permissions.values()), 'user_id': user_id})