diff --git a/taiga/base/users/api.py b/taiga/base/users/api.py index 457ebbd6..4726be7f 100644 --- a/taiga/base/users/api.py +++ b/taiga/base/users/api.py @@ -5,6 +5,7 @@ import uuid from django.db.models.loading import get_model from django.db.models import Q from django.contrib.auth import logout, login, authenticate +from django.contrib.auth.models import Permission from django.utils.translation import ugettext_lazy as _ from rest_framework.decorators import list_route, action @@ -16,11 +17,16 @@ from djmail.template_mail import MagicMailBuilder from taiga.base import exceptions as exc from taiga.base.filters import FilterBackend -from taiga.base.api import ModelCrudViewSet, RetrieveModelMixin +from taiga.base.api import ModelCrudViewSet, RetrieveModelMixin, ModelListViewSet from .models import User, Role -from .serializers import UserSerializer, RecoverySerializer +from .serializers import UserSerializer, RecoverySerializer, PermissionSerializer +class PermissionsViewSet(ModelListViewSet): + permission_classes = (IsAuthenticated,) + serializer_class = PermissionSerializer + queryset = Permission.objects.all() + paginate_by = 0 class UsersViewSet(ModelCrudViewSet): diff --git a/taiga/base/users/serializers.py b/taiga/base/users/serializers.py index cd4a3d28..7f20d5d2 100644 --- a/taiga/base/users/serializers.py +++ b/taiga/base/users/serializers.py @@ -1,11 +1,18 @@ # -*- coding: utf-8 -*- from django.utils.translation import ugettext_lazy as _ +from django.contrib.auth.models import Permission from rest_framework import serializers from .models import User, Role +class PermissionSerializer(serializers.ModelSerializer): + class Meta: + model = Permission + fields = ['id', 'codename'] + + class UserSerializer(serializers.ModelSerializer): full_name = serializers.CharField(source='get_full_name', required=False) diff --git a/taiga/routers.py b/taiga/routers.py index c98b404c..453eb21c 100644 --- a/taiga/routers.py +++ b/taiga/routers.py @@ -2,7 +2,7 @@ from taiga.base import routers from taiga.base.auth.api import AuthViewSet -from taiga.base.users.api import UsersViewSet +from taiga.base.users.api import UsersViewSet, PermissionsViewSet from taiga.base.searches.api import SearchViewSet from taiga.base.domains.api import DomainViewSet, DomainMembersViewSet from taiga.base.resolver.api import ResolverViewSet @@ -23,6 +23,7 @@ router = routers.DefaultRouter(trailing_slash=False) # taiga.base.users router.register(r"users", UsersViewSet, base_name="users") +router.register(r"permissions", PermissionsViewSet, base_name="permissions") router.register(r"roles", RolesViewSet, base_name="roles") router.register(r"auth", AuthViewSet, base_name="auth")