authentik.core.api.application_entitlements

Application Roles API Viewset

 1"""Application Roles API Viewset"""
 2
 3from django.http import HttpRequest
 4from django.utils.translation import gettext_lazy as _
 5from rest_framework.exceptions import ValidationError
 6from rest_framework.viewsets import ModelViewSet
 7
 8from authentik.blueprints.v1.importer import SERIALIZER_CONTEXT_BLUEPRINT
 9from authentik.core.api.used_by import UsedByMixin
10from authentik.core.api.utils import ModelSerializer
11from authentik.core.models import (
12    Application,
13    ApplicationEntitlement,
14)
15
16
17class ApplicationEntitlementSerializer(ModelSerializer):
18    """ApplicationEntitlement Serializer"""
19
20    def validate_app(self, app: Application) -> Application:
21        """Ensure user has permission to view"""
22        request: HttpRequest = self.context.get("request")
23        if not request and SERIALIZER_CONTEXT_BLUEPRINT in self.context:
24            return app
25        user = request.user
26        if user.has_perm("view_application", app) or user.has_perm(
27            "authentik_core.view_application"
28        ):
29            return app
30        raise ValidationError(_("User does not have access to application."), code="invalid")
31
32    class Meta:
33        model = ApplicationEntitlement
34        fields = [
35            "pbm_uuid",
36            "name",
37            "app",
38            "attributes",
39        ]
40
41
42class ApplicationEntitlementViewSet(UsedByMixin, ModelViewSet):
43    """ApplicationEntitlement Viewset"""
44
45    queryset = ApplicationEntitlement.objects.all()
46    serializer_class = ApplicationEntitlementSerializer
47    search_fields = [
48        "pbm_uuid",
49        "name",
50        "app",
51        "attributes",
52    ]
53    filterset_fields = [
54        "pbm_uuid",
55        "name",
56        "app",
57    ]
58    ordering = ["name"]
class ApplicationEntitlementSerializer(authentik.core.api.utils.ModelSerializer):
18class ApplicationEntitlementSerializer(ModelSerializer):
19    """ApplicationEntitlement Serializer"""
20
21    def validate_app(self, app: Application) -> Application:
22        """Ensure user has permission to view"""
23        request: HttpRequest = self.context.get("request")
24        if not request and SERIALIZER_CONTEXT_BLUEPRINT in self.context:
25            return app
26        user = request.user
27        if user.has_perm("view_application", app) or user.has_perm(
28            "authentik_core.view_application"
29        ):
30            return app
31        raise ValidationError(_("User does not have access to application."), code="invalid")
32
33    class Meta:
34        model = ApplicationEntitlement
35        fields = [
36            "pbm_uuid",
37            "name",
38            "app",
39            "attributes",
40        ]

ApplicationEntitlement Serializer

def validate_app( self, app: authentik.core.models.Application) -> authentik.core.models.Application:
21    def validate_app(self, app: Application) -> Application:
22        """Ensure user has permission to view"""
23        request: HttpRequest = self.context.get("request")
24        if not request and SERIALIZER_CONTEXT_BLUEPRINT in self.context:
25            return app
26        user = request.user
27        if user.has_perm("view_application", app) or user.has_perm(
28            "authentik_core.view_application"
29        ):
30            return app
31        raise ValidationError(_("User does not have access to application."), code="invalid")

Ensure user has permission to view

class ApplicationEntitlementSerializer.Meta:
33    class Meta:
34        model = ApplicationEntitlement
35        fields = [
36            "pbm_uuid",
37            "name",
38            "app",
39            "attributes",
40        ]
fields = ['pbm_uuid', 'name', 'app', 'attributes']
class ApplicationEntitlementViewSet(authentik.core.api.used_by.UsedByMixin, rest_framework.viewsets.ModelViewSet):
43class ApplicationEntitlementViewSet(UsedByMixin, ModelViewSet):
44    """ApplicationEntitlement Viewset"""
45
46    queryset = ApplicationEntitlement.objects.all()
47    serializer_class = ApplicationEntitlementSerializer
48    search_fields = [
49        "pbm_uuid",
50        "name",
51        "app",
52        "attributes",
53    ]
54    filterset_fields = [
55        "pbm_uuid",
56        "name",
57        "app",
58    ]
59    ordering = ["name"]

ApplicationEntitlement Viewset

queryset = <InheritanceQuerySet []>
serializer_class = <class 'ApplicationEntitlementSerializer'>
search_fields = ['pbm_uuid', 'name', 'app', 'attributes']
filterset_fields = ['pbm_uuid', 'name', 'app']
ordering = ['name']
name = None
description = None
suffix = None
detail = None
basename = None