From 770fae3668c9dfdad0db875e490a310ab426ece5 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Wed, 13 Dec 2023 20:08:47 -0400
Subject: [PATCH] feat: expose permissions

---
 program/serializers.py | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/program/serializers.py b/program/serializers.py
index a5383bff..2fd809b7 100644
--- a/program/serializers.py
+++ b/program/serializers.py
@@ -103,15 +103,19 @@ class ProfileSerializer(serializers.ModelSerializer):
 
 
 class UserSerializer(serializers.ModelSerializer):
+    permissions = serializers.SerializerMethodField()
     # Add profile fields to JSON
     profile = ProfileSerializer(required=False)
 
     class Meta:
         model = User
+        read_only_fields = (
+            "id",
+            "permissions",
+        )
         fields = (
             "email",
             "first_name",
-            "id",
             "is_active",
             "is_staff",
             "is_superuser",
@@ -119,6 +123,12 @@ class UserSerializer(serializers.ModelSerializer):
             "password",
             "profile",
             "username",
+        ) + read_only_fields
+
+    @staticmethod
+    def get_permissions(obj: User) -> list[str]:
+        return sorted(
+            [p.split(".")[1] for p in obj.get_all_permissions() if p.startswith("program")]
         )
 
     def create(self, validated_data):
-- 
GitLab