core: add user filter by superuser status
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		@ -5,7 +5,7 @@ from django.db.models.query import QuerySet
 | 
				
			|||||||
from django.http.response import Http404
 | 
					from django.http.response import Http404
 | 
				
			||||||
from django.urls import reverse_lazy
 | 
					from django.urls import reverse_lazy
 | 
				
			||||||
from django.utils.http import urlencode
 | 
					from django.utils.http import urlencode
 | 
				
			||||||
from django_filters.filters import CharFilter
 | 
					from django_filters.filters import BooleanFilter, CharFilter
 | 
				
			||||||
from django_filters.filterset import FilterSet
 | 
					from django_filters.filterset import FilterSet
 | 
				
			||||||
from drf_yasg.utils import swagger_auto_schema, swagger_serializer_method
 | 
					from drf_yasg.utils import swagger_auto_schema, swagger_serializer_method
 | 
				
			||||||
from guardian.utils import get_anonymous_user
 | 
					from guardian.utils import get_anonymous_user
 | 
				
			||||||
@ -110,6 +110,11 @@ class UsersFilter(FilterSet):
 | 
				
			|||||||
        method="filter_attributes",
 | 
					        method="filter_attributes",
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    is_superuser = BooleanFilter(
 | 
				
			||||||
 | 
					        field_name="ak_groups",
 | 
				
			||||||
 | 
					        lookup_expr="is_superuser"
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # pylint: disable=unused-argument
 | 
					    # pylint: disable=unused-argument
 | 
				
			||||||
    def filter_attributes(self, queryset, name, value):
 | 
					    def filter_attributes(self, queryset, name, value):
 | 
				
			||||||
        """Filter attributes by query args"""
 | 
					        """Filter attributes by query args"""
 | 
				
			||||||
@ -126,7 +131,7 @@ class UsersFilter(FilterSet):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    class Meta:
 | 
					    class Meta:
 | 
				
			||||||
        model = User
 | 
					        model = User
 | 
				
			||||||
        fields = ["username", "name", "is_active", "attributes"]
 | 
					        fields = ["username", "name", "is_active", "is_superuser", "attributes"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class UserViewSet(ModelViewSet):
 | 
					class UserViewSet(ModelViewSet):
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@ from rest_framework.decorators import action
 | 
				
			|||||||
from rest_framework.fields import CharField, DictField, IntegerField
 | 
					from rest_framework.fields import CharField, DictField, IntegerField
 | 
				
			||||||
from rest_framework.request import Request
 | 
					from rest_framework.request import Request
 | 
				
			||||||
from rest_framework.response import Response
 | 
					from rest_framework.response import Response
 | 
				
			||||||
from rest_framework.serializers import ModelSerializer, Serializer
 | 
					from rest_framework.serializers import ModelSerializer
 | 
				
			||||||
from rest_framework.viewsets import ReadOnlyModelViewSet
 | 
					from rest_framework.viewsets import ReadOnlyModelViewSet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from authentik.core.api.utils import PassiveSerializer, TypeCreateSerializer
 | 
					from authentik.core.api.utils import PassiveSerializer, TypeCreateSerializer
 | 
				
			||||||
 | 
				
			|||||||
@ -2021,6 +2021,11 @@ paths:
 | 
				
			|||||||
          description: ''
 | 
					          description: ''
 | 
				
			||||||
          required: false
 | 
					          required: false
 | 
				
			||||||
          type: string
 | 
					          type: string
 | 
				
			||||||
 | 
					        - name: is_superuser
 | 
				
			||||||
 | 
					          in: query
 | 
				
			||||||
 | 
					          description: ''
 | 
				
			||||||
 | 
					          required: false
 | 
				
			||||||
 | 
					          type: string
 | 
				
			||||||
        - name: attributes
 | 
					        - name: attributes
 | 
				
			||||||
          in: query
 | 
					          in: query
 | 
				
			||||||
          description: ''
 | 
					          description: ''
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										11
									
								
								web/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										11
									
								
								web/package-lock.json
									
									
									
										generated
									
									
									
								
							@ -61,12 +61,13 @@
 | 
				
			|||||||
                "typescript": "^4.2.4",
 | 
					                "typescript": "^4.2.4",
 | 
				
			||||||
                "webcomponent-qr-code": "^1.0.5",
 | 
					                "webcomponent-qr-code": "^1.0.5",
 | 
				
			||||||
                "yaml": "^1.10.2"
 | 
					                "yaml": "^1.10.2"
 | 
				
			||||||
            }
 | 
					            },
 | 
				
			||||||
 | 
					            "devDependencies": {}
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "api": {
 | 
					        "api": {
 | 
				
			||||||
            "name": "authentik-api",
 | 
					            "name": "authentik-api",
 | 
				
			||||||
            "version": "0.0.1",
 | 
					            "version": "1.0.0",
 | 
				
			||||||
            "dependencies": {
 | 
					            "devDependencies": {
 | 
				
			||||||
                "typescript": "^3.6"
 | 
					                "typescript": "^3.6"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
@ -74,6 +75,7 @@
 | 
				
			|||||||
            "version": "3.9.9",
 | 
					            "version": "3.9.9",
 | 
				
			||||||
            "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz",
 | 
					            "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz",
 | 
				
			||||||
            "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==",
 | 
					            "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==",
 | 
				
			||||||
 | 
					            "dev": true,
 | 
				
			||||||
            "bin": {
 | 
					            "bin": {
 | 
				
			||||||
                "tsc": "bin/tsc",
 | 
					                "tsc": "bin/tsc",
 | 
				
			||||||
                "tsserver": "bin/tsserver"
 | 
					                "tsserver": "bin/tsserver"
 | 
				
			||||||
@ -10683,7 +10685,8 @@
 | 
				
			|||||||
                "typescript": {
 | 
					                "typescript": {
 | 
				
			||||||
                    "version": "3.9.9",
 | 
					                    "version": "3.9.9",
 | 
				
			||||||
                    "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz",
 | 
					                    "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz",
 | 
				
			||||||
                    "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w=="
 | 
					                    "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==",
 | 
				
			||||||
 | 
					                    "dev": true
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user