diff --git a/apps/users/models/user.py b/apps/users/models/user.py index ce803064a..963b64b21 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -159,6 +159,14 @@ class RoleMixin: roles.append(str(_('User'))) return " | ".join(roles) + def current_org_roles(self): + roles = [] + if self.can_admin_current_org: + roles.append('Admin') + if self.can_audit_current_org: + roles.append('Auditor') + return roles + @property def is_superuser(self): if self.role == 'Admin': diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index 1f76c8955..fc511a941 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -181,19 +181,17 @@ class ResetOTPSerializer(serializers.Serializer): pass +class UserRoleSerializer(serializers.Serializer): + name = serializers.CharField(max_length=24) + display = serializers.CharField(max_length=64) + + class UserProfileSerializer(UserSerializer): admin_or_audit_orgs = UserOrgSerializer(many=True, read_only=True) + current_org_roles = serializers.ListField() class Meta(UserSerializer.Meta): - # fields = [ - # 'id', 'name', 'username', 'email', - # 'role', 'wechat', 'phone', 'mfa_level', - # 'comment', 'source', 'is_valid', 'is_expired', - # 'is_active', 'created_by', 'is_first_login', - # 'date_password_last_updated', 'date_expired', - # 'avatar_url', 'groups', 'admin_or_audit_orgs', - # ] fields = UserSerializer.Meta.fields + [ - 'admin_or_audit_orgs' + 'admin_or_audit_orgs', 'current_org_roles' ]