feat(rbac): add permission_state field to role serializer

This commit is contained in:
Adrián Jesús Peña Rodríguez
2024-12-10 10:45:09 +01:00
parent 5fd1af7559
commit b4eb6e8076
2 changed files with 23 additions and 1 deletions
+1 -1
View File
@@ -502,7 +502,7 @@ class RoleFilter(FilterSet):
if value == "unlimited":
return queryset.filter(q_all_true)
elif value == "nopermissions":
elif value == "none":
return queryset.filter(q_all_false)
elif value == "limited":
return queryset.exclude(q_all_true | q_all_false)
+22
View File
@@ -1278,6 +1278,27 @@ class RoleSerializer(RLSSerializer, BaseWriteSerializer):
many=True, queryset=ProviderGroup.objects.all()
)
permission_state = serializers.SerializerMethodField()
def get_permission_state(self, obj):
permission_fields = [
"manage_users",
"manage_account",
"manage_billing",
"manage_providers",
"manage_integrations",
"manage_scans",
]
values = [getattr(obj, field) for field in permission_fields]
if all(values):
return "unlimited"
elif not any(values):
return "none"
else:
return "limited"
def validate(self, attrs):
if Role.objects.filter(name=attrs.get("name")).exists():
raise serializers.ValidationError(
@@ -1306,6 +1327,7 @@ class RoleSerializer(RLSSerializer, BaseWriteSerializer):
"manage_providers",
"manage_integrations",
"manage_scans",
"permission_state",
"unlimited_visibility",
"inserted_at",
"updated_at",