diff --git a/label_studio/core/settings/base.py b/label_studio/core/settings/base.py index 0fe164623fae..2d06a58d468f 100644 --- a/label_studio/core/settings/base.py +++ b/label_studio/core/settings/base.py @@ -600,7 +600,7 @@ SAVE_USER = 'users.functions.save_user' POST_PROCESS_REIMPORT = 'core.utils.common.empty' USER_SERIALIZER = 'users.serializers.BaseUserSerializer' -WHOAMI_USER_SERIALIZER = USER_SERIALIZER +WHOAMI_USER_SERIALIZER = 'users.serializers.BaseWhoAmIUserSerializer' USER_SERIALIZER_UPDATE = 'users.serializers.BaseUserSerializerUpdate' TASK_SERIALIZER = 'tasks.serializers.BaseTaskSerializer' EXPORT_DATA_SERIALIZER = 'data_export.serializers.BaseExportDataSerializer' diff --git a/label_studio/users/serializers.py b/label_studio/users/serializers.py index 3181d7c8e947..96b87f8fd7aa 100644 --- a/label_studio/users/serializers.py +++ b/label_studio/users/serializers.py @@ -1,5 +1,6 @@ """This file and its contents are licensed under the Apache License 2.0. Please see the included NOTICE for copyright information and LICENSE for a copy of the license. """ +from core.permissions import all_permissions from core.utils.common import load_func from django.conf import settings from rest_flex_fields import FlexFieldsModelSerializer @@ -100,6 +101,16 @@ class Meta(BaseUserSerializer.Meta): read_only_fields = ('email',) +class BaseWhoAmIUserSerializer(BaseUserSerializer): + permissions = serializers.SerializerMethodField() + + class Meta(BaseUserSerializer.Meta): + fields = BaseUserSerializer.Meta.fields + ('permissions',) + + def get_permissions(self, user) -> list[str]: + return [perm for _, perm in all_permissions] + + class UserSimpleSerializer(BaseUserSerializer): class Meta: model = User diff --git a/poetry.lock b/poetry.lock index 817348fffae0..57f3f39c238c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2136,7 +2136,7 @@ optional = false python-versions = ">=3.9,<4" groups = ["main"] files = [ - {file = "505bf93abcdab7e916722deed8cd9bfc75b65955.zip", hash = "sha256:afd107d00d7464a0ef0560b8b58f9be7ed0efd365d418b975691440b81574955"}, + {file = "1be62126853590fb4cdf3bf0c7a3dd92a2c00bcc.zip", hash = "sha256:64761e1dc0d8e1e4f4d1a51f39429c91a5e0ebe599e825bfa65df1602416c9a2"}, ] [package.dependencies] @@ -2164,7 +2164,7 @@ xmljson = "0.2.1" [package.source] type = "url" -url = "https://github.com/HumanSignal/label-studio-sdk/archive/505bf93abcdab7e916722deed8cd9bfc75b65955.zip" +url = "https://github.com/HumanSignal/label-studio-sdk/archive/1be62126853590fb4cdf3bf0c7a3dd92a2c00bcc.zip" [[package]] name = "launchdarkly-server-sdk" @@ -5109,4 +5109,4 @@ uwsgi = ["pyuwsgi", "uwsgitop"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4" -content-hash = "f135370458f7efe154a5d6135aa7e8fac266186c2be8eb6efe6bd56ea5488e6f" +content-hash = "a066081c988cd60bdda18fddfb90681e52cd2431bc52042728e86486febfbc5f" diff --git a/pyproject.toml b/pyproject.toml index f3c796f82a4b..d1cf18cf0f1c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -74,7 +74,7 @@ dependencies = [ "tldextract (>=5.1.3)", "uuid-utils (>=0.11.0,<1.0.0)", ## HumanSignal repo dependencies :start - "label-studio-sdk @ https://github.com/HumanSignal/label-studio-sdk/archive/505bf93abcdab7e916722deed8cd9bfc75b65955.zip", + "label-studio-sdk @ https://github.com/HumanSignal/label-studio-sdk/archive/1be62126853590fb4cdf3bf0c7a3dd92a2c00bcc.zip", ## HumanSignal repo dependencies :end ]