diff --git a/.bumpversion.cfg b/.bumpversion.cfg index f0e4b39cf206..f47514ad5b5c 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 2024.6.2 +current_version = 2024.6.3 tag = True commit = True parse = (?P\d+)\.(?P\d+)\.(?P\d+)(?:-(?P[a-zA-Z-]+)(?P[1-9]\\d*))? diff --git a/.github/workflows/ci-main.yml b/.github/workflows/ci-main.yml index 236e3063dd63..f70258dc7eb6 100644 --- a/.github/workflows/ci-main.yml +++ b/.github/workflows/ci-main.yml @@ -285,6 +285,7 @@ jobs: with: image-name: ghcr.io/goauthentik/dev-server - name: Comment on PR + if: ${{ steps.ev.outputs.shouldBuild == 'true' }} uses: ./.github/actions/comment-pr-instructions with: tag: ${{ steps.ev.outputs.imageMainTag }} diff --git a/.vscode/settings.json b/.vscode/settings.json index c48d27f575b3..f08edb9dab38 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -23,15 +23,16 @@ "todo-tree.tree.showCountsInTree": true, "todo-tree.tree.showBadges": true, "yaml.customTags": [ - "!Find sequence", - "!KeyOf scalar", - "!Context scalar", - "!Context sequence", - "!Format sequence", "!Condition sequence", - "!Env sequence", + "!Context scalar", + "!Enumerate sequence", "!Env scalar", - "!If sequence" + "!Find sequence", + "!Format sequence", + "!If sequence", + "!Index scalar", + "!KeyOf scalar", + "!Value scalar" ], "typescript.preferences.importModuleSpecifier": "non-relative", "typescript.preferences.importModuleSpecifierEnding": "index", diff --git a/authentik/__init__.py b/authentik/__init__.py index 018e8303c6e0..7d333d7960d8 100644 --- a/authentik/__init__.py +++ b/authentik/__init__.py @@ -2,7 +2,7 @@ from os import environ -__version__ = "2024.6.2" +__version__ = "2024.6.3" ENV_GIT_HASH_KEY = "GIT_BUILD_HASH" diff --git a/authentik/blueprints/management/commands/make_blueprint_schema.py b/authentik/blueprints/management/commands/make_blueprint_schema.py index 6e482665d58c..9b3f27b60200 100644 --- a/authentik/blueprints/management/commands/make_blueprint_schema.py +++ b/authentik/blueprints/management/commands/make_blueprint_schema.py @@ -113,16 +113,19 @@ def build(self): ) model_path = f"{model._meta.app_label}.{model._meta.model_name}" self.schema["properties"]["entries"]["items"]["oneOf"].append( - self.template_entry(model_path, serializer) + self.template_entry(model_path, model, serializer) ) - def template_entry(self, model_path: str, serializer: Serializer) -> dict: + def template_entry(self, model_path: str, model: type[Model], serializer: Serializer) -> dict: """Template entry for a single model""" model_schema = self.to_jsonschema(serializer) model_schema["required"] = [] def_name = f"model_{model_path}" def_path = f"#/$defs/{def_name}" self.schema["$defs"][def_name] = model_schema + def_name_perm = f"model_{model_path}_permissions" + def_path_perm = f"#/$defs/{def_name_perm}" + self.schema["$defs"][def_name_perm] = self.model_permissions(model) return { "type": "object", "required": ["model", "identifiers"], @@ -135,6 +138,7 @@ def template_entry(self, model_path: str, serializer: Serializer) -> dict: "default": "present", }, "conditions": {"type": "array", "items": {"type": "boolean"}}, + "permissions": {"$ref": def_path_perm}, "attrs": {"$ref": def_path}, "identifiers": {"$ref": def_path}, }, @@ -185,3 +189,20 @@ def to_jsonschema(self, serializer: Serializer) -> dict: if required: result["required"] = required return result + + def model_permissions(self, model: type[Model]) -> dict: + perms = [x[0] for x in model._meta.permissions] + for action in model._meta.default_permissions: + perms.append(f"{action}_{model._meta.model_name}") + return { + "type": "array", + "items": { + "type": "object", + "required": ["permission"], + "properties": { + "permission": {"type": "string", "enum": perms}, + "user": {"type": "integer"}, + "role": {"type": "string"}, + }, + }, + } diff --git a/authentik/blueprints/tests/fixtures/rbac_object.yaml b/authentik/blueprints/tests/fixtures/rbac_object.yaml new file mode 100644 index 000000000000..75c10eb8779c --- /dev/null +++ b/authentik/blueprints/tests/fixtures/rbac_object.yaml @@ -0,0 +1,24 @@ +version: 1 +entries: + - model: authentik_core.user + id: user + identifiers: + username: "%(id)s" + attrs: + name: "%(id)s" + - model: authentik_rbac.role + id: role + identifiers: + name: "%(id)s" + - model: authentik_flows.flow + identifiers: + slug: "%(id)s" + attrs: + designation: authentication + name: foo + title: foo + permissions: + - permission: view_flow + user: !KeyOf user + - permission: view_flow + role: !KeyOf role diff --git a/authentik/blueprints/tests/fixtures/rbac_role.yaml b/authentik/blueprints/tests/fixtures/rbac_role.yaml new file mode 100644 index 000000000000..0a145e26fa30 --- /dev/null +++ b/authentik/blueprints/tests/fixtures/rbac_role.yaml @@ -0,0 +1,8 @@ +version: 1 +entries: + - model: authentik_rbac.role + identifiers: + name: "%(id)s" + attrs: + permissions: + - authentik_blueprints.view_blueprintinstance diff --git a/authentik/blueprints/tests/fixtures/rbac_user.yaml b/authentik/blueprints/tests/fixtures/rbac_user.yaml new file mode 100644 index 000000000000..33cff0513903 --- /dev/null +++ b/authentik/blueprints/tests/fixtures/rbac_user.yaml @@ -0,0 +1,9 @@ +version: 1 +entries: + - model: authentik_core.user + identifiers: + username: "%(id)s" + attrs: + name: "%(id)s" + permissions: + - authentik_blueprints.view_blueprintinstance diff --git a/authentik/blueprints/tests/test_v1_rbac.py b/authentik/blueprints/tests/test_v1_rbac.py new file mode 100644 index 000000000000..87784a7e95c1 --- /dev/null +++ b/authentik/blueprints/tests/test_v1_rbac.py @@ -0,0 +1,57 @@ +"""Test blueprints v1""" + +from django.test import TransactionTestCase +from guardian.shortcuts import get_perms + +from authentik.blueprints.v1.importer import Importer +from authentik.core.models import User +from authentik.flows.models import Flow +from authentik.lib.generators import generate_id +from authentik.lib.tests.utils import load_fixture +from authentik.rbac.models import Role + + +class TestBlueprintsV1RBAC(TransactionTestCase): + """Test Blueprints rbac attribute""" + + def test_user_permission(self): + """Test permissions""" + uid = generate_id() + import_yaml = load_fixture("fixtures/rbac_user.yaml", id=uid) + + importer = Importer.from_string(import_yaml) + self.assertTrue(importer.validate()[0]) + self.assertTrue(importer.apply()) + user = User.objects.filter(username=uid).first() + self.assertIsNotNone(user) + self.assertTrue(user.has_perms(["authentik_blueprints.view_blueprintinstance"])) + + def test_role_permission(self): + """Test permissions""" + uid = generate_id() + import_yaml = load_fixture("fixtures/rbac_role.yaml", id=uid) + + importer = Importer.from_string(import_yaml) + self.assertTrue(importer.validate()[0]) + self.assertTrue(importer.apply()) + role = Role.objects.filter(name=uid).first() + self.assertIsNotNone(role) + self.assertEqual( + list(role.group.permissions.all().values_list("codename", flat=True)), + ["view_blueprintinstance"], + ) + + def test_object_permission(self): + """Test permissions""" + uid = generate_id() + import_yaml = load_fixture("fixtures/rbac_object.yaml", id=uid) + + importer = Importer.from_string(import_yaml) + self.assertTrue(importer.validate()[0]) + self.assertTrue(importer.apply()) + flow = Flow.objects.filter(slug=uid).first() + user = User.objects.filter(username=uid).first() + role = Role.objects.filter(name=uid).first() + self.assertIsNotNone(flow) + self.assertEqual(get_perms(user, flow), ["view_flow"]) + self.assertEqual(get_perms(role.group, flow), ["view_flow"]) diff --git a/authentik/blueprints/v1/common.py b/authentik/blueprints/v1/common.py index 21b923f2e79b..713bc32f35b5 100644 --- a/authentik/blueprints/v1/common.py +++ b/authentik/blueprints/v1/common.py @@ -1,7 +1,7 @@ """transfer common classes""" from collections import OrderedDict -from collections.abc import Iterable, Mapping +from collections.abc import Generator, Iterable, Mapping from copy import copy from dataclasses import asdict, dataclass, field, is_dataclass from enum import Enum @@ -58,6 +58,15 @@ class BlueprintEntryDesiredState(Enum): MUST_CREATED = "must_created" +@dataclass +class BlueprintEntryPermission: + """Describe object-level permissions""" + + permission: Union[str, "YAMLTag"] + user: Union[int, "YAMLTag", None] = field(default=None) + role: Union[str, "YAMLTag", None] = field(default=None) + + @dataclass class BlueprintEntry: """Single entry of a blueprint""" @@ -69,6 +78,7 @@ class BlueprintEntry: conditions: list[Any] = field(default_factory=list) identifiers: dict[str, Any] = field(default_factory=dict) attrs: dict[str, Any] | None = field(default_factory=dict) + permissions: list[BlueprintEntryPermission] = field(default_factory=list) id: str | None = None @@ -150,6 +160,17 @@ def get_model(self, blueprint: "Blueprint") -> str: """Get the blueprint model, with yaml tags resolved if present""" return str(self.tag_resolver(self.model, blueprint)) + def get_permissions( + self, blueprint: "Blueprint" + ) -> Generator[BlueprintEntryPermission, None, None]: + """Get permissions of this entry, with all yaml tags resolved""" + for perm in self.permissions: + yield BlueprintEntryPermission( + permission=self.tag_resolver(perm.permission, blueprint), + user=self.tag_resolver(perm.user, blueprint), + role=self.tag_resolver(perm.role, blueprint), + ) + def check_all_conditions_match(self, blueprint: "Blueprint") -> bool: """Check all conditions of this entry match (evaluate to True)""" return all(self.tag_resolver(self.conditions, blueprint)) diff --git a/authentik/blueprints/v1/importer.py b/authentik/blueprints/v1/importer.py index 92f008901fb3..79e8a288e899 100644 --- a/authentik/blueprints/v1/importer.py +++ b/authentik/blueprints/v1/importer.py @@ -16,6 +16,7 @@ from django.db.transaction import atomic from django.db.utils import IntegrityError from guardian.models import UserObjectPermission +from guardian.shortcuts import assign_perm from rest_framework.exceptions import ValidationError from rest_framework.serializers import BaseSerializer, Serializer from structlog.stdlib import BoundLogger, get_logger @@ -35,6 +36,7 @@ PropertyMapping, Provider, Source, + User, UserSourceConnection, ) from authentik.enterprise.license import LicenseKey @@ -54,11 +56,13 @@ from authentik.flows.models import FlowToken, Stage from authentik.lib.models import SerializerModel from authentik.lib.sentry import SentryIgnoredException +from authentik.lib.utils.reflection import get_apps from authentik.outposts.models import OutpostServiceConnection from authentik.policies.models import Policy, PolicyBindingModel from authentik.policies.reputation.models import Reputation from authentik.providers.oauth2.models import AccessToken, AuthorizationCode, RefreshToken from authentik.providers.scim.models import SCIMProviderGroup, SCIMProviderUser +from authentik.rbac.models import Role from authentik.sources.scim.models import SCIMSourceGroup, SCIMSourceUser from authentik.stages.authenticator_webauthn.models import WebAuthnDeviceType from authentik.tenants.models import Tenant @@ -136,6 +140,16 @@ def transaction_rollback(): pass +def rbac_models() -> dict: + models = {} + for app in get_apps(): + for model in app.get_models(): + if not is_model_allowed(model): + continue + models[model._meta.model_name] = app.label + return models + + class Importer: """Import Blueprint from raw dict or YAML/JSON""" @@ -154,7 +168,10 @@ def __init__(self, blueprint: Blueprint, context: dict | None = None): def default_context(self): """Default context""" - return {"goauthentik.io/enterprise/licensed": LicenseKey.get_total().is_valid()} + return { + "goauthentik.io/enterprise/licensed": LicenseKey.get_total().is_valid(), + "goauthentik.io/rbac/models": rbac_models(), + } @staticmethod def from_string(yaml_input: str, context: dict | None = None) -> "Importer": @@ -320,6 +337,15 @@ def _validate_single(self, entry: BlueprintEntry) -> BaseSerializer | None: ) from exc return serializer + def _apply_permissions(self, instance: Model, entry: BlueprintEntry): + """Apply object-level permissions for an entry""" + for perm in entry.get_permissions(self._import): + if perm.user is not None: + assign_perm(perm.permission, User.objects.get(pk=perm.user), instance) + if perm.role is not None: + role = Role.objects.get(pk=perm.role) + role.assign_permission(perm.permission, obj=instance) + def apply(self) -> bool: """Apply (create/update) models yaml, in database transaction""" try: @@ -384,6 +410,7 @@ def _apply_models(self, raise_errors=False) -> bool: if "pk" in entry.identifiers: self.__pk_map[entry.identifiers["pk"]] = instance.pk entry._state = BlueprintEntryState(instance) + self._apply_permissions(instance, entry) elif state == BlueprintEntryDesiredState.ABSENT: instance: Model | None = serializer.instance if instance.pk: diff --git a/authentik/core/api/applications.py b/authentik/core/api/applications.py index 6e6db93df56b..54c4e3f3c262 100644 --- a/authentik/core/api/applications.py +++ b/authentik/core/api/applications.py @@ -103,7 +103,12 @@ class Meta: class ApplicationViewSet(UsedByMixin, ModelViewSet): """Application Viewset""" - queryset = Application.objects.all().prefetch_related("provider").prefetch_related("policies") + queryset = ( + Application.objects.all() + .with_provider() + .prefetch_related("policies") + .prefetch_related("backchannel_providers") + ) serializer_class = ApplicationSerializer search_fields = [ "name", @@ -147,6 +152,15 @@ def _get_allowed_applications( applications.append(application) return applications + def _filter_applications_with_launch_url( + self, pagined_apps: Iterator[Application] + ) -> list[Application]: + applications = [] + for app in pagined_apps: + if app.get_launch_url(): + applications.append(app) + return applications + @extend_schema( parameters=[ OpenApiParameter( @@ -204,6 +218,11 @@ def check_access(self, request: Request, slug: str) -> Response: location=OpenApiParameter.QUERY, type=OpenApiTypes.INT, ), + OpenApiParameter( + name="only_with_launch_url", + location=OpenApiParameter.QUERY, + type=OpenApiTypes.BOOL, + ), ] ) def list(self, request: Request) -> Response: @@ -216,6 +235,10 @@ def list(self, request: Request) -> Response: if superuser_full_list and request.user.is_superuser: return super().list(request) + only_with_launch_url = str( + request.query_params.get("only_with_launch_url", "false") + ).lower() + queryset = self._filter_queryset_for_list(self.get_queryset()) paginator: Pagination = self.paginator paginated_apps = paginator.paginate_queryset(queryset, request) @@ -251,6 +274,10 @@ def list(self, request: Request) -> Response: allowed_applications, timeout=86400, ) + + if only_with_launch_url == "true": + allowed_applications = self._filter_applications_with_launch_url(allowed_applications) + serializer = self.get_serializer(allowed_applications, many=True) return self.get_paginated_response(serializer.data) diff --git a/authentik/core/api/users.py b/authentik/core/api/users.py index afa7fc908b14..5355c0535acd 100644 --- a/authentik/core/api/users.py +++ b/authentik/core/api/users.py @@ -5,6 +5,7 @@ from typing import Any from django.contrib.auth import update_session_auth_hash +from django.contrib.auth.models import Permission from django.contrib.sessions.backends.cache import KEY_PREFIX from django.core.cache import cache from django.db.models.functions import ExtractHour @@ -33,15 +34,21 @@ ) from guardian.shortcuts import get_objects_for_user from rest_framework.decorators import action -from rest_framework.fields import CharField, IntegerField, ListField, SerializerMethodField +from rest_framework.exceptions import ValidationError +from rest_framework.fields import ( + BooleanField, + CharField, + ChoiceField, + DateTimeField, + IntegerField, + ListField, + SerializerMethodField, +) from rest_framework.request import Request from rest_framework.response import Response from rest_framework.serializers import ( - BooleanField, - DateTimeField, ListSerializer, PrimaryKeyRelatedField, - ValidationError, ) from rest_framework.validators import UniqueValidator from rest_framework.viewsets import ModelViewSet @@ -78,6 +85,7 @@ from authentik.flows.views.executor import QS_KEY_TOKEN from authentik.lib.avatars import get_avatar from authentik.rbac.decorators import permission_required +from authentik.rbac.models import get_permission_choices from authentik.stages.email.models import EmailStage from authentik.stages.email.tasks import send_mails from authentik.stages.email.utils import TemplateEmailMessage @@ -141,12 +149,19 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if SERIALIZER_CONTEXT_BLUEPRINT in self.context: self.fields["password"] = CharField(required=False, allow_null=True) + self.fields["permissions"] = ListField( + required=False, child=ChoiceField(choices=get_permission_choices()) + ) def create(self, validated_data: dict) -> User: """If this serializer is used in the blueprint context, we allow for directly setting a password. However should be done via the `set_password` method instead of directly setting it like rest_framework.""" password = validated_data.pop("password", None) + permissions = Permission.objects.filter( + codename__in=[x.split(".")[1] for x in validated_data.pop("permissions", [])] + ) + validated_data["user_permissions"] = permissions instance: User = super().create(validated_data) self._set_password(instance, password) return instance @@ -155,6 +170,10 @@ def update(self, instance: User, validated_data: dict) -> User: """Same as `create` above, set the password directly if we're in a blueprint context""" password = validated_data.pop("password", None) + permissions = Permission.objects.filter( + codename__in=[x.split(".")[1] for x in validated_data.pop("permissions", [])] + ) + validated_data["user_permissions"] = permissions instance = super().update(instance, validated_data) self._set_password(instance, password) return instance diff --git a/authentik/core/migrations/0038_source_authentik_c_enabled_d72365_idx.py b/authentik/core/migrations/0038_source_authentik_c_enabled_d72365_idx.py new file mode 100644 index 000000000000..ba72ffdee629 --- /dev/null +++ b/authentik/core/migrations/0038_source_authentik_c_enabled_d72365_idx.py @@ -0,0 +1,19 @@ +# Generated by Django 5.0.7 on 2024-07-22 13:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_core", "0037_remove_source_property_mappings"), + ("authentik_flows", "0027_auto_20231028_1424"), + ("authentik_policies", "0011_policybinding_failure_result_and_more"), + ] + + operations = [ + migrations.AddIndex( + model_name="source", + index=models.Index(fields=["enabled"], name="authentik_c_enabled_d72365_idx"), + ), + ] diff --git a/authentik/core/models.py b/authentik/core/models.py index d0a70d6bbf8d..deaa9df92356 100644 --- a/authentik/core/models.py +++ b/authentik/core/models.py @@ -11,6 +11,7 @@ from django.contrib.auth.models import UserManager as DjangoUserManager from django.db import models from django.db.models import Q, QuerySet, options +from django.db.models.constants import LOOKUP_SEP from django.http import HttpRequest from django.utils.functional import SimpleLazyObject, cached_property from django.utils.timezone import now @@ -461,6 +462,16 @@ class Meta: abstract = True +class ApplicationQuerySet(QuerySet): + def with_provider(self) -> "QuerySet[Application]": + qs = self.select_related("provider") + for subclass in Provider.objects.get_queryset()._get_subclasses_recurse(Provider): + if LOOKUP_SEP in subclass: + continue + qs = qs.select_related(f"provider__{subclass}") + return qs + + class Application(SerializerModel, PolicyBindingModel): """Every Application which uses authentik for authentication/identification/authorization needs an Application record. Other authentication types can subclass this Model to @@ -492,6 +503,8 @@ class Application(SerializerModel, PolicyBindingModel): meta_description = models.TextField(default="", blank=True) meta_publisher = models.TextField(default="", blank=True) + objects = ApplicationQuerySet.as_manager() + @property def serializer(self) -> Serializer: from authentik.core.api.applications import ApplicationSerializer @@ -528,16 +541,19 @@ def get_launch_url(self, user: Optional["User"] = None) -> str | None: return url def get_provider(self) -> Provider | None: - """Get casted provider instance""" + """Get casted provider instance. Needs Application queryset with_provider""" if not self.provider: return None - # if the Application class has been cache, self.provider is set - # but doing a direct query lookup will fail. - # In that case, just return None - try: - return Provider.objects.get_subclass(pk=self.provider.pk) - except Provider.DoesNotExist: - return None + + for subclass in Provider.objects.get_queryset()._get_subclasses_recurse(Provider): + # We don't care about recursion, skip nested models + if LOOKUP_SEP in subclass: + continue + try: + return getattr(self.provider, subclass) + except AttributeError: + pass + return None def __str__(self): return str(self.name) @@ -683,6 +699,11 @@ class Meta: "name", ] ), + models.Index( + fields=[ + "enabled", + ] + ), ] diff --git a/authentik/enterprise/providers/rac/api/connection_tokens.py b/authentik/enterprise/providers/rac/api/connection_tokens.py index 3455112cf2c4..3bbf6bcdae01 100644 --- a/authentik/enterprise/providers/rac/api/connection_tokens.py +++ b/authentik/enterprise/providers/rac/api/connection_tokens.py @@ -34,6 +34,12 @@ class Meta: ] +class ConnectionTokenOwnerFilter(OwnerFilter): + """Owner filter for connection tokens (checks session's user)""" + + owner_key = "session__user" + + class ConnectionTokenViewSet( mixins.RetrieveModelMixin, mixins.UpdateModelMixin, @@ -50,4 +56,9 @@ class ConnectionTokenViewSet( search_fields = ["endpoint__name", "provider__name"] ordering = ["endpoint__name", "provider__name"] permission_classes = [OwnerSuperuserPermissions] - filter_backends = [OwnerFilter, DjangoFilterBackend, OrderingFilter, SearchFilter] + filter_backends = [ + ConnectionTokenOwnerFilter, + DjangoFilterBackend, + OrderingFilter, + SearchFilter, + ] diff --git a/authentik/providers/saml/api/property_mappings.py b/authentik/providers/saml/api/property_mappings.py index 5108de995473..346219568efc 100644 --- a/authentik/providers/saml/api/property_mappings.py +++ b/authentik/providers/saml/api/property_mappings.py @@ -23,6 +23,7 @@ class SAMLPropertyMappingFilter(PropertyMappingFilterSet): class Meta(PropertyMappingFilterSet.Meta): model = SAMLPropertyMapping + fields = PropertyMappingFilterSet.Meta.fields + ["saml_name", "friendly_name"] class SAMLPropertyMappingViewSet(UsedByMixin, ModelViewSet): diff --git a/authentik/providers/saml/views/metadata.py b/authentik/providers/saml/views/metadata.py index e76b99780451..73437df09030 100644 --- a/authentik/providers/saml/views/metadata.py +++ b/authentik/providers/saml/views/metadata.py @@ -1,7 +1,7 @@ """metadata redirect""" from django.http import Http404, HttpRequest, HttpResponse -from django.shortcuts import get_object_or_404, redirect +from django.shortcuts import redirect from django.urls import reverse from django.views import View @@ -12,7 +12,9 @@ class MetadataDownload(View): """Redirect to metadata download""" def dispatch(self, request: HttpRequest, application_slug: str) -> HttpResponse: - app: Application = get_object_or_404(Application, slug=application_slug) + app = Application.objects.filter(slug=application_slug).with_provider().first() + if not app: + raise Http404 provider = app.get_provider() if not provider: raise Http404 diff --git a/authentik/rbac/api/rbac.py b/authentik/rbac/api/rbac.py index e00ea5ec514a..397d8696d6df 100644 --- a/authentik/rbac/api/rbac.py +++ b/authentik/rbac/api/rbac.py @@ -59,6 +59,12 @@ class Meta: ] +class PermissionAssignResultSerializer(PassiveSerializer): + """Result from assigning permissions to a user/role""" + + id = CharField() + + class PermissionFilter(FilterSet): """Filter permissions""" diff --git a/authentik/rbac/api/rbac_assigned_by_roles.py b/authentik/rbac/api/rbac_assigned_by_roles.py index fab814f17502..04492703b064 100644 --- a/authentik/rbac/api/rbac_assigned_by_roles.py +++ b/authentik/rbac/api/rbac_assigned_by_roles.py @@ -16,7 +16,7 @@ from authentik.core.api.utils import ModelSerializer, PassiveSerializer from authentik.policies.event_matcher.models import model_choices -from authentik.rbac.api.rbac import PermissionAssignSerializer +from authentik.rbac.api.rbac import PermissionAssignResultSerializer, PermissionAssignSerializer from authentik.rbac.decorators import permission_required from authentik.rbac.models import Role @@ -28,7 +28,7 @@ class RoleObjectPermissionSerializer(ModelSerializer): model = ReadOnlyField(source="content_type.model") codename = ReadOnlyField(source="permission.codename") name = ReadOnlyField(source="permission.name") - object_pk = ReadOnlyField() + object_pk = CharField() class Meta: model = GroupObjectPermission @@ -88,8 +88,9 @@ class RoleAssignedPermissionViewSet(ListModelMixin, GenericViewSet): @extend_schema( request=PermissionAssignSerializer(), responses={ - 204: OpenApiResponse(description="Successfully assigned"), + 200: PermissionAssignResultSerializer(many=True), }, + operation_id="rbac_permissions_assigned_by_roles_assign", ) @action(methods=["POST"], detail=True, pagination_class=None, filter_backends=[]) def assign(self, request: Request, *args, **kwargs) -> Response: @@ -98,10 +99,12 @@ def assign(self, request: Request, *args, **kwargs) -> Response: role: Role = self.get_object() data = PermissionAssignSerializer(data=request.data) data.is_valid(raise_exception=True) + ids = [] with atomic(): for perm in data.validated_data["permissions"]: - assign_perm(perm, role.group, data.validated_data["model_instance"]) - return Response(status=204) + assigned_perm = assign_perm(perm, role.group, data.validated_data["model_instance"]) + ids.append(PermissionAssignResultSerializer(instance={"id": assigned_perm.pk}).data) + return Response(ids, status=200) @permission_required("authentik_rbac.unassign_role_permissions") @extend_schema( diff --git a/authentik/rbac/api/rbac_assigned_by_users.py b/authentik/rbac/api/rbac_assigned_by_users.py index 403fac1df104..8a225978080d 100644 --- a/authentik/rbac/api/rbac_assigned_by_users.py +++ b/authentik/rbac/api/rbac_assigned_by_users.py @@ -9,7 +9,7 @@ from guardian.shortcuts import assign_perm, remove_perm from rest_framework.decorators import action from rest_framework.exceptions import ValidationError -from rest_framework.fields import BooleanField, ReadOnlyField +from rest_framework.fields import BooleanField, CharField, ReadOnlyField from rest_framework.mixins import ListModelMixin from rest_framework.request import Request from rest_framework.response import Response @@ -19,7 +19,7 @@ from authentik.core.api.utils import ModelSerializer from authentik.core.models import User, UserTypes from authentik.policies.event_matcher.models import model_choices -from authentik.rbac.api.rbac import PermissionAssignSerializer +from authentik.rbac.api.rbac import PermissionAssignResultSerializer, PermissionAssignSerializer from authentik.rbac.decorators import permission_required @@ -30,7 +30,7 @@ class UserObjectPermissionSerializer(ModelSerializer): model = ReadOnlyField(source="content_type.model") codename = ReadOnlyField(source="permission.codename") name = ReadOnlyField(source="permission.name") - object_pk = ReadOnlyField() + object_pk = CharField() class Meta: model = UserObjectPermission @@ -90,8 +90,9 @@ class UserAssignedPermissionViewSet(ListModelMixin, GenericViewSet): @extend_schema( request=PermissionAssignSerializer(), responses={ - 204: OpenApiResponse(description="Successfully assigned"), + 200: PermissionAssignResultSerializer(many=True), }, + operation_id="rbac_permissions_assigned_by_users_assign", ) @action(methods=["POST"], detail=True, pagination_class=None, filter_backends=[]) def assign(self, request: Request, *args, **kwargs) -> Response: @@ -101,10 +102,12 @@ def assign(self, request: Request, *args, **kwargs) -> Response: raise ValidationError("Permissions cannot be assigned to an internal service account.") data = PermissionAssignSerializer(data=request.data) data.is_valid(raise_exception=True) + ids = [] with atomic(): for perm in data.validated_data["permissions"]: - assign_perm(perm, user, data.validated_data["model_instance"]) - return Response(status=204) + assigned_perm = assign_perm(perm, user, data.validated_data["model_instance"]) + ids.append(PermissionAssignResultSerializer(instance={"id": assigned_perm.pk}).data) + return Response(ids, status=200) @permission_required("authentik_core.unassign_user_permissions") @extend_schema( diff --git a/authentik/rbac/api/rbac_roles.py b/authentik/rbac/api/rbac_roles.py index 60542dfc4f5f..bd84923b1400 100644 --- a/authentik/rbac/api/rbac_roles.py +++ b/authentik/rbac/api/rbac_roles.py @@ -6,7 +6,12 @@ from guardian.models import GroupObjectPermission from guardian.shortcuts import get_objects_for_group from rest_framework.fields import SerializerMethodField -from rest_framework.mixins import ListModelMixin +from rest_framework.mixins import ( + DestroyModelMixin, + ListModelMixin, + RetrieveModelMixin, + UpdateModelMixin, +) from rest_framework.viewsets import GenericViewSet from authentik.api.pagination import SmallerPagination @@ -64,10 +69,12 @@ class Meta(RoleObjectPermissionSerializer.Meta): class RolePermissionFilter(FilterSet): """Role permission filter""" - uuid = UUIDFilter("group__role__uuid", required=True) + uuid = UUIDFilter("group__role__uuid") -class RolePermissionViewSet(ListModelMixin, GenericViewSet): +class RolePermissionViewSet( + ListModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet +): """Get a role's assigned object permissions""" serializer_class = ExtraRoleObjectPermissionSerializer diff --git a/authentik/rbac/api/rbac_users.py b/authentik/rbac/api/rbac_users.py index 95a31de7687f..8951a5df8cf8 100644 --- a/authentik/rbac/api/rbac_users.py +++ b/authentik/rbac/api/rbac_users.py @@ -6,7 +6,12 @@ from guardian.models import UserObjectPermission from guardian.shortcuts import get_objects_for_user from rest_framework.fields import SerializerMethodField -from rest_framework.mixins import ListModelMixin +from rest_framework.mixins import ( + DestroyModelMixin, + ListModelMixin, + RetrieveModelMixin, + UpdateModelMixin, +) from rest_framework.viewsets import GenericViewSet from authentik.api.pagination import SmallerPagination @@ -64,10 +69,12 @@ class Meta(UserObjectPermissionSerializer.Meta): class UserPermissionFilter(FilterSet): """User-assigned permission filter""" - user_id = NumberFilter("user__id", required=True) + user_id = NumberFilter("user__id") -class UserPermissionViewSet(ListModelMixin, GenericViewSet): +class UserPermissionViewSet( + ListModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet +): """Get a users's assigned object permissions""" serializer_class = ExtraUserObjectPermissionSerializer diff --git a/authentik/rbac/api/roles.py b/authentik/rbac/api/roles.py index 86b2f7cd65fa..a9c1fa7cb0c2 100644 --- a/authentik/rbac/api/roles.py +++ b/authentik/rbac/api/roles.py @@ -1,15 +1,44 @@ """RBAC Roles""" +from django.contrib.auth.models import Permission +from rest_framework.fields import ( + ChoiceField, + ListField, +) from rest_framework.viewsets import ModelViewSet +from authentik.blueprints.v1.importer import SERIALIZER_CONTEXT_BLUEPRINT from authentik.core.api.used_by import UsedByMixin from authentik.core.api.utils import ModelSerializer -from authentik.rbac.models import Role +from authentik.rbac.models import Role, get_permission_choices class RoleSerializer(ModelSerializer): """Role serializer""" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if SERIALIZER_CONTEXT_BLUEPRINT in self.context: + self.fields["permissions"] = ListField( + required=False, child=ChoiceField(choices=get_permission_choices()) + ) + + def create(self, validated_data: dict) -> Role: + permissions = Permission.objects.filter( + codename__in=[x.split(".")[1] for x in validated_data.pop("permissions", [])] + ) + instance: Role = super().create(validated_data) + instance.group.permissions.set(permissions) + return instance + + def update(self, instance: Role, validated_data: dict) -> Role: + permissions = Permission.objects.filter( + codename__in=[x.split(".")[1] for x in validated_data.pop("permissions", [])] + ) + instance: Role = super().update(instance, validated_data) + instance.group.permissions.set(permissions) + return instance + class Meta: model = Role fields = ["pk", "name"] diff --git a/authentik/rbac/models.py b/authentik/rbac/models.py index 87ea23dcb434..80d744940368 100644 --- a/authentik/rbac/models.py +++ b/authentik/rbac/models.py @@ -2,6 +2,7 @@ from uuid import uuid4 +from django.contrib.auth.models import Permission from django.db import models from django.db.transaction import atomic from django.utils.translation import gettext_lazy as _ @@ -11,6 +12,26 @@ from authentik.lib.models import SerializerModel +def get_permissions(): + return ( + Permission.objects.all() + .select_related("content_type") + .filter( + content_type__app_label__startswith="authentik", + ) + ) + + +def get_permission_choices() -> list[tuple[str, str]]: + return [ + ( + f"{x.content_type.app_label}.{x.codename}", + f"{x.content_type.app_label}.{x.codename}", + ) + for x in get_permissions() + ] + + class Role(SerializerModel): """RBAC role, which can have different permissions (both global and per-object) attached to it.""" diff --git a/authentik/rbac/tests/test_api_assigned_by_roles.py b/authentik/rbac/tests/test_api_assigned_by_roles.py index a7ea300721a9..31619178346d 100644 --- a/authentik/rbac/tests/test_api_assigned_by_roles.py +++ b/authentik/rbac/tests/test_api_assigned_by_roles.py @@ -73,7 +73,7 @@ def test_assign_global(self): "permissions": ["authentik_stages_invitation.view_invitation"], }, ) - self.assertEqual(res.status_code, 204) + self.assertEqual(res.status_code, 200) self.assertTrue(self.user.has_perm("authentik_stages_invitation.view_invitation")) def test_assign_object(self): @@ -96,7 +96,7 @@ def test_assign_object(self): "object_pk": str(inv.pk), }, ) - self.assertEqual(res.status_code, 204) + self.assertEqual(res.status_code, 200) self.assertTrue( self.user.has_perm( "authentik_stages_invitation.view_invitation", diff --git a/authentik/rbac/tests/test_api_assigned_by_users.py b/authentik/rbac/tests/test_api_assigned_by_users.py index 0d35ab845bc6..191bf0f60271 100644 --- a/authentik/rbac/tests/test_api_assigned_by_users.py +++ b/authentik/rbac/tests/test_api_assigned_by_users.py @@ -79,7 +79,7 @@ def test_assign_global(self): "permissions": ["authentik_stages_invitation.view_invitation"], }, ) - self.assertEqual(res.status_code, 204) + self.assertEqual(res.status_code, 200) self.assertTrue(self.user.has_perm("authentik_stages_invitation.view_invitation")) def test_assign_global_internal_sa(self): @@ -121,7 +121,7 @@ def test_assign_object(self): "object_pk": str(inv.pk), }, ) - self.assertEqual(res.status_code, 204) + self.assertEqual(res.status_code, 200) self.assertTrue( self.user.has_perm( "authentik_stages_invitation.view_invitation", diff --git a/authentik/rbac/tests/test_api_permissions_roles.py b/authentik/rbac/tests/test_api_permissions_roles.py index 3cd050f35bba..a849450bd373 100644 --- a/authentik/rbac/tests/test_api_permissions_roles.py +++ b/authentik/rbac/tests/test_api_permissions_roles.py @@ -32,7 +32,7 @@ def test_list(self): ) self.role.assign_permission("authentik_stages_invitation.view_invitation", obj=inv) res = self.client.get(reverse("authentik_api:permissions-roles-list")) - self.assertEqual(res.status_code, 400) + self.assertEqual(res.status_code, 200) def test_list_role(self): """Test list of all permissions""" diff --git a/authentik/rbac/tests/test_api_permissions_users.py b/authentik/rbac/tests/test_api_permissions_users.py index 3386b8ed13f5..882a2f6acc54 100644 --- a/authentik/rbac/tests/test_api_permissions_users.py +++ b/authentik/rbac/tests/test_api_permissions_users.py @@ -33,7 +33,7 @@ def test_list(self): ) assign_perm("authentik_stages_invitation.view_invitation", self.user, inv) res = self.client.get(reverse("authentik_api:permissions-users-list")) - self.assertEqual(res.status_code, 400) + self.assertEqual(res.status_code, 200) def test_list_role(self): """Test list of all permissions""" diff --git a/authentik/root/settings.py b/authentik/root/settings.py index 217733566c49..a824ded93f82 100644 --- a/authentik/root/settings.py +++ b/authentik/root/settings.py @@ -516,7 +516,7 @@ def _update_settings(app_path: str): REST_FRAMEWORK["DEFAULT_RENDERER_CLASSES"].append( "rest_framework.renderers.BrowsableAPIRenderer" ) - SHARED_APPS.insert(SHARED_APPS.index("django.contrib.staticfiles"),"daphne") + SHARED_APPS.insert(SHARED_APPS.index("django.contrib.staticfiles"), "daphne") TENANT_APPS.append("authentik.core") diff --git a/authentik/sources/oauth/types/facebook.py b/authentik/sources/oauth/types/facebook.py index 1d1ac9d42a58..f871af64bdd2 100644 --- a/authentik/sources/oauth/types/facebook.py +++ b/authentik/sources/oauth/types/facebook.py @@ -2,9 +2,6 @@ from typing import Any -from facebook import GraphAPI - -from authentik.sources.oauth.clients.oauth2 import OAuth2Client from authentik.sources.oauth.types.registry import SourceType, registry from authentik.sources.oauth.views.callback import OAuthCallback from authentik.sources.oauth.views.redirect import OAuthRedirect @@ -19,19 +16,9 @@ def get_additional_parameters(self, source): # pragma: no cover } -class FacebookOAuth2Client(OAuth2Client): - """Facebook OAuth2 Client""" - - def get_profile_info(self, token: dict[str, str]) -> dict[str, Any] | None: - api = GraphAPI(access_token=token["access_token"]) - return api.get_object("me", fields="id,name,email") - - class FacebookOAuth2Callback(OAuthCallback): """Facebook OAuth2 Callback""" - client_class = FacebookOAuth2Client - def get_user_enroll_context( self, info: dict[str, Any], diff --git a/authentik/sources/scim/models.py b/authentik/sources/scim/models.py index 8bc753077c58..43101b09866f 100644 --- a/authentik/sources/scim/models.py +++ b/authentik/sources/scim/models.py @@ -1,7 +1,6 @@ """SCIM Source""" from typing import Any -from uuid import uuid4 from django.db import models from django.templatetags.static import static @@ -20,8 +19,6 @@ class SCIMSource(Source): @property def service_account_identifier(self) -> str: - if not self.pk: - self.pk = uuid4() return f"ak-source-scim-{self.pk}" @property diff --git a/authentik/sources/scim/signals.py b/authentik/sources/scim/signals.py index 8136a421a014..1875f7382842 100644 --- a/authentik/sources/scim/signals.py +++ b/authentik/sources/scim/signals.py @@ -1,41 +1,44 @@ from django.db.models import Model -from django.db.models.signals import pre_delete, pre_save +from django.db.models.signals import post_delete, post_save from django.dispatch import receiver from authentik.core.models import USER_PATH_SYSTEM_PREFIX, Token, TokenIntents, User, UserTypes +from authentik.events.middleware import audit_ignore from authentik.sources.scim.models import SCIMSource USER_PATH_SOURCE_SCIM = USER_PATH_SYSTEM_PREFIX + "/sources/scim" -@receiver(pre_save, sender=SCIMSource) -def scim_source_pre_save(sender: type[Model], instance: SCIMSource, **_): +@receiver(post_save, sender=SCIMSource) +def scim_source_post_save(sender: type[Model], instance: SCIMSource, created: bool, **_): """Create service account before source is saved""" - # .service_account_identifier will auto-assign a primary key uuid to the source - # if none is set yet, just so we can get the identifier before we save identifier = instance.service_account_identifier - user = User.objects.create( + user, _ = User.objects.update_or_create( username=identifier, - name=f"SCIM Source {instance.name} Service-Account", - type=UserTypes.INTERNAL_SERVICE_ACCOUNT, - path=USER_PATH_SOURCE_SCIM, + defaults={ + "name": f"SCIM Source {instance.name} Service-Account", + "type": UserTypes.INTERNAL_SERVICE_ACCOUNT, + "path": USER_PATH_SOURCE_SCIM, + }, ) - token = Token.objects.create( - user=user, + token, token_created = Token.objects.update_or_create( identifier=identifier, - intent=TokenIntents.INTENT_API, - expiring=False, - managed=f"goauthentik.io/sources/scim/{instance.pk}", + defaults={ + "user": user, + "intent": TokenIntents.INTENT_API, + "expiring": False, + "managed": f"goauthentik.io/sources/scim/{instance.pk}", + }, ) - instance.token = token + if created or token_created: + with audit_ignore(): + instance.token = token + instance.save() -@receiver(pre_delete, sender=SCIMSource) -def scim_source_pre_delete(sender: type[Model], instance: SCIMSource, **_): - """Delete SCIM Source service account before deleting source""" - Token.objects.filter( - identifier=instance.service_account_identifier, intent=TokenIntents.INTENT_API - ).delete() +@receiver(post_delete, sender=SCIMSource) +def scim_source_post_delete(sender: type[Model], instance: SCIMSource, **_): + """Delete SCIM Source service account after deleting source""" User.objects.filter( username=instance.service_account_identifier, type=UserTypes.INTERNAL_SERVICE_ACCOUNT ).delete() diff --git a/blueprints/default/rbac-role-read-only.yaml b/blueprints/default/rbac-role-read-only.yaml new file mode 100644 index 000000000000..6327370ae31c --- /dev/null +++ b/blueprints/default/rbac-role-read-only.yaml @@ -0,0 +1,28 @@ +metadata: + name: Default - RBAC - Read-only +version: 1 +entries: + - model: authentik_rbac.role + identifiers: + name: authentik Read-only + id: role + attrs: + permissions: !Enumerate [ + !Context goauthentik.io/rbac/models, + SEQ, + !Format [ + "%s.view_%s", + !Value 0, + !Index 0, + ], + ] + - model: authentik_core.group + identifiers: + name: authentik Read-only + attrs: + roles: + - !KeyOf role + is_superuser: false + attributes: + notes: | + An group with an auto-generated role that allows read-only permissions on all objects. diff --git a/blueprints/schema.json b/blueprints/schema.json index f0cbd4a8248d..eeb2d772dd73 100644 --- a/blueprints/schema.json +++ b/blueprints/schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema", "$id": "https://goauthentik.io/blueprints/schema.json", "type": "object", - "title": "authentik 2024.6.2 Blueprint schema", + "title": "authentik 2024.6.3 Blueprint schema", "required": [ "version", "entries" @@ -70,6 +70,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_tenants.domain_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_tenants.domain" }, @@ -107,6 +110,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_crypto.certificatekeypair_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_crypto.certificatekeypair" }, @@ -144,6 +150,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_flows.flow_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_flows.flow" }, @@ -181,6 +190,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_flows.flowstagebinding_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_flows.flowstagebinding" }, @@ -218,6 +230,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_outposts.dockerserviceconnection_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_outposts.dockerserviceconnection" }, @@ -255,6 +270,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_outposts.kubernetesserviceconnection_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_outposts.kubernetesserviceconnection" }, @@ -292,6 +310,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_outposts.outpost_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_outposts.outpost" }, @@ -329,6 +350,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_policies_dummy.dummypolicy_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_policies_dummy.dummypolicy" }, @@ -366,6 +390,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_policies_event_matcher.eventmatcherpolicy_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_policies_event_matcher.eventmatcherpolicy" }, @@ -403,6 +430,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_policies_expiry.passwordexpirypolicy_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_policies_expiry.passwordexpirypolicy" }, @@ -440,6 +470,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_policies_expression.expressionpolicy_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_policies_expression.expressionpolicy" }, @@ -477,6 +510,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_policies_password.passwordpolicy_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_policies_password.passwordpolicy" }, @@ -514,6 +550,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_policies_reputation.reputationpolicy_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_policies_reputation.reputationpolicy" }, @@ -551,6 +590,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_policies.policybinding_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_policies.policybinding" }, @@ -588,6 +630,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_ldap.ldapprovider_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_ldap.ldapprovider" }, @@ -625,6 +670,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_oauth2.scopemapping_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_oauth2.scopemapping" }, @@ -662,6 +710,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_oauth2.oauth2provider_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_oauth2.oauth2provider" }, @@ -699,6 +750,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_proxy.proxyprovider_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_proxy.proxyprovider" }, @@ -736,6 +790,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_radius.radiusprovider_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_radius.radiusprovider" }, @@ -773,6 +830,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_radius.radiusproviderpropertymapping_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_radius.radiusproviderpropertymapping" }, @@ -810,6 +870,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_saml.samlprovider_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_saml.samlprovider" }, @@ -847,6 +910,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_saml.samlpropertymapping_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_saml.samlpropertymapping" }, @@ -884,6 +950,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_scim.scimprovider_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_scim.scimprovider" }, @@ -921,6 +990,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_scim.scimmapping_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_scim.scimmapping" }, @@ -958,6 +1030,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_rbac.role_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_rbac.role" }, @@ -995,6 +1070,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_sources_ldap.ldapsource_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_sources_ldap.ldapsource" }, @@ -1032,6 +1110,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_sources_ldap.ldapsourcepropertymapping_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_sources_ldap.ldapsourcepropertymapping" }, @@ -1069,6 +1150,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_sources_oauth.oauthsource_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_sources_oauth.oauthsource" }, @@ -1106,6 +1190,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_sources_oauth.useroauthsourceconnection_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_sources_oauth.useroauthsourceconnection" }, @@ -1143,6 +1230,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_sources_plex.plexsource_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_sources_plex.plexsource" }, @@ -1180,6 +1270,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_sources_plex.plexsourceconnection_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_sources_plex.plexsourceconnection" }, @@ -1217,6 +1310,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_sources_saml.samlsource_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_sources_saml.samlsource" }, @@ -1254,6 +1350,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_sources_saml.usersamlsourceconnection_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_sources_saml.usersamlsourceconnection" }, @@ -1291,6 +1390,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_sources_scim.scimsource_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_sources_scim.scimsource" }, @@ -1328,6 +1430,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_sources_scim.scimsourcepropertymapping_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_sources_scim.scimsourcepropertymapping" }, @@ -1365,6 +1470,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_authenticator_duo.authenticatorduostage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_authenticator_duo.authenticatorduostage" }, @@ -1402,6 +1510,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_authenticator_duo.duodevice_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_authenticator_duo.duodevice" }, @@ -1439,6 +1550,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_authenticator_sms.authenticatorsmsstage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_authenticator_sms.authenticatorsmsstage" }, @@ -1476,6 +1590,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_authenticator_sms.smsdevice_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_authenticator_sms.smsdevice" }, @@ -1513,6 +1630,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_authenticator_static.authenticatorstaticstage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_authenticator_static.authenticatorstaticstage" }, @@ -1550,6 +1670,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_authenticator_static.staticdevice_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_authenticator_static.staticdevice" }, @@ -1587,6 +1710,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_authenticator_totp.authenticatortotpstage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_authenticator_totp.authenticatortotpstage" }, @@ -1624,6 +1750,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_authenticator_totp.totpdevice_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_authenticator_totp.totpdevice" }, @@ -1661,6 +1790,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_authenticator_validate.authenticatorvalidatestage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_authenticator_validate.authenticatorvalidatestage" }, @@ -1698,6 +1830,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_authenticator_webauthn.authenticatorwebauthnstage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_authenticator_webauthn.authenticatorwebauthnstage" }, @@ -1735,6 +1870,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_authenticator_webauthn.webauthndevice_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_authenticator_webauthn.webauthndevice" }, @@ -1772,6 +1910,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_captcha.captchastage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_captcha.captchastage" }, @@ -1809,6 +1950,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_consent.consentstage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_consent.consentstage" }, @@ -1846,6 +1990,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_consent.userconsent_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_consent.userconsent" }, @@ -1883,6 +2030,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_deny.denystage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_deny.denystage" }, @@ -1920,6 +2070,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_dummy.dummystage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_dummy.dummystage" }, @@ -1957,6 +2110,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_email.emailstage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_email.emailstage" }, @@ -1994,6 +2150,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_identification.identificationstage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_identification.identificationstage" }, @@ -2031,6 +2190,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_invitation.invitationstage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_invitation.invitationstage" }, @@ -2068,6 +2230,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_invitation.invitation_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_invitation.invitation" }, @@ -2105,6 +2270,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_password.passwordstage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_password.passwordstage" }, @@ -2142,6 +2310,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_prompt.prompt_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_prompt.prompt" }, @@ -2179,6 +2350,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_prompt.promptstage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_prompt.promptstage" }, @@ -2216,6 +2390,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_user_delete.userdeletestage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_user_delete.userdeletestage" }, @@ -2253,6 +2430,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_user_login.userloginstage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_user_login.userloginstage" }, @@ -2290,6 +2470,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_user_logout.userlogoutstage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_user_logout.userlogoutstage" }, @@ -2327,6 +2510,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_user_write.userwritestage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_user_write.userwritestage" }, @@ -2364,6 +2550,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_brands.brand_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_brands.brand" }, @@ -2401,6 +2590,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_blueprints.blueprintinstance_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_blueprints.blueprintinstance" }, @@ -2438,6 +2630,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_core.group_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_core.group" }, @@ -2475,6 +2670,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_core.user_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_core.user" }, @@ -2512,6 +2710,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_core.application_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_core.application" }, @@ -2549,6 +2750,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_core.token_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_core.token" }, @@ -2586,6 +2790,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_enterprise.license_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_enterprise.license" }, @@ -2623,6 +2830,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_google_workspace.googleworkspaceprovider_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_google_workspace.googleworkspaceprovider" }, @@ -2660,6 +2870,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_google_workspace.googleworkspaceprovidermapping_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_google_workspace.googleworkspaceprovidermapping" }, @@ -2697,6 +2910,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_microsoft_entra.microsoftentraprovider_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_microsoft_entra.microsoftentraprovider" }, @@ -2734,6 +2950,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_microsoft_entra.microsoftentraprovidermapping_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_microsoft_entra.microsoftentraprovidermapping" }, @@ -2771,6 +2990,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_rac.racprovider_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_rac.racprovider" }, @@ -2808,6 +3030,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_rac.endpoint_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_rac.endpoint" }, @@ -2845,6 +3070,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_providers_rac.racpropertymapping_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_providers_rac.racpropertymapping" }, @@ -2882,6 +3110,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_source.sourcestage_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_stages_source.sourcestage" }, @@ -2919,6 +3150,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_events.event_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_events.event" }, @@ -2956,6 +3190,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_events.notificationtransport_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_events.notificationtransport" }, @@ -2993,6 +3230,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_events.notification_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_events.notification" }, @@ -3030,6 +3270,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_events.notificationrule_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_events.notificationrule" }, @@ -3067,6 +3310,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_events.notificationwebhookmapping_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_events.notificationwebhookmapping" }, @@ -3104,6 +3350,9 @@ "type": "boolean" } }, + "permissions": { + "$ref": "#/$defs/model_authentik_blueprints.metaapplyblueprint_permissions" + }, "attrs": { "$ref": "#/$defs/model_authentik_blueprints.metaapplyblueprint" }, @@ -3138,6 +3387,32 @@ }, "required": [] }, + "model_authentik_tenants.domain_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_domain", + "change_domain", + "delete_domain", + "view_domain" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_crypto.certificatekeypair": { "type": "object", "properties": { @@ -3160,6 +3435,32 @@ }, "required": [] }, + "model_authentik_crypto.certificatekeypair_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_certificatekeypair", + "change_certificatekeypair", + "delete_certificatekeypair", + "view_certificatekeypair" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_flows.flow": { "type": "object", "properties": { @@ -3250,6 +3551,36 @@ }, "required": [] }, + "model_authentik_flows.flow_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "export_flow", + "inspect_flow", + "view_flow_cache", + "clear_flow_cache", + "add_flow", + "change_flow", + "delete_flow", + "view_flow" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_flows.flowstagebinding": { "type": "object", "properties": { @@ -3300,6 +3631,32 @@ }, "required": [] }, + "model_authentik_flows.flowstagebinding_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_flowstagebinding", + "change_flowstagebinding", + "delete_flowstagebinding", + "view_flowstagebinding" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_outposts.dockerserviceconnection": { "type": "object", "properties": { @@ -3334,6 +3691,32 @@ }, "required": [] }, + "model_authentik_outposts.dockerserviceconnection_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_dockerserviceconnection", + "change_dockerserviceconnection", + "delete_dockerserviceconnection", + "view_dockerserviceconnection" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_outposts.kubernetesserviceconnection": { "type": "object", "properties": { @@ -3361,6 +3744,32 @@ }, "required": [] }, + "model_authentik_outposts.kubernetesserviceconnection_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_kubernetesserviceconnection", + "change_kubernetesserviceconnection", + "delete_kubernetesserviceconnection", + "view_kubernetesserviceconnection" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_outposts.outpost": { "type": "object", "properties": { @@ -3409,6 +3818,32 @@ }, "required": [] }, + "model_authentik_outposts.outpost_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_outpost", + "change_outpost", + "delete_outpost", + "view_outpost" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_policies_dummy.dummypolicy": { "type": "object", "properties": { @@ -3441,6 +3876,32 @@ }, "required": [] }, + "model_authentik_policies_dummy.dummypolicy_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_dummypolicy", + "change_dummypolicy", + "delete_dummypolicy", + "view_dummypolicy" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_policies_event_matcher.eventmatcherpolicy": { "type": "object", "properties": { @@ -3664,6 +4125,32 @@ }, "required": [] }, + "model_authentik_policies_event_matcher.eventmatcherpolicy_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_eventmatcherpolicy", + "change_eventmatcherpolicy", + "delete_eventmatcherpolicy", + "view_eventmatcherpolicy" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_policies_expiry.passwordexpirypolicy": { "type": "object", "properties": { @@ -3690,6 +4177,32 @@ }, "required": [] }, + "model_authentik_policies_expiry.passwordexpirypolicy_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_passwordexpirypolicy", + "change_passwordexpirypolicy", + "delete_passwordexpirypolicy", + "view_passwordexpirypolicy" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_policies_expression.expressionpolicy": { "type": "object", "properties": { @@ -3711,6 +4224,32 @@ }, "required": [] }, + "model_authentik_policies_expression.expressionpolicy_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_expressionpolicy", + "change_expressionpolicy", + "delete_expressionpolicy", + "view_expressionpolicy" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_policies_password.passwordpolicy": { "type": "object", "properties": { @@ -3798,6 +4337,32 @@ }, "required": [] }, + "model_authentik_policies_password.passwordpolicy_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_passwordpolicy", + "change_passwordpolicy", + "delete_passwordpolicy", + "view_passwordpolicy" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_policies_reputation.reputationpolicy": { "type": "object", "properties": { @@ -3828,6 +4393,32 @@ }, "required": [] }, + "model_authentik_policies_reputation.reputationpolicy_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_reputationpolicy", + "change_reputationpolicy", + "delete_reputationpolicy", + "view_reputationpolicy" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_policies.policybinding": { "type": "object", "properties": { @@ -3880,10 +4471,36 @@ }, "required": [] }, - "model_authentik_providers_ldap.ldapprovider": { - "type": "object", - "properties": { - "name": { + "model_authentik_policies.policybinding_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_policybinding", + "change_policybinding", + "delete_policybinding", + "view_policybinding" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, + "model_authentik_providers_ldap.ldapprovider": { + "type": "object", + "properties": { + "name": { "type": "string", "minLength": 1, "title": "Name" @@ -3967,6 +4584,32 @@ }, "required": [] }, + "model_authentik_providers_ldap.ldapprovider_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_ldapprovider", + "change_ldapprovider", + "delete_ldapprovider", + "view_ldapprovider" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_oauth2.scopemapping": { "type": "object", "properties": { @@ -4003,6 +4646,32 @@ }, "required": [] }, + "model_authentik_providers_oauth2.scopemapping_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_scopemapping", + "change_scopemapping", + "delete_scopemapping", + "view_scopemapping" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_oauth2.oauth2provider": { "type": "object", "properties": { @@ -4118,6 +4787,32 @@ }, "required": [] }, + "model_authentik_providers_oauth2.oauth2provider_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_oauth2provider", + "change_oauth2provider", + "delete_oauth2provider", + "view_oauth2provider" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_proxy.proxyprovider": { "type": "object", "properties": { @@ -4227,6 +4922,32 @@ }, "required": [] }, + "model_authentik_providers_proxy.proxyprovider_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_proxyprovider", + "change_proxyprovider", + "delete_proxyprovider", + "view_proxyprovider" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_radius.radiusprovider": { "type": "object", "properties": { @@ -4275,6 +4996,32 @@ }, "required": [] }, + "model_authentik_providers_radius.radiusprovider_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_radiusprovider", + "change_radiusprovider", + "delete_radiusprovider", + "view_radiusprovider" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_radius.radiusproviderpropertymapping": { "type": "object", "properties": { @@ -4300,6 +5047,32 @@ }, "required": [] }, + "model_authentik_providers_radius.radiusproviderpropertymapping_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_radiusproviderpropertymapping", + "change_radiusproviderpropertymapping", + "delete_radiusproviderpropertymapping", + "view_radiusproviderpropertymapping" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_saml.samlprovider": { "type": "object", "properties": { @@ -4423,6 +5196,32 @@ }, "required": [] }, + "model_authentik_providers_saml.samlprovider_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_samlprovider", + "change_samlprovider", + "delete_samlprovider", + "view_samlprovider" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_saml.samlpropertymapping": { "type": "object", "properties": { @@ -4460,6 +5259,32 @@ }, "required": [] }, + "model_authentik_providers_saml.samlpropertymapping_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_samlpropertymapping", + "change_samlpropertymapping", + "delete_samlpropertymapping", + "view_samlpropertymapping" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_scim.scimprovider": { "type": "object", "properties": { @@ -4510,6 +5335,32 @@ }, "required": [] }, + "model_authentik_providers_scim.scimprovider_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_scimprovider", + "change_scimprovider", + "delete_scimprovider", + "view_scimprovider" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_scim.scimmapping": { "type": "object", "properties": { @@ -4535,6 +5386,32 @@ }, "required": [] }, + "model_authentik_providers_scim.scimmapping_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_scimmapping", + "change_scimmapping", + "delete_scimmapping", + "view_scimmapping" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_rbac.role": { "type": "object", "properties": { @@ -4543,10 +5420,510 @@ "maxLength": 150, "minLength": 1, "title": "Name" + }, + "permissions": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "authentik_blueprints.add_blueprintinstance", + "authentik_blueprints.change_blueprintinstance", + "authentik_blueprints.delete_blueprintinstance", + "authentik_blueprints.view_blueprintinstance", + "authentik_brands.add_brand", + "authentik_brands.change_brand", + "authentik_brands.delete_brand", + "authentik_brands.view_brand", + "authentik_core.add_application", + "authentik_core.change_application", + "authentik_core.delete_application", + "authentik_core.view_application", + "authentik_core.add_authenticatedsession", + "authentik_core.change_authenticatedsession", + "authentik_core.delete_authenticatedsession", + "authentik_core.view_authenticatedsession", + "authentik_core.add_group", + "authentik_core.add_user_to_group", + "authentik_core.change_group", + "authentik_core.delete_group", + "authentik_core.remove_user_from_group", + "authentik_core.view_group", + "authentik_core.add_propertymapping", + "authentik_core.change_propertymapping", + "authentik_core.delete_propertymapping", + "authentik_core.view_propertymapping", + "authentik_core.add_provider", + "authentik_core.change_provider", + "authentik_core.delete_provider", + "authentik_core.view_provider", + "authentik_core.add_source", + "authentik_core.change_source", + "authentik_core.delete_source", + "authentik_core.view_source", + "authentik_core.add_token", + "authentik_core.change_token", + "authentik_core.delete_token", + "authentik_core.view_token", + "authentik_core.view_token_key", + "authentik_core.add_user", + "authentik_core.assign_user_permissions", + "authentik_core.change_user", + "authentik_core.delete_user", + "authentik_core.impersonate", + "authentik_core.preview_user", + "authentik_core.reset_user_password", + "authentik_core.unassign_user_permissions", + "authentik_core.view_user", + "authentik_core.view_user_applications", + "authentik_core.add_usersourceconnection", + "authentik_core.change_usersourceconnection", + "authentik_core.delete_usersourceconnection", + "authentik_core.view_usersourceconnection", + "authentik_crypto.add_certificatekeypair", + "authentik_crypto.change_certificatekeypair", + "authentik_crypto.delete_certificatekeypair", + "authentik_crypto.view_certificatekeypair", + "authentik_enterprise.add_license", + "authentik_enterprise.change_license", + "authentik_enterprise.delete_license", + "authentik_enterprise.view_license", + "authentik_enterprise.add_licenseusage", + "authentik_enterprise.change_licenseusage", + "authentik_enterprise.delete_licenseusage", + "authentik_enterprise.view_licenseusage", + "authentik_events.add_event", + "authentik_events.change_event", + "authentik_events.delete_event", + "authentik_events.view_event", + "authentik_events.add_notification", + "authentik_events.change_notification", + "authentik_events.delete_notification", + "authentik_events.view_notification", + "authentik_events.add_notificationrule", + "authentik_events.change_notificationrule", + "authentik_events.delete_notificationrule", + "authentik_events.view_notificationrule", + "authentik_events.add_notificationtransport", + "authentik_events.change_notificationtransport", + "authentik_events.delete_notificationtransport", + "authentik_events.view_notificationtransport", + "authentik_events.add_notificationwebhookmapping", + "authentik_events.change_notificationwebhookmapping", + "authentik_events.delete_notificationwebhookmapping", + "authentik_events.view_notificationwebhookmapping", + "authentik_events.run_task", + "authentik_events.view_systemtask", + "authentik_flows.add_flow", + "authentik_flows.change_flow", + "authentik_flows.clear_flow_cache", + "authentik_flows.delete_flow", + "authentik_flows.export_flow", + "authentik_flows.inspect_flow", + "authentik_flows.view_flow", + "authentik_flows.view_flow_cache", + "authentik_flows.add_flowstagebinding", + "authentik_flows.change_flowstagebinding", + "authentik_flows.delete_flowstagebinding", + "authentik_flows.view_flowstagebinding", + "authentik_flows.add_flowtoken", + "authentik_flows.change_flowtoken", + "authentik_flows.delete_flowtoken", + "authentik_flows.view_flowtoken", + "authentik_flows.add_stage", + "authentik_flows.change_stage", + "authentik_flows.delete_stage", + "authentik_flows.view_stage", + "authentik_outposts.add_dockerserviceconnection", + "authentik_outposts.change_dockerserviceconnection", + "authentik_outposts.delete_dockerserviceconnection", + "authentik_outposts.view_dockerserviceconnection", + "authentik_outposts.add_kubernetesserviceconnection", + "authentik_outposts.change_kubernetesserviceconnection", + "authentik_outposts.delete_kubernetesserviceconnection", + "authentik_outposts.view_kubernetesserviceconnection", + "authentik_outposts.add_outpost", + "authentik_outposts.change_outpost", + "authentik_outposts.delete_outpost", + "authentik_outposts.view_outpost", + "authentik_outposts.add_outpostserviceconnection", + "authentik_outposts.change_outpostserviceconnection", + "authentik_outposts.delete_outpostserviceconnection", + "authentik_outposts.view_outpostserviceconnection", + "authentik_policies.add_policy", + "authentik_policies.change_policy", + "authentik_policies.clear_policy_cache", + "authentik_policies.delete_policy", + "authentik_policies.view_policy", + "authentik_policies.view_policy_cache", + "authentik_policies.add_policybinding", + "authentik_policies.change_policybinding", + "authentik_policies.delete_policybinding", + "authentik_policies.view_policybinding", + "authentik_policies.add_policybindingmodel", + "authentik_policies.change_policybindingmodel", + "authentik_policies.delete_policybindingmodel", + "authentik_policies.view_policybindingmodel", + "authentik_policies_dummy.add_dummypolicy", + "authentik_policies_dummy.change_dummypolicy", + "authentik_policies_dummy.delete_dummypolicy", + "authentik_policies_dummy.view_dummypolicy", + "authentik_policies_event_matcher.add_eventmatcherpolicy", + "authentik_policies_event_matcher.change_eventmatcherpolicy", + "authentik_policies_event_matcher.delete_eventmatcherpolicy", + "authentik_policies_event_matcher.view_eventmatcherpolicy", + "authentik_policies_expiry.add_passwordexpirypolicy", + "authentik_policies_expiry.change_passwordexpirypolicy", + "authentik_policies_expiry.delete_passwordexpirypolicy", + "authentik_policies_expiry.view_passwordexpirypolicy", + "authentik_policies_expression.add_expressionpolicy", + "authentik_policies_expression.change_expressionpolicy", + "authentik_policies_expression.delete_expressionpolicy", + "authentik_policies_expression.view_expressionpolicy", + "authentik_policies_password.add_passwordpolicy", + "authentik_policies_password.change_passwordpolicy", + "authentik_policies_password.delete_passwordpolicy", + "authentik_policies_password.view_passwordpolicy", + "authentik_policies_reputation.add_reputation", + "authentik_policies_reputation.change_reputation", + "authentik_policies_reputation.delete_reputation", + "authentik_policies_reputation.view_reputation", + "authentik_policies_reputation.add_reputationpolicy", + "authentik_policies_reputation.change_reputationpolicy", + "authentik_policies_reputation.delete_reputationpolicy", + "authentik_policies_reputation.view_reputationpolicy", + "authentik_providers_google_workspace.add_googleworkspaceprovider", + "authentik_providers_google_workspace.change_googleworkspaceprovider", + "authentik_providers_google_workspace.delete_googleworkspaceprovider", + "authentik_providers_google_workspace.view_googleworkspaceprovider", + "authentik_providers_google_workspace.add_googleworkspaceprovidergroup", + "authentik_providers_google_workspace.change_googleworkspaceprovidergroup", + "authentik_providers_google_workspace.delete_googleworkspaceprovidergroup", + "authentik_providers_google_workspace.view_googleworkspaceprovidergroup", + "authentik_providers_google_workspace.add_googleworkspaceprovidermapping", + "authentik_providers_google_workspace.change_googleworkspaceprovidermapping", + "authentik_providers_google_workspace.delete_googleworkspaceprovidermapping", + "authentik_providers_google_workspace.view_googleworkspaceprovidermapping", + "authentik_providers_google_workspace.add_googleworkspaceprovideruser", + "authentik_providers_google_workspace.change_googleworkspaceprovideruser", + "authentik_providers_google_workspace.delete_googleworkspaceprovideruser", + "authentik_providers_google_workspace.view_googleworkspaceprovideruser", + "authentik_providers_ldap.add_ldapprovider", + "authentik_providers_ldap.change_ldapprovider", + "authentik_providers_ldap.delete_ldapprovider", + "authentik_providers_ldap.view_ldapprovider", + "authentik_providers_microsoft_entra.add_microsoftentraprovider", + "authentik_providers_microsoft_entra.change_microsoftentraprovider", + "authentik_providers_microsoft_entra.delete_microsoftentraprovider", + "authentik_providers_microsoft_entra.view_microsoftentraprovider", + "authentik_providers_microsoft_entra.add_microsoftentraprovidergroup", + "authentik_providers_microsoft_entra.change_microsoftentraprovidergroup", + "authentik_providers_microsoft_entra.delete_microsoftentraprovidergroup", + "authentik_providers_microsoft_entra.view_microsoftentraprovidergroup", + "authentik_providers_microsoft_entra.add_microsoftentraprovidermapping", + "authentik_providers_microsoft_entra.change_microsoftentraprovidermapping", + "authentik_providers_microsoft_entra.delete_microsoftentraprovidermapping", + "authentik_providers_microsoft_entra.view_microsoftentraprovidermapping", + "authentik_providers_microsoft_entra.add_microsoftentraprovideruser", + "authentik_providers_microsoft_entra.change_microsoftentraprovideruser", + "authentik_providers_microsoft_entra.delete_microsoftentraprovideruser", + "authentik_providers_microsoft_entra.view_microsoftentraprovideruser", + "authentik_providers_oauth2.add_accesstoken", + "authentik_providers_oauth2.change_accesstoken", + "authentik_providers_oauth2.delete_accesstoken", + "authentik_providers_oauth2.view_accesstoken", + "authentik_providers_oauth2.add_authorizationcode", + "authentik_providers_oauth2.change_authorizationcode", + "authentik_providers_oauth2.delete_authorizationcode", + "authentik_providers_oauth2.view_authorizationcode", + "authentik_providers_oauth2.add_devicetoken", + "authentik_providers_oauth2.change_devicetoken", + "authentik_providers_oauth2.delete_devicetoken", + "authentik_providers_oauth2.view_devicetoken", + "authentik_providers_oauth2.add_oauth2provider", + "authentik_providers_oauth2.change_oauth2provider", + "authentik_providers_oauth2.delete_oauth2provider", + "authentik_providers_oauth2.view_oauth2provider", + "authentik_providers_oauth2.add_refreshtoken", + "authentik_providers_oauth2.change_refreshtoken", + "authentik_providers_oauth2.delete_refreshtoken", + "authentik_providers_oauth2.view_refreshtoken", + "authentik_providers_oauth2.add_scopemapping", + "authentik_providers_oauth2.change_scopemapping", + "authentik_providers_oauth2.delete_scopemapping", + "authentik_providers_oauth2.view_scopemapping", + "authentik_providers_proxy.add_proxyprovider", + "authentik_providers_proxy.change_proxyprovider", + "authentik_providers_proxy.delete_proxyprovider", + "authentik_providers_proxy.view_proxyprovider", + "authentik_providers_rac.add_connectiontoken", + "authentik_providers_rac.change_connectiontoken", + "authentik_providers_rac.delete_connectiontoken", + "authentik_providers_rac.view_connectiontoken", + "authentik_providers_rac.add_endpoint", + "authentik_providers_rac.change_endpoint", + "authentik_providers_rac.delete_endpoint", + "authentik_providers_rac.view_endpoint", + "authentik_providers_rac.add_racpropertymapping", + "authentik_providers_rac.change_racpropertymapping", + "authentik_providers_rac.delete_racpropertymapping", + "authentik_providers_rac.view_racpropertymapping", + "authentik_providers_rac.add_racprovider", + "authentik_providers_rac.change_racprovider", + "authentik_providers_rac.delete_racprovider", + "authentik_providers_rac.view_racprovider", + "authentik_providers_radius.add_radiusprovider", + "authentik_providers_radius.change_radiusprovider", + "authentik_providers_radius.delete_radiusprovider", + "authentik_providers_radius.view_radiusprovider", + "authentik_providers_radius.add_radiusproviderpropertymapping", + "authentik_providers_radius.change_radiusproviderpropertymapping", + "authentik_providers_radius.delete_radiusproviderpropertymapping", + "authentik_providers_radius.view_radiusproviderpropertymapping", + "authentik_providers_saml.add_samlpropertymapping", + "authentik_providers_saml.change_samlpropertymapping", + "authentik_providers_saml.delete_samlpropertymapping", + "authentik_providers_saml.view_samlpropertymapping", + "authentik_providers_saml.add_samlprovider", + "authentik_providers_saml.change_samlprovider", + "authentik_providers_saml.delete_samlprovider", + "authentik_providers_saml.view_samlprovider", + "authentik_providers_scim.add_scimmapping", + "authentik_providers_scim.change_scimmapping", + "authentik_providers_scim.delete_scimmapping", + "authentik_providers_scim.view_scimmapping", + "authentik_providers_scim.add_scimprovider", + "authentik_providers_scim.change_scimprovider", + "authentik_providers_scim.delete_scimprovider", + "authentik_providers_scim.view_scimprovider", + "authentik_providers_scim.add_scimprovidergroup", + "authentik_providers_scim.change_scimprovidergroup", + "authentik_providers_scim.delete_scimprovidergroup", + "authentik_providers_scim.view_scimprovidergroup", + "authentik_providers_scim.add_scimprovideruser", + "authentik_providers_scim.change_scimprovideruser", + "authentik_providers_scim.delete_scimprovideruser", + "authentik_providers_scim.view_scimprovideruser", + "authentik_rbac.add_role", + "authentik_rbac.assign_role_permissions", + "authentik_rbac.change_role", + "authentik_rbac.delete_role", + "authentik_rbac.unassign_role_permissions", + "authentik_rbac.view_role", + "authentik_rbac.access_admin_interface", + "authentik_rbac.edit_system_settings", + "authentik_rbac.view_system_info", + "authentik_rbac.view_system_settings", + "authentik_sources_ldap.add_ldapsource", + "authentik_sources_ldap.change_ldapsource", + "authentik_sources_ldap.delete_ldapsource", + "authentik_sources_ldap.view_ldapsource", + "authentik_sources_ldap.add_ldapsourcepropertymapping", + "authentik_sources_ldap.change_ldapsourcepropertymapping", + "authentik_sources_ldap.delete_ldapsourcepropertymapping", + "authentik_sources_ldap.view_ldapsourcepropertymapping", + "authentik_sources_oauth.add_oauthsource", + "authentik_sources_oauth.change_oauthsource", + "authentik_sources_oauth.delete_oauthsource", + "authentik_sources_oauth.view_oauthsource", + "authentik_sources_oauth.add_useroauthsourceconnection", + "authentik_sources_oauth.change_useroauthsourceconnection", + "authentik_sources_oauth.delete_useroauthsourceconnection", + "authentik_sources_oauth.view_useroauthsourceconnection", + "authentik_sources_plex.add_plexsource", + "authentik_sources_plex.change_plexsource", + "authentik_sources_plex.delete_plexsource", + "authentik_sources_plex.view_plexsource", + "authentik_sources_plex.add_plexsourceconnection", + "authentik_sources_plex.change_plexsourceconnection", + "authentik_sources_plex.delete_plexsourceconnection", + "authentik_sources_plex.view_plexsourceconnection", + "authentik_sources_saml.add_samlsource", + "authentik_sources_saml.change_samlsource", + "authentik_sources_saml.delete_samlsource", + "authentik_sources_saml.view_samlsource", + "authentik_sources_saml.add_usersamlsourceconnection", + "authentik_sources_saml.change_usersamlsourceconnection", + "authentik_sources_saml.delete_usersamlsourceconnection", + "authentik_sources_saml.view_usersamlsourceconnection", + "authentik_sources_scim.add_scimsource", + "authentik_sources_scim.change_scimsource", + "authentik_sources_scim.delete_scimsource", + "authentik_sources_scim.view_scimsource", + "authentik_sources_scim.add_scimsourcegroup", + "authentik_sources_scim.change_scimsourcegroup", + "authentik_sources_scim.delete_scimsourcegroup", + "authentik_sources_scim.view_scimsourcegroup", + "authentik_sources_scim.add_scimsourcepropertymapping", + "authentik_sources_scim.change_scimsourcepropertymapping", + "authentik_sources_scim.delete_scimsourcepropertymapping", + "authentik_sources_scim.view_scimsourcepropertymapping", + "authentik_sources_scim.add_scimsourceuser", + "authentik_sources_scim.change_scimsourceuser", + "authentik_sources_scim.delete_scimsourceuser", + "authentik_sources_scim.view_scimsourceuser", + "authentik_stages_authenticator_duo.add_authenticatorduostage", + "authentik_stages_authenticator_duo.change_authenticatorduostage", + "authentik_stages_authenticator_duo.delete_authenticatorduostage", + "authentik_stages_authenticator_duo.view_authenticatorduostage", + "authentik_stages_authenticator_duo.add_duodevice", + "authentik_stages_authenticator_duo.change_duodevice", + "authentik_stages_authenticator_duo.delete_duodevice", + "authentik_stages_authenticator_duo.view_duodevice", + "authentik_stages_authenticator_sms.add_authenticatorsmsstage", + "authentik_stages_authenticator_sms.change_authenticatorsmsstage", + "authentik_stages_authenticator_sms.delete_authenticatorsmsstage", + "authentik_stages_authenticator_sms.view_authenticatorsmsstage", + "authentik_stages_authenticator_sms.add_smsdevice", + "authentik_stages_authenticator_sms.change_smsdevice", + "authentik_stages_authenticator_sms.delete_smsdevice", + "authentik_stages_authenticator_sms.view_smsdevice", + "authentik_stages_authenticator_static.add_authenticatorstaticstage", + "authentik_stages_authenticator_static.change_authenticatorstaticstage", + "authentik_stages_authenticator_static.delete_authenticatorstaticstage", + "authentik_stages_authenticator_static.view_authenticatorstaticstage", + "authentik_stages_authenticator_static.add_staticdevice", + "authentik_stages_authenticator_static.change_staticdevice", + "authentik_stages_authenticator_static.delete_staticdevice", + "authentik_stages_authenticator_static.view_staticdevice", + "authentik_stages_authenticator_static.add_statictoken", + "authentik_stages_authenticator_static.change_statictoken", + "authentik_stages_authenticator_static.delete_statictoken", + "authentik_stages_authenticator_static.view_statictoken", + "authentik_stages_authenticator_totp.add_authenticatortotpstage", + "authentik_stages_authenticator_totp.change_authenticatortotpstage", + "authentik_stages_authenticator_totp.delete_authenticatortotpstage", + "authentik_stages_authenticator_totp.view_authenticatortotpstage", + "authentik_stages_authenticator_totp.add_totpdevice", + "authentik_stages_authenticator_totp.change_totpdevice", + "authentik_stages_authenticator_totp.delete_totpdevice", + "authentik_stages_authenticator_totp.view_totpdevice", + "authentik_stages_authenticator_validate.add_authenticatorvalidatestage", + "authentik_stages_authenticator_validate.change_authenticatorvalidatestage", + "authentik_stages_authenticator_validate.delete_authenticatorvalidatestage", + "authentik_stages_authenticator_validate.view_authenticatorvalidatestage", + "authentik_stages_authenticator_webauthn.add_authenticatorwebauthnstage", + "authentik_stages_authenticator_webauthn.change_authenticatorwebauthnstage", + "authentik_stages_authenticator_webauthn.delete_authenticatorwebauthnstage", + "authentik_stages_authenticator_webauthn.view_authenticatorwebauthnstage", + "authentik_stages_authenticator_webauthn.add_webauthndevice", + "authentik_stages_authenticator_webauthn.change_webauthndevice", + "authentik_stages_authenticator_webauthn.delete_webauthndevice", + "authentik_stages_authenticator_webauthn.view_webauthndevice", + "authentik_stages_authenticator_webauthn.add_webauthndevicetype", + "authentik_stages_authenticator_webauthn.change_webauthndevicetype", + "authentik_stages_authenticator_webauthn.delete_webauthndevicetype", + "authentik_stages_authenticator_webauthn.view_webauthndevicetype", + "authentik_stages_captcha.add_captchastage", + "authentik_stages_captcha.change_captchastage", + "authentik_stages_captcha.delete_captchastage", + "authentik_stages_captcha.view_captchastage", + "authentik_stages_consent.add_consentstage", + "authentik_stages_consent.change_consentstage", + "authentik_stages_consent.delete_consentstage", + "authentik_stages_consent.view_consentstage", + "authentik_stages_consent.add_userconsent", + "authentik_stages_consent.change_userconsent", + "authentik_stages_consent.delete_userconsent", + "authentik_stages_consent.view_userconsent", + "authentik_stages_deny.add_denystage", + "authentik_stages_deny.change_denystage", + "authentik_stages_deny.delete_denystage", + "authentik_stages_deny.view_denystage", + "authentik_stages_dummy.add_dummystage", + "authentik_stages_dummy.change_dummystage", + "authentik_stages_dummy.delete_dummystage", + "authentik_stages_dummy.view_dummystage", + "authentik_stages_email.add_emailstage", + "authentik_stages_email.change_emailstage", + "authentik_stages_email.delete_emailstage", + "authentik_stages_email.view_emailstage", + "authentik_stages_identification.add_identificationstage", + "authentik_stages_identification.change_identificationstage", + "authentik_stages_identification.delete_identificationstage", + "authentik_stages_identification.view_identificationstage", + "authentik_stages_invitation.add_invitation", + "authentik_stages_invitation.change_invitation", + "authentik_stages_invitation.delete_invitation", + "authentik_stages_invitation.view_invitation", + "authentik_stages_invitation.add_invitationstage", + "authentik_stages_invitation.change_invitationstage", + "authentik_stages_invitation.delete_invitationstage", + "authentik_stages_invitation.view_invitationstage", + "authentik_stages_password.add_passwordstage", + "authentik_stages_password.change_passwordstage", + "authentik_stages_password.delete_passwordstage", + "authentik_stages_password.view_passwordstage", + "authentik_stages_prompt.add_prompt", + "authentik_stages_prompt.change_prompt", + "authentik_stages_prompt.delete_prompt", + "authentik_stages_prompt.view_prompt", + "authentik_stages_prompt.add_promptstage", + "authentik_stages_prompt.change_promptstage", + "authentik_stages_prompt.delete_promptstage", + "authentik_stages_prompt.view_promptstage", + "authentik_stages_source.add_sourcestage", + "authentik_stages_source.change_sourcestage", + "authentik_stages_source.delete_sourcestage", + "authentik_stages_source.view_sourcestage", + "authentik_stages_user_delete.add_userdeletestage", + "authentik_stages_user_delete.change_userdeletestage", + "authentik_stages_user_delete.delete_userdeletestage", + "authentik_stages_user_delete.view_userdeletestage", + "authentik_stages_user_login.add_userloginstage", + "authentik_stages_user_login.change_userloginstage", + "authentik_stages_user_login.delete_userloginstage", + "authentik_stages_user_login.view_userloginstage", + "authentik_stages_user_logout.add_userlogoutstage", + "authentik_stages_user_logout.change_userlogoutstage", + "authentik_stages_user_logout.delete_userlogoutstage", + "authentik_stages_user_logout.view_userlogoutstage", + "authentik_stages_user_write.add_userwritestage", + "authentik_stages_user_write.change_userwritestage", + "authentik_stages_user_write.delete_userwritestage", + "authentik_stages_user_write.view_userwritestage", + "authentik_tenants.add_domain", + "authentik_tenants.change_domain", + "authentik_tenants.delete_domain", + "authentik_tenants.view_domain", + "authentik_tenants.add_tenant", + "authentik_tenants.change_tenant", + "authentik_tenants.delete_tenant", + "authentik_tenants.view_tenant" + ] + }, + "title": "Permissions" } }, "required": [] }, + "model_authentik_rbac.role_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "assign_role_permissions", + "unassign_role_permissions", + "add_role", + "change_role", + "delete_role", + "view_role" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_sources_ldap.ldapsource": { "type": "object", "properties": { @@ -4724,6 +6101,32 @@ }, "required": [] }, + "model_authentik_sources_ldap.ldapsource_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_ldapsource", + "change_ldapsource", + "delete_ldapsource", + "view_ldapsource" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_sources_ldap.ldapsourcepropertymapping": { "type": "object", "properties": { @@ -4749,6 +6152,32 @@ }, "required": [] }, + "model_authentik_sources_ldap.ldapsourcepropertymapping_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_ldapsourcepropertymapping", + "change_ldapsourcepropertymapping", + "delete_ldapsourcepropertymapping", + "view_ldapsourcepropertymapping" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_sources_oauth.oauthsource": { "type": "object", "properties": { @@ -4914,6 +6343,32 @@ }, "required": [] }, + "model_authentik_sources_oauth.oauthsource_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_oauthsource", + "change_oauthsource", + "delete_oauthsource", + "view_oauthsource" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_sources_oauth.useroauthsourceconnection": { "type": "object", "properties": { @@ -4938,6 +6393,32 @@ }, "required": [] }, + "model_authentik_sources_oauth.useroauthsourceconnection_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_useroauthsourceconnection", + "change_useroauthsourceconnection", + "delete_useroauthsourceconnection", + "view_useroauthsourceconnection" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_sources_plex.plexsource": { "type": "object", "properties": { @@ -5047,6 +6528,32 @@ }, "required": [] }, + "model_authentik_sources_plex.plexsource_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_plexsource", + "change_plexsource", + "delete_plexsource", + "view_plexsource" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_sources_plex.plexsourceconnection": { "type": "object", "properties": { @@ -5068,6 +6575,32 @@ }, "required": [] }, + "model_authentik_sources_plex.plexsourceconnection_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_plexsourceconnection", + "change_plexsourceconnection", + "delete_plexsourceconnection", + "view_plexsourceconnection" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_sources_saml.samlsource": { "type": "object", "properties": { @@ -5248,15 +6781,41 @@ }, "required": [] }, - "model_authentik_sources_saml.usersamlsourceconnection": { - "type": "object", - "properties": { - "identifier": { - "type": "string", - "minLength": 1, - "title": "Identifier" - }, - "icon": { + "model_authentik_sources_saml.samlsource_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_samlsource", + "change_samlsource", + "delete_samlsource", + "view_samlsource" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, + "model_authentik_sources_saml.usersamlsourceconnection": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "minLength": 1, + "title": "Identifier" + }, + "icon": { "type": "string", "minLength": 1, "title": "Icon" @@ -5264,6 +6823,32 @@ }, "required": [] }, + "model_authentik_sources_saml.usersamlsourceconnection_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_usersamlsourceconnection", + "change_usersamlsourceconnection", + "delete_usersamlsourceconnection", + "view_usersamlsourceconnection" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_sources_scim.scimsource": { "type": "object", "properties": { @@ -5314,6 +6899,32 @@ }, "required": [] }, + "model_authentik_sources_scim.scimsource_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_scimsource", + "change_scimsource", + "delete_scimsource", + "view_scimsource" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_sources_scim.scimsourcepropertymapping": { "type": "object", "properties": { @@ -5339,6 +6950,32 @@ }, "required": [] }, + "model_authentik_sources_scim.scimsourcepropertymapping_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_scimsourcepropertymapping", + "change_scimsourcepropertymapping", + "delete_scimsourcepropertymapping", + "view_scimsourcepropertymapping" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_authenticator_duo.authenticatorduostage": { "type": "object", "properties": { @@ -5469,6 +7106,32 @@ }, "required": [] }, + "model_authentik_stages_authenticator_duo.authenticatorduostage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_authenticatorduostage", + "change_authenticatorduostage", + "delete_authenticatorduostage", + "view_authenticatorduostage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_authenticator_duo.duodevice": { "type": "object", "properties": { @@ -5482,6 +7145,32 @@ }, "required": [] }, + "model_authentik_stages_authenticator_duo.duodevice_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_duodevice", + "change_duodevice", + "delete_duodevice", + "view_duodevice" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_authenticator_sms.authenticatorsmsstage": { "type": "object", "properties": { @@ -5634,6 +7323,32 @@ }, "required": [] }, + "model_authentik_stages_authenticator_sms.authenticatorsmsstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_authenticatorsmsstage", + "change_authenticatorsmsstage", + "delete_authenticatorsmsstage", + "view_authenticatorsmsstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_authenticator_sms.smsdevice": { "type": "object", "properties": { @@ -5647,6 +7362,32 @@ }, "required": [] }, + "model_authentik_stages_authenticator_sms.smsdevice_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_smsdevice", + "change_smsdevice", + "delete_smsdevice", + "view_smsdevice" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_authenticator_static.authenticatorstaticstage": { "type": "object", "properties": { @@ -5766,6 +7507,32 @@ }, "required": [] }, + "model_authentik_stages_authenticator_static.authenticatorstaticstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_authenticatorstaticstage", + "change_authenticatorstaticstage", + "delete_authenticatorstaticstage", + "view_authenticatorstaticstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_authenticator_static.staticdevice": { "type": "object", "properties": { @@ -5779,6 +7546,32 @@ }, "required": [] }, + "model_authentik_stages_authenticator_static.staticdevice_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_staticdevice", + "change_staticdevice", + "delete_staticdevice", + "view_staticdevice" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_authenticator_totp.authenticatortotpstage": { "type": "object", "properties": { @@ -5894,6 +7687,32 @@ }, "required": [] }, + "model_authentik_stages_authenticator_totp.authenticatortotpstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_authenticatortotpstage", + "change_authenticatortotpstage", + "delete_authenticatortotpstage", + "view_authenticatortotpstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_authenticator_totp.totpdevice": { "type": "object", "properties": { @@ -5907,6 +7726,32 @@ }, "required": [] }, + "model_authentik_stages_authenticator_totp.totpdevice_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_totpdevice", + "change_totpdevice", + "delete_totpdevice", + "view_totpdevice" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_authenticator_validate.authenticatorvalidatestage": { "type": "object", "properties": { @@ -6059,6 +7904,32 @@ }, "required": [] }, + "model_authentik_stages_authenticator_validate.authenticatorvalidatestage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_authenticatorvalidatestage", + "change_authenticatorvalidatestage", + "delete_authenticatorvalidatestage", + "view_authenticatorvalidatestage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_authenticator_webauthn.authenticatorwebauthnstage": { "type": "object", "properties": { @@ -6204,6 +8075,32 @@ }, "required": [] }, + "model_authentik_stages_authenticator_webauthn.authenticatorwebauthnstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_authenticatorwebauthnstage", + "change_authenticatorwebauthnstage", + "delete_authenticatorwebauthnstage", + "view_authenticatorwebauthnstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_authenticator_webauthn.webauthndevice": { "type": "object", "properties": { @@ -6216,6 +8113,32 @@ }, "required": [] }, + "model_authentik_stages_authenticator_webauthn.webauthndevice_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_webauthndevice", + "change_webauthndevice", + "delete_webauthndevice", + "view_webauthndevice" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_captcha.captchastage": { "type": "object", "properties": { @@ -6344,6 +8267,32 @@ }, "required": [] }, + "model_authentik_stages_captcha.captchastage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_captchastage", + "change_captchastage", + "delete_captchastage", + "view_captchastage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_consent.consentstage": { "type": "object", "properties": { @@ -6452,6 +8401,32 @@ }, "required": [] }, + "model_authentik_stages_consent.consentstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_consentstage", + "change_consentstage", + "delete_consentstage", + "view_consentstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_consent.userconsent": { "type": "object", "properties": { @@ -6607,6 +8582,32 @@ }, "required": [] }, + "model_authentik_stages_consent.userconsent_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_userconsent", + "change_userconsent", + "delete_userconsent", + "view_userconsent" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_deny.denystage": { "type": "object", "properties": { @@ -6704,6 +8705,32 @@ }, "required": [] }, + "model_authentik_stages_deny.denystage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_denystage", + "change_denystage", + "delete_denystage", + "view_denystage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_dummy.dummystage": { "type": "object", "properties": { @@ -6801,6 +8828,32 @@ }, "required": [] }, + "model_authentik_stages_dummy.dummystage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_dummystage", + "change_dummystage", + "delete_dummystage", + "view_dummystage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_email.emailstage": { "type": "object", "properties": { @@ -6961,6 +9014,32 @@ }, "required": [] }, + "model_authentik_stages_email.emailstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_emailstage", + "change_emailstage", + "delete_emailstage", + "view_emailstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_identification.identificationstage": { "type": "object", "properties": { @@ -7119,6 +9198,32 @@ }, "required": [] }, + "model_authentik_stages_identification.identificationstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_identificationstage", + "change_identificationstage", + "delete_identificationstage", + "view_identificationstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_invitation.invitationstage": { "type": "object", "properties": { @@ -7217,6 +9322,32 @@ }, "required": [] }, + "model_authentik_stages_invitation.invitationstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_invitationstage", + "change_invitationstage", + "delete_invitationstage", + "view_invitationstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_invitation.invitation": { "type": "object", "properties": { @@ -7254,6 +9385,32 @@ }, "required": [] }, + "model_authentik_stages_invitation.invitation_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_invitation", + "change_invitation", + "delete_invitation", + "view_invitation" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_password.passwordstage": { "type": "object", "properties": { @@ -7379,6 +9536,32 @@ }, "required": [] }, + "model_authentik_stages_password.passwordstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_passwordstage", + "change_passwordstage", + "delete_passwordstage", + "view_passwordstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_prompt.prompt": { "type": "object", "properties": { @@ -7556,6 +9739,32 @@ }, "required": [] }, + "model_authentik_stages_prompt.prompt_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_prompt", + "change_prompt", + "delete_prompt", + "view_prompt" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_prompt.promptstage": { "type": "object", "properties": { @@ -7665,6 +9874,32 @@ }, "required": [] }, + "model_authentik_stages_prompt.promptstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_promptstage", + "change_promptstage", + "delete_promptstage", + "view_promptstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_user_delete.userdeletestage": { "type": "object", "properties": { @@ -7758,6 +9993,32 @@ }, "required": [] }, + "model_authentik_stages_user_delete.userdeletestage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_userdeletestage", + "change_userdeletestage", + "delete_userdeletestage", + "view_userdeletestage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_user_login.userloginstage": { "type": "object", "properties": { @@ -7890,6 +10151,32 @@ }, "required": [] }, + "model_authentik_stages_user_login.userloginstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_userloginstage", + "change_userloginstage", + "delete_userloginstage", + "view_userloginstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_user_logout.userlogoutstage": { "type": "object", "properties": { @@ -7983,6 +10270,32 @@ }, "required": [] }, + "model_authentik_stages_user_logout.userlogoutstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_userlogoutstage", + "change_userlogoutstage", + "delete_userlogoutstage", + "view_userlogoutstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_user_write.userwritestage": { "type": "object", "properties": { @@ -8110,6 +10423,32 @@ }, "required": [] }, + "model_authentik_stages_user_write.userwritestage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_userwritestage", + "change_userwritestage", + "delete_userwritestage", + "view_userwritestage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_brands.brand": { "type": "object", "properties": { @@ -8187,6 +10526,32 @@ }, "required": [] }, + "model_authentik_brands.brand_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_brand", + "change_brand", + "delete_brand", + "view_brand" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_blueprints.blueprintinstance": { "type": "object", "properties": { @@ -8215,6 +10580,32 @@ }, "required": [] }, + "model_authentik_blueprints.blueprintinstance_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_blueprintinstance", + "change_blueprintinstance", + "delete_blueprintinstance", + "view_blueprintinstance" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_core.group": { "type": "object", "properties": { @@ -8257,6 +10648,34 @@ }, "required": [] }, + "model_authentik_core.group_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_user_to_group", + "remove_user_from_group", + "add_group", + "change_group", + "delete_group", + "view_group" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_core.user": { "type": "object", "properties": { @@ -8325,10 +10744,514 @@ ], "minLength": 1, "title": "Password" + }, + "permissions": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "authentik_blueprints.add_blueprintinstance", + "authentik_blueprints.change_blueprintinstance", + "authentik_blueprints.delete_blueprintinstance", + "authentik_blueprints.view_blueprintinstance", + "authentik_brands.add_brand", + "authentik_brands.change_brand", + "authentik_brands.delete_brand", + "authentik_brands.view_brand", + "authentik_core.add_application", + "authentik_core.change_application", + "authentik_core.delete_application", + "authentik_core.view_application", + "authentik_core.add_authenticatedsession", + "authentik_core.change_authenticatedsession", + "authentik_core.delete_authenticatedsession", + "authentik_core.view_authenticatedsession", + "authentik_core.add_group", + "authentik_core.add_user_to_group", + "authentik_core.change_group", + "authentik_core.delete_group", + "authentik_core.remove_user_from_group", + "authentik_core.view_group", + "authentik_core.add_propertymapping", + "authentik_core.change_propertymapping", + "authentik_core.delete_propertymapping", + "authentik_core.view_propertymapping", + "authentik_core.add_provider", + "authentik_core.change_provider", + "authentik_core.delete_provider", + "authentik_core.view_provider", + "authentik_core.add_source", + "authentik_core.change_source", + "authentik_core.delete_source", + "authentik_core.view_source", + "authentik_core.add_token", + "authentik_core.change_token", + "authentik_core.delete_token", + "authentik_core.view_token", + "authentik_core.view_token_key", + "authentik_core.add_user", + "authentik_core.assign_user_permissions", + "authentik_core.change_user", + "authentik_core.delete_user", + "authentik_core.impersonate", + "authentik_core.preview_user", + "authentik_core.reset_user_password", + "authentik_core.unassign_user_permissions", + "authentik_core.view_user", + "authentik_core.view_user_applications", + "authentik_core.add_usersourceconnection", + "authentik_core.change_usersourceconnection", + "authentik_core.delete_usersourceconnection", + "authentik_core.view_usersourceconnection", + "authentik_crypto.add_certificatekeypair", + "authentik_crypto.change_certificatekeypair", + "authentik_crypto.delete_certificatekeypair", + "authentik_crypto.view_certificatekeypair", + "authentik_enterprise.add_license", + "authentik_enterprise.change_license", + "authentik_enterprise.delete_license", + "authentik_enterprise.view_license", + "authentik_enterprise.add_licenseusage", + "authentik_enterprise.change_licenseusage", + "authentik_enterprise.delete_licenseusage", + "authentik_enterprise.view_licenseusage", + "authentik_events.add_event", + "authentik_events.change_event", + "authentik_events.delete_event", + "authentik_events.view_event", + "authentik_events.add_notification", + "authentik_events.change_notification", + "authentik_events.delete_notification", + "authentik_events.view_notification", + "authentik_events.add_notificationrule", + "authentik_events.change_notificationrule", + "authentik_events.delete_notificationrule", + "authentik_events.view_notificationrule", + "authentik_events.add_notificationtransport", + "authentik_events.change_notificationtransport", + "authentik_events.delete_notificationtransport", + "authentik_events.view_notificationtransport", + "authentik_events.add_notificationwebhookmapping", + "authentik_events.change_notificationwebhookmapping", + "authentik_events.delete_notificationwebhookmapping", + "authentik_events.view_notificationwebhookmapping", + "authentik_events.run_task", + "authentik_events.view_systemtask", + "authentik_flows.add_flow", + "authentik_flows.change_flow", + "authentik_flows.clear_flow_cache", + "authentik_flows.delete_flow", + "authentik_flows.export_flow", + "authentik_flows.inspect_flow", + "authentik_flows.view_flow", + "authentik_flows.view_flow_cache", + "authentik_flows.add_flowstagebinding", + "authentik_flows.change_flowstagebinding", + "authentik_flows.delete_flowstagebinding", + "authentik_flows.view_flowstagebinding", + "authentik_flows.add_flowtoken", + "authentik_flows.change_flowtoken", + "authentik_flows.delete_flowtoken", + "authentik_flows.view_flowtoken", + "authentik_flows.add_stage", + "authentik_flows.change_stage", + "authentik_flows.delete_stage", + "authentik_flows.view_stage", + "authentik_outposts.add_dockerserviceconnection", + "authentik_outposts.change_dockerserviceconnection", + "authentik_outposts.delete_dockerserviceconnection", + "authentik_outposts.view_dockerserviceconnection", + "authentik_outposts.add_kubernetesserviceconnection", + "authentik_outposts.change_kubernetesserviceconnection", + "authentik_outposts.delete_kubernetesserviceconnection", + "authentik_outposts.view_kubernetesserviceconnection", + "authentik_outposts.add_outpost", + "authentik_outposts.change_outpost", + "authentik_outposts.delete_outpost", + "authentik_outposts.view_outpost", + "authentik_outposts.add_outpostserviceconnection", + "authentik_outposts.change_outpostserviceconnection", + "authentik_outposts.delete_outpostserviceconnection", + "authentik_outposts.view_outpostserviceconnection", + "authentik_policies.add_policy", + "authentik_policies.change_policy", + "authentik_policies.clear_policy_cache", + "authentik_policies.delete_policy", + "authentik_policies.view_policy", + "authentik_policies.view_policy_cache", + "authentik_policies.add_policybinding", + "authentik_policies.change_policybinding", + "authentik_policies.delete_policybinding", + "authentik_policies.view_policybinding", + "authentik_policies.add_policybindingmodel", + "authentik_policies.change_policybindingmodel", + "authentik_policies.delete_policybindingmodel", + "authentik_policies.view_policybindingmodel", + "authentik_policies_dummy.add_dummypolicy", + "authentik_policies_dummy.change_dummypolicy", + "authentik_policies_dummy.delete_dummypolicy", + "authentik_policies_dummy.view_dummypolicy", + "authentik_policies_event_matcher.add_eventmatcherpolicy", + "authentik_policies_event_matcher.change_eventmatcherpolicy", + "authentik_policies_event_matcher.delete_eventmatcherpolicy", + "authentik_policies_event_matcher.view_eventmatcherpolicy", + "authentik_policies_expiry.add_passwordexpirypolicy", + "authentik_policies_expiry.change_passwordexpirypolicy", + "authentik_policies_expiry.delete_passwordexpirypolicy", + "authentik_policies_expiry.view_passwordexpirypolicy", + "authentik_policies_expression.add_expressionpolicy", + "authentik_policies_expression.change_expressionpolicy", + "authentik_policies_expression.delete_expressionpolicy", + "authentik_policies_expression.view_expressionpolicy", + "authentik_policies_password.add_passwordpolicy", + "authentik_policies_password.change_passwordpolicy", + "authentik_policies_password.delete_passwordpolicy", + "authentik_policies_password.view_passwordpolicy", + "authentik_policies_reputation.add_reputation", + "authentik_policies_reputation.change_reputation", + "authentik_policies_reputation.delete_reputation", + "authentik_policies_reputation.view_reputation", + "authentik_policies_reputation.add_reputationpolicy", + "authentik_policies_reputation.change_reputationpolicy", + "authentik_policies_reputation.delete_reputationpolicy", + "authentik_policies_reputation.view_reputationpolicy", + "authentik_providers_google_workspace.add_googleworkspaceprovider", + "authentik_providers_google_workspace.change_googleworkspaceprovider", + "authentik_providers_google_workspace.delete_googleworkspaceprovider", + "authentik_providers_google_workspace.view_googleworkspaceprovider", + "authentik_providers_google_workspace.add_googleworkspaceprovidergroup", + "authentik_providers_google_workspace.change_googleworkspaceprovidergroup", + "authentik_providers_google_workspace.delete_googleworkspaceprovidergroup", + "authentik_providers_google_workspace.view_googleworkspaceprovidergroup", + "authentik_providers_google_workspace.add_googleworkspaceprovidermapping", + "authentik_providers_google_workspace.change_googleworkspaceprovidermapping", + "authentik_providers_google_workspace.delete_googleworkspaceprovidermapping", + "authentik_providers_google_workspace.view_googleworkspaceprovidermapping", + "authentik_providers_google_workspace.add_googleworkspaceprovideruser", + "authentik_providers_google_workspace.change_googleworkspaceprovideruser", + "authentik_providers_google_workspace.delete_googleworkspaceprovideruser", + "authentik_providers_google_workspace.view_googleworkspaceprovideruser", + "authentik_providers_ldap.add_ldapprovider", + "authentik_providers_ldap.change_ldapprovider", + "authentik_providers_ldap.delete_ldapprovider", + "authentik_providers_ldap.view_ldapprovider", + "authentik_providers_microsoft_entra.add_microsoftentraprovider", + "authentik_providers_microsoft_entra.change_microsoftentraprovider", + "authentik_providers_microsoft_entra.delete_microsoftentraprovider", + "authentik_providers_microsoft_entra.view_microsoftentraprovider", + "authentik_providers_microsoft_entra.add_microsoftentraprovidergroup", + "authentik_providers_microsoft_entra.change_microsoftentraprovidergroup", + "authentik_providers_microsoft_entra.delete_microsoftentraprovidergroup", + "authentik_providers_microsoft_entra.view_microsoftentraprovidergroup", + "authentik_providers_microsoft_entra.add_microsoftentraprovidermapping", + "authentik_providers_microsoft_entra.change_microsoftentraprovidermapping", + "authentik_providers_microsoft_entra.delete_microsoftentraprovidermapping", + "authentik_providers_microsoft_entra.view_microsoftentraprovidermapping", + "authentik_providers_microsoft_entra.add_microsoftentraprovideruser", + "authentik_providers_microsoft_entra.change_microsoftentraprovideruser", + "authentik_providers_microsoft_entra.delete_microsoftentraprovideruser", + "authentik_providers_microsoft_entra.view_microsoftentraprovideruser", + "authentik_providers_oauth2.add_accesstoken", + "authentik_providers_oauth2.change_accesstoken", + "authentik_providers_oauth2.delete_accesstoken", + "authentik_providers_oauth2.view_accesstoken", + "authentik_providers_oauth2.add_authorizationcode", + "authentik_providers_oauth2.change_authorizationcode", + "authentik_providers_oauth2.delete_authorizationcode", + "authentik_providers_oauth2.view_authorizationcode", + "authentik_providers_oauth2.add_devicetoken", + "authentik_providers_oauth2.change_devicetoken", + "authentik_providers_oauth2.delete_devicetoken", + "authentik_providers_oauth2.view_devicetoken", + "authentik_providers_oauth2.add_oauth2provider", + "authentik_providers_oauth2.change_oauth2provider", + "authentik_providers_oauth2.delete_oauth2provider", + "authentik_providers_oauth2.view_oauth2provider", + "authentik_providers_oauth2.add_refreshtoken", + "authentik_providers_oauth2.change_refreshtoken", + "authentik_providers_oauth2.delete_refreshtoken", + "authentik_providers_oauth2.view_refreshtoken", + "authentik_providers_oauth2.add_scopemapping", + "authentik_providers_oauth2.change_scopemapping", + "authentik_providers_oauth2.delete_scopemapping", + "authentik_providers_oauth2.view_scopemapping", + "authentik_providers_proxy.add_proxyprovider", + "authentik_providers_proxy.change_proxyprovider", + "authentik_providers_proxy.delete_proxyprovider", + "authentik_providers_proxy.view_proxyprovider", + "authentik_providers_rac.add_connectiontoken", + "authentik_providers_rac.change_connectiontoken", + "authentik_providers_rac.delete_connectiontoken", + "authentik_providers_rac.view_connectiontoken", + "authentik_providers_rac.add_endpoint", + "authentik_providers_rac.change_endpoint", + "authentik_providers_rac.delete_endpoint", + "authentik_providers_rac.view_endpoint", + "authentik_providers_rac.add_racpropertymapping", + "authentik_providers_rac.change_racpropertymapping", + "authentik_providers_rac.delete_racpropertymapping", + "authentik_providers_rac.view_racpropertymapping", + "authentik_providers_rac.add_racprovider", + "authentik_providers_rac.change_racprovider", + "authentik_providers_rac.delete_racprovider", + "authentik_providers_rac.view_racprovider", + "authentik_providers_radius.add_radiusprovider", + "authentik_providers_radius.change_radiusprovider", + "authentik_providers_radius.delete_radiusprovider", + "authentik_providers_radius.view_radiusprovider", + "authentik_providers_radius.add_radiusproviderpropertymapping", + "authentik_providers_radius.change_radiusproviderpropertymapping", + "authentik_providers_radius.delete_radiusproviderpropertymapping", + "authentik_providers_radius.view_radiusproviderpropertymapping", + "authentik_providers_saml.add_samlpropertymapping", + "authentik_providers_saml.change_samlpropertymapping", + "authentik_providers_saml.delete_samlpropertymapping", + "authentik_providers_saml.view_samlpropertymapping", + "authentik_providers_saml.add_samlprovider", + "authentik_providers_saml.change_samlprovider", + "authentik_providers_saml.delete_samlprovider", + "authentik_providers_saml.view_samlprovider", + "authentik_providers_scim.add_scimmapping", + "authentik_providers_scim.change_scimmapping", + "authentik_providers_scim.delete_scimmapping", + "authentik_providers_scim.view_scimmapping", + "authentik_providers_scim.add_scimprovider", + "authentik_providers_scim.change_scimprovider", + "authentik_providers_scim.delete_scimprovider", + "authentik_providers_scim.view_scimprovider", + "authentik_providers_scim.add_scimprovidergroup", + "authentik_providers_scim.change_scimprovidergroup", + "authentik_providers_scim.delete_scimprovidergroup", + "authentik_providers_scim.view_scimprovidergroup", + "authentik_providers_scim.add_scimprovideruser", + "authentik_providers_scim.change_scimprovideruser", + "authentik_providers_scim.delete_scimprovideruser", + "authentik_providers_scim.view_scimprovideruser", + "authentik_rbac.add_role", + "authentik_rbac.assign_role_permissions", + "authentik_rbac.change_role", + "authentik_rbac.delete_role", + "authentik_rbac.unassign_role_permissions", + "authentik_rbac.view_role", + "authentik_rbac.access_admin_interface", + "authentik_rbac.edit_system_settings", + "authentik_rbac.view_system_info", + "authentik_rbac.view_system_settings", + "authentik_sources_ldap.add_ldapsource", + "authentik_sources_ldap.change_ldapsource", + "authentik_sources_ldap.delete_ldapsource", + "authentik_sources_ldap.view_ldapsource", + "authentik_sources_ldap.add_ldapsourcepropertymapping", + "authentik_sources_ldap.change_ldapsourcepropertymapping", + "authentik_sources_ldap.delete_ldapsourcepropertymapping", + "authentik_sources_ldap.view_ldapsourcepropertymapping", + "authentik_sources_oauth.add_oauthsource", + "authentik_sources_oauth.change_oauthsource", + "authentik_sources_oauth.delete_oauthsource", + "authentik_sources_oauth.view_oauthsource", + "authentik_sources_oauth.add_useroauthsourceconnection", + "authentik_sources_oauth.change_useroauthsourceconnection", + "authentik_sources_oauth.delete_useroauthsourceconnection", + "authentik_sources_oauth.view_useroauthsourceconnection", + "authentik_sources_plex.add_plexsource", + "authentik_sources_plex.change_plexsource", + "authentik_sources_plex.delete_plexsource", + "authentik_sources_plex.view_plexsource", + "authentik_sources_plex.add_plexsourceconnection", + "authentik_sources_plex.change_plexsourceconnection", + "authentik_sources_plex.delete_plexsourceconnection", + "authentik_sources_plex.view_plexsourceconnection", + "authentik_sources_saml.add_samlsource", + "authentik_sources_saml.change_samlsource", + "authentik_sources_saml.delete_samlsource", + "authentik_sources_saml.view_samlsource", + "authentik_sources_saml.add_usersamlsourceconnection", + "authentik_sources_saml.change_usersamlsourceconnection", + "authentik_sources_saml.delete_usersamlsourceconnection", + "authentik_sources_saml.view_usersamlsourceconnection", + "authentik_sources_scim.add_scimsource", + "authentik_sources_scim.change_scimsource", + "authentik_sources_scim.delete_scimsource", + "authentik_sources_scim.view_scimsource", + "authentik_sources_scim.add_scimsourcegroup", + "authentik_sources_scim.change_scimsourcegroup", + "authentik_sources_scim.delete_scimsourcegroup", + "authentik_sources_scim.view_scimsourcegroup", + "authentik_sources_scim.add_scimsourcepropertymapping", + "authentik_sources_scim.change_scimsourcepropertymapping", + "authentik_sources_scim.delete_scimsourcepropertymapping", + "authentik_sources_scim.view_scimsourcepropertymapping", + "authentik_sources_scim.add_scimsourceuser", + "authentik_sources_scim.change_scimsourceuser", + "authentik_sources_scim.delete_scimsourceuser", + "authentik_sources_scim.view_scimsourceuser", + "authentik_stages_authenticator_duo.add_authenticatorduostage", + "authentik_stages_authenticator_duo.change_authenticatorduostage", + "authentik_stages_authenticator_duo.delete_authenticatorduostage", + "authentik_stages_authenticator_duo.view_authenticatorduostage", + "authentik_stages_authenticator_duo.add_duodevice", + "authentik_stages_authenticator_duo.change_duodevice", + "authentik_stages_authenticator_duo.delete_duodevice", + "authentik_stages_authenticator_duo.view_duodevice", + "authentik_stages_authenticator_sms.add_authenticatorsmsstage", + "authentik_stages_authenticator_sms.change_authenticatorsmsstage", + "authentik_stages_authenticator_sms.delete_authenticatorsmsstage", + "authentik_stages_authenticator_sms.view_authenticatorsmsstage", + "authentik_stages_authenticator_sms.add_smsdevice", + "authentik_stages_authenticator_sms.change_smsdevice", + "authentik_stages_authenticator_sms.delete_smsdevice", + "authentik_stages_authenticator_sms.view_smsdevice", + "authentik_stages_authenticator_static.add_authenticatorstaticstage", + "authentik_stages_authenticator_static.change_authenticatorstaticstage", + "authentik_stages_authenticator_static.delete_authenticatorstaticstage", + "authentik_stages_authenticator_static.view_authenticatorstaticstage", + "authentik_stages_authenticator_static.add_staticdevice", + "authentik_stages_authenticator_static.change_staticdevice", + "authentik_stages_authenticator_static.delete_staticdevice", + "authentik_stages_authenticator_static.view_staticdevice", + "authentik_stages_authenticator_static.add_statictoken", + "authentik_stages_authenticator_static.change_statictoken", + "authentik_stages_authenticator_static.delete_statictoken", + "authentik_stages_authenticator_static.view_statictoken", + "authentik_stages_authenticator_totp.add_authenticatortotpstage", + "authentik_stages_authenticator_totp.change_authenticatortotpstage", + "authentik_stages_authenticator_totp.delete_authenticatortotpstage", + "authentik_stages_authenticator_totp.view_authenticatortotpstage", + "authentik_stages_authenticator_totp.add_totpdevice", + "authentik_stages_authenticator_totp.change_totpdevice", + "authentik_stages_authenticator_totp.delete_totpdevice", + "authentik_stages_authenticator_totp.view_totpdevice", + "authentik_stages_authenticator_validate.add_authenticatorvalidatestage", + "authentik_stages_authenticator_validate.change_authenticatorvalidatestage", + "authentik_stages_authenticator_validate.delete_authenticatorvalidatestage", + "authentik_stages_authenticator_validate.view_authenticatorvalidatestage", + "authentik_stages_authenticator_webauthn.add_authenticatorwebauthnstage", + "authentik_stages_authenticator_webauthn.change_authenticatorwebauthnstage", + "authentik_stages_authenticator_webauthn.delete_authenticatorwebauthnstage", + "authentik_stages_authenticator_webauthn.view_authenticatorwebauthnstage", + "authentik_stages_authenticator_webauthn.add_webauthndevice", + "authentik_stages_authenticator_webauthn.change_webauthndevice", + "authentik_stages_authenticator_webauthn.delete_webauthndevice", + "authentik_stages_authenticator_webauthn.view_webauthndevice", + "authentik_stages_authenticator_webauthn.add_webauthndevicetype", + "authentik_stages_authenticator_webauthn.change_webauthndevicetype", + "authentik_stages_authenticator_webauthn.delete_webauthndevicetype", + "authentik_stages_authenticator_webauthn.view_webauthndevicetype", + "authentik_stages_captcha.add_captchastage", + "authentik_stages_captcha.change_captchastage", + "authentik_stages_captcha.delete_captchastage", + "authentik_stages_captcha.view_captchastage", + "authentik_stages_consent.add_consentstage", + "authentik_stages_consent.change_consentstage", + "authentik_stages_consent.delete_consentstage", + "authentik_stages_consent.view_consentstage", + "authentik_stages_consent.add_userconsent", + "authentik_stages_consent.change_userconsent", + "authentik_stages_consent.delete_userconsent", + "authentik_stages_consent.view_userconsent", + "authentik_stages_deny.add_denystage", + "authentik_stages_deny.change_denystage", + "authentik_stages_deny.delete_denystage", + "authentik_stages_deny.view_denystage", + "authentik_stages_dummy.add_dummystage", + "authentik_stages_dummy.change_dummystage", + "authentik_stages_dummy.delete_dummystage", + "authentik_stages_dummy.view_dummystage", + "authentik_stages_email.add_emailstage", + "authentik_stages_email.change_emailstage", + "authentik_stages_email.delete_emailstage", + "authentik_stages_email.view_emailstage", + "authentik_stages_identification.add_identificationstage", + "authentik_stages_identification.change_identificationstage", + "authentik_stages_identification.delete_identificationstage", + "authentik_stages_identification.view_identificationstage", + "authentik_stages_invitation.add_invitation", + "authentik_stages_invitation.change_invitation", + "authentik_stages_invitation.delete_invitation", + "authentik_stages_invitation.view_invitation", + "authentik_stages_invitation.add_invitationstage", + "authentik_stages_invitation.change_invitationstage", + "authentik_stages_invitation.delete_invitationstage", + "authentik_stages_invitation.view_invitationstage", + "authentik_stages_password.add_passwordstage", + "authentik_stages_password.change_passwordstage", + "authentik_stages_password.delete_passwordstage", + "authentik_stages_password.view_passwordstage", + "authentik_stages_prompt.add_prompt", + "authentik_stages_prompt.change_prompt", + "authentik_stages_prompt.delete_prompt", + "authentik_stages_prompt.view_prompt", + "authentik_stages_prompt.add_promptstage", + "authentik_stages_prompt.change_promptstage", + "authentik_stages_prompt.delete_promptstage", + "authentik_stages_prompt.view_promptstage", + "authentik_stages_source.add_sourcestage", + "authentik_stages_source.change_sourcestage", + "authentik_stages_source.delete_sourcestage", + "authentik_stages_source.view_sourcestage", + "authentik_stages_user_delete.add_userdeletestage", + "authentik_stages_user_delete.change_userdeletestage", + "authentik_stages_user_delete.delete_userdeletestage", + "authentik_stages_user_delete.view_userdeletestage", + "authentik_stages_user_login.add_userloginstage", + "authentik_stages_user_login.change_userloginstage", + "authentik_stages_user_login.delete_userloginstage", + "authentik_stages_user_login.view_userloginstage", + "authentik_stages_user_logout.add_userlogoutstage", + "authentik_stages_user_logout.change_userlogoutstage", + "authentik_stages_user_logout.delete_userlogoutstage", + "authentik_stages_user_logout.view_userlogoutstage", + "authentik_stages_user_write.add_userwritestage", + "authentik_stages_user_write.change_userwritestage", + "authentik_stages_user_write.delete_userwritestage", + "authentik_stages_user_write.view_userwritestage", + "authentik_tenants.add_domain", + "authentik_tenants.change_domain", + "authentik_tenants.delete_domain", + "authentik_tenants.view_domain", + "authentik_tenants.add_tenant", + "authentik_tenants.change_tenant", + "authentik_tenants.delete_tenant", + "authentik_tenants.view_tenant" + ] + }, + "title": "Permissions" } }, "required": [] }, + "model_authentik_core.user_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "reset_user_password", + "impersonate", + "assign_user_permissions", + "unassign_user_permissions", + "preview_user", + "view_user_applications", + "add_user", + "change_user", + "delete_user", + "view_user" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_core.application": { "type": "object", "properties": { @@ -8394,6 +11317,32 @@ }, "required": [] }, + "model_authentik_core.application_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_application", + "change_application", + "delete_application", + "view_application" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_core.token": { "type": "object", "properties": { @@ -8451,6 +11400,33 @@ }, "required": [] }, + "model_authentik_core.token_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "view_token_key", + "add_token", + "change_token", + "delete_token", + "view_token" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_enterprise.license": { "type": "object", "properties": { @@ -8462,6 +11438,32 @@ }, "required": [] }, + "model_authentik_enterprise.license_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_license", + "change_license", + "delete_license", + "view_license" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_google_workspace.googleworkspaceprovider": { "type": "object", "properties": { @@ -8540,6 +11542,32 @@ }, "required": [] }, + "model_authentik_providers_google_workspace.googleworkspaceprovider_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_googleworkspaceprovider", + "change_googleworkspaceprovider", + "delete_googleworkspaceprovider", + "view_googleworkspaceprovider" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_google_workspace.googleworkspaceprovidermapping": { "type": "object", "properties": { @@ -8565,6 +11593,32 @@ }, "required": [] }, + "model_authentik_providers_google_workspace.googleworkspaceprovidermapping_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_googleworkspaceprovidermapping", + "change_googleworkspaceprovidermapping", + "delete_googleworkspaceprovidermapping", + "view_googleworkspaceprovidermapping" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_microsoft_entra.microsoftentraprovider": { "type": "object", "properties": { @@ -8636,6 +11690,32 @@ }, "required": [] }, + "model_authentik_providers_microsoft_entra.microsoftentraprovider_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_microsoftentraprovider", + "change_microsoftentraprovider", + "delete_microsoftentraprovider", + "view_microsoftentraprovider" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_microsoft_entra.microsoftentraprovidermapping": { "type": "object", "properties": { @@ -8661,6 +11741,32 @@ }, "required": [] }, + "model_authentik_providers_microsoft_entra.microsoftentraprovidermapping_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_microsoftentraprovidermapping", + "change_microsoftentraprovidermapping", + "delete_microsoftentraprovidermapping", + "view_microsoftentraprovidermapping" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_rac.racprovider": { "type": "object", "properties": { @@ -8708,6 +11814,32 @@ }, "required": [] }, + "model_authentik_providers_rac.racprovider_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_racprovider", + "change_racprovider", + "delete_racprovider", + "view_racprovider" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_rac.endpoint": { "type": "object", "properties": { @@ -8764,6 +11896,32 @@ }, "required": [] }, + "model_authentik_providers_rac.endpoint_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_endpoint", + "change_endpoint", + "delete_endpoint", + "view_endpoint" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_providers_rac.racpropertymapping": { "type": "object", "properties": { @@ -8793,6 +11951,32 @@ }, "required": [] }, + "model_authentik_providers_rac.racpropertymapping_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_racpropertymapping", + "change_racpropertymapping", + "delete_racpropertymapping", + "view_racpropertymapping" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_source.sourcestage": { "type": "object", "properties": { @@ -8896,6 +12080,32 @@ }, "required": [] }, + "model_authentik_stages_source.sourcestage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_sourcestage", + "change_sourcestage", + "delete_sourcestage", + "view_sourcestage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_events.event": { "type": "object", "properties": { @@ -8968,6 +12178,32 @@ }, "required": [] }, + "model_authentik_events.event_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_event", + "change_event", + "delete_event", + "view_event" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_events.notificationtransport": { "type": "object", "properties": { @@ -9002,6 +12238,32 @@ }, "required": [] }, + "model_authentik_events.notificationtransport_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_notificationtransport", + "change_notificationtransport", + "delete_notificationtransport", + "view_notificationtransport" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_events.notification": { "type": "object", "properties": { @@ -9088,6 +12350,32 @@ }, "required": [] }, + "model_authentik_events.notification_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_notification", + "change_notification", + "delete_notification", + "view_notification" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_events.notificationrule": { "type": "object", "properties": { @@ -9125,6 +12413,32 @@ }, "required": [] }, + "model_authentik_events.notificationrule_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_notificationrule", + "change_notificationrule", + "delete_notificationrule", + "view_notificationrule" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_events.notificationwebhookmapping": { "type": "object", "properties": { @@ -9141,6 +12455,32 @@ }, "required": [] }, + "model_authentik_events.notificationwebhookmapping_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_notificationwebhookmapping", + "change_notificationwebhookmapping", + "delete_notificationwebhookmapping", + "view_notificationwebhookmapping" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_blueprints.metaapplyblueprint": { "type": "object", "properties": { @@ -9155,6 +12495,32 @@ } }, "required": [] + }, + "model_authentik_blueprints.metaapplyblueprint_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_metaapplyblueprint", + "change_metaapplyblueprint", + "delete_metaapplyblueprint", + "view_metaapplyblueprint" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } } } } diff --git a/docker-compose.yml b/docker-compose.yml index cc62364dcce2..041cce082f4c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -31,7 +31,7 @@ services: volumes: - redis:/data server: - image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.6.2} + image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.6.3} restart: unless-stopped command: server environment: @@ -52,7 +52,7 @@ services: - postgresql - redis worker: - image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.6.2} + image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.6.3} restart: unless-stopped command: worker environment: diff --git a/go.mod b/go.mod index 00ce0049f03f..e9c6afb366d1 100644 --- a/go.mod +++ b/go.mod @@ -28,10 +28,10 @@ require ( github.com/spf13/cobra v1.8.1 github.com/stretchr/testify v1.9.0 github.com/wwt/guac v1.3.2 - goauthentik.io/api/v3 v3.2024062.1 + goauthentik.io/api/v3 v3.2024062.2 golang.org/x/exp v0.0.0-20230210204819-062eb4c674ab - golang.org/x/oauth2 v0.21.0 - golang.org/x/sync v0.7.0 + golang.org/x/oauth2 v0.22.0 + golang.org/x/sync v0.8.0 gopkg.in/yaml.v2 v2.4.0 layeh.com/radius v0.0.0-20210819152912-ad72663a72ab ) diff --git a/go.sum b/go.sum index 3835fafbfdf1..c5de709fd746 100644 --- a/go.sum +++ b/go.sum @@ -293,8 +293,8 @@ go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= -goauthentik.io/api/v3 v3.2024062.1 h1:y379u/+LmyJjas1dSUMB7tRZwVMzY261FiI878wvq+M= -goauthentik.io/api/v3 v3.2024062.1/go.mod h1:zz+mEZg8rY/7eEjkMGWJ2DnGqk+zqxuybGCGrR2O4Kw= +goauthentik.io/api/v3 v3.2024062.2 h1:PP+bMxuO5BLpZ1Jy0QbnQ9aISQMCVYJVp+yYAfytEhc= +goauthentik.io/api/v3 v3.2024062.2/go.mod h1:zz+mEZg8rY/7eEjkMGWJ2DnGqk+zqxuybGCGrR2O4Kw= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -382,8 +382,8 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -394,8 +394,8 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/internal/constants/constants.go b/internal/constants/constants.go index 1363164f6a6d..e2ee25a0e052 100644 --- a/internal/constants/constants.go +++ b/internal/constants/constants.go @@ -29,4 +29,4 @@ func UserAgent() string { return fmt.Sprintf("authentik@%s", FullVersion()) } -const VERSION = "2024.6.2" +const VERSION = "2024.6.3" diff --git a/package.json b/package.json index eac804af45db..18ab32e104af 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { "name": "@goauthentik/authentik", - "version": "2024.6.2", + "version": "2024.6.3", "private": true } diff --git a/poetry.lock b/poetry.lock index 09d1a09e6a29..1be901d8ae6a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -429,33 +429,33 @@ files = [ [[package]] name = "black" -version = "24.4.2" +version = "24.8.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ - {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, - {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, - {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, - {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, - {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, - {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, - {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, - {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, - {file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"}, - {file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"}, - {file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"}, - {file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"}, - {file = "black-24.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7"}, - {file = "black-24.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94"}, - {file = "black-24.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8"}, - {file = "black-24.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c"}, - {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, - {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, - {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, - {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, - {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, - {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, + {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, + {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, + {file = "black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42"}, + {file = "black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a"}, + {file = "black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"}, + {file = "black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af"}, + {file = "black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4"}, + {file = "black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af"}, + {file = "black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368"}, + {file = "black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed"}, + {file = "black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018"}, + {file = "black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2"}, + {file = "black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd"}, + {file = "black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2"}, + {file = "black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e"}, + {file = "black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920"}, + {file = "black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c"}, + {file = "black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e"}, + {file = "black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47"}, + {file = "black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb"}, + {file = "black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed"}, + {file = "black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f"}, ] [package.dependencies] @@ -957,63 +957,83 @@ files = [ [[package]] name = "coverage" -version = "7.6.0" +version = "7.6.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dff044f661f59dace805eedb4a7404c573b6ff0cdba4a524141bc63d7be5c7fd"}, - {file = "coverage-7.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8659fd33ee9e6ca03950cfdcdf271d645cf681609153f218826dd9805ab585c"}, - {file = "coverage-7.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7792f0ab20df8071d669d929c75c97fecfa6bcab82c10ee4adb91c7a54055463"}, - {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b3cd1ca7cd73d229487fa5caca9e4bc1f0bca96526b922d61053ea751fe791"}, - {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7e128f85c0b419907d1f38e616c4f1e9f1d1b37a7949f44df9a73d5da5cd53c"}, - {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a94925102c89247530ae1dab7dc02c690942566f22e189cbd53579b0693c0783"}, - {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dcd070b5b585b50e6617e8972f3fbbee786afca71b1936ac06257f7e178f00f6"}, - {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d50a252b23b9b4dfeefc1f663c568a221092cbaded20a05a11665d0dbec9b8fb"}, - {file = "coverage-7.6.0-cp310-cp310-win32.whl", hash = "sha256:0e7b27d04131c46e6894f23a4ae186a6a2207209a05df5b6ad4caee6d54a222c"}, - {file = "coverage-7.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dece71673b3187c86226c3ca793c5f891f9fc3d8aa183f2e3653da18566169"}, - {file = "coverage-7.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7b525ab52ce18c57ae232ba6f7010297a87ced82a2383b1afd238849c1ff933"}, - {file = "coverage-7.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bea27c4269234e06f621f3fac3925f56ff34bc14521484b8f66a580aacc2e7d"}, - {file = "coverage-7.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8d1d1821ba5fc88d4a4f45387b65de52382fa3ef1f0115a4f7a20cdfab0e94"}, - {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c322ef2bbe15057bc4bf132b525b7e3f7206f071799eb8aa6ad1940bcf5fb1"}, - {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03cafe82c1b32b770a29fd6de923625ccac3185a54a5e66606da26d105f37dac"}, - {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d1b923fc4a40c5832be4f35a5dab0e5ff89cddf83bb4174499e02ea089daf57"}, - {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4b03741e70fb811d1a9a1d75355cf391f274ed85847f4b78e35459899f57af4d"}, - {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a73d18625f6a8a1cbb11eadc1d03929f9510f4131879288e3f7922097a429f63"}, - {file = "coverage-7.6.0-cp311-cp311-win32.whl", hash = "sha256:65fa405b837060db569a61ec368b74688f429b32fa47a8929a7a2f9b47183713"}, - {file = "coverage-7.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:6379688fb4cfa921ae349c76eb1a9ab26b65f32b03d46bb0eed841fd4cb6afb1"}, - {file = "coverage-7.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f7db0b6ae1f96ae41afe626095149ecd1b212b424626175a6633c2999eaad45b"}, - {file = "coverage-7.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bbdf9a72403110a3bdae77948b8011f644571311c2fb35ee15f0f10a8fc082e8"}, - {file = "coverage-7.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc44bf0315268e253bf563f3560e6c004efe38f76db03a1558274a6e04bf5d5"}, - {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da8549d17489cd52f85a9829d0e1d91059359b3c54a26f28bec2c5d369524807"}, - {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0086cd4fc71b7d485ac93ca4239c8f75732c2ae3ba83f6be1c9be59d9e2c6382"}, - {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fad32ee9b27350687035cb5fdf9145bc9cf0a094a9577d43e909948ebcfa27b"}, - {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:044a0985a4f25b335882b0966625270a8d9db3d3409ddc49a4eb00b0ef5e8cee"}, - {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:76d5f82213aa78098b9b964ea89de4617e70e0d43e97900c2778a50856dac605"}, - {file = "coverage-7.6.0-cp312-cp312-win32.whl", hash = "sha256:3c59105f8d58ce500f348c5b56163a4113a440dad6daa2294b5052a10db866da"}, - {file = "coverage-7.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:ca5d79cfdae420a1d52bf177de4bc2289c321d6c961ae321503b2ca59c17ae67"}, - {file = "coverage-7.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d39bd10f0ae453554798b125d2f39884290c480f56e8a02ba7a6ed552005243b"}, - {file = "coverage-7.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beb08e8508e53a568811016e59f3234d29c2583f6b6e28572f0954a6b4f7e03d"}, - {file = "coverage-7.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2e16f4cd2bc4d88ba30ca2d3bbf2f21f00f382cf4e1ce3b1ddc96c634bc48ca"}, - {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6616d1c9bf1e3faea78711ee42a8b972367d82ceae233ec0ac61cc7fec09fa6b"}, - {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad4567d6c334c46046d1c4c20024de2a1c3abc626817ae21ae3da600f5779b44"}, - {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d17c6a415d68cfe1091d3296ba5749d3d8696e42c37fca5d4860c5bf7b729f03"}, - {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9146579352d7b5f6412735d0f203bbd8d00113a680b66565e205bc605ef81bc6"}, - {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cdab02a0a941af190df8782aafc591ef3ad08824f97850b015c8c6a8b3877b0b"}, - {file = "coverage-7.6.0-cp38-cp38-win32.whl", hash = "sha256:df423f351b162a702c053d5dddc0fc0ef9a9e27ea3f449781ace5f906b664428"}, - {file = "coverage-7.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:f2501d60d7497fd55e391f423f965bbe9e650e9ffc3c627d5f0ac516026000b8"}, - {file = "coverage-7.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7221f9ac9dad9492cecab6f676b3eaf9185141539d5c9689d13fd6b0d7de840c"}, - {file = "coverage-7.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddaaa91bfc4477d2871442bbf30a125e8fe6b05da8a0015507bfbf4718228ab2"}, - {file = "coverage-7.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cbe651f3904e28f3a55d6f371203049034b4ddbce65a54527a3f189ca3b390"}, - {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831b476d79408ab6ccfadaaf199906c833f02fdb32c9ab907b1d4aa0713cfa3b"}, - {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46c3d091059ad0b9c59d1034de74a7f36dcfa7f6d3bde782c49deb42438f2450"}, - {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4d5fae0a22dc86259dee66f2cc6c1d3e490c4a1214d7daa2a93d07491c5c04b6"}, - {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:07ed352205574aad067482e53dd606926afebcb5590653121063fbf4e2175166"}, - {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:49c76cdfa13015c4560702574bad67f0e15ca5a2872c6a125f6327ead2b731dd"}, - {file = "coverage-7.6.0-cp39-cp39-win32.whl", hash = "sha256:482855914928c8175735a2a59c8dc5806cf7d8f032e4820d52e845d1f731dca2"}, - {file = "coverage-7.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:543ef9179bc55edfd895154a51792b01c017c87af0ebaae092720152e19e42ca"}, - {file = "coverage-7.6.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:6fe885135c8a479d3e37a7aae61cbd3a0fb2deccb4dda3c25f92a49189f766d6"}, - {file = "coverage-7.6.0.tar.gz", hash = "sha256:289cc803fa1dc901f84701ac10c9ee873619320f2f9aff38794db4a4a0268d51"}, + {file = "coverage-7.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16"}, + {file = "coverage-7.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36"}, + {file = "coverage-7.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02"}, + {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc"}, + {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23"}, + {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34"}, + {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c"}, + {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959"}, + {file = "coverage-7.6.1-cp310-cp310-win32.whl", hash = "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232"}, + {file = "coverage-7.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0"}, + {file = "coverage-7.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93"}, + {file = "coverage-7.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3"}, + {file = "coverage-7.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff"}, + {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d"}, + {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6"}, + {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56"}, + {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234"}, + {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133"}, + {file = "coverage-7.6.1-cp311-cp311-win32.whl", hash = "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c"}, + {file = "coverage-7.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6"}, + {file = "coverage-7.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778"}, + {file = "coverage-7.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391"}, + {file = "coverage-7.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8"}, + {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d"}, + {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca"}, + {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163"}, + {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a"}, + {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d"}, + {file = "coverage-7.6.1-cp312-cp312-win32.whl", hash = "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5"}, + {file = "coverage-7.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb"}, + {file = "coverage-7.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106"}, + {file = "coverage-7.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9"}, + {file = "coverage-7.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c"}, + {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a"}, + {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060"}, + {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862"}, + {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388"}, + {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155"}, + {file = "coverage-7.6.1-cp313-cp313-win32.whl", hash = "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a"}, + {file = "coverage-7.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129"}, + {file = "coverage-7.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e"}, + {file = "coverage-7.6.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962"}, + {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb"}, + {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704"}, + {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b"}, + {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f"}, + {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223"}, + {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3"}, + {file = "coverage-7.6.1-cp313-cp313t-win32.whl", hash = "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f"}, + {file = "coverage-7.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657"}, + {file = "coverage-7.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0"}, + {file = "coverage-7.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a"}, + {file = "coverage-7.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b"}, + {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3"}, + {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de"}, + {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6"}, + {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569"}, + {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989"}, + {file = "coverage-7.6.1-cp38-cp38-win32.whl", hash = "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7"}, + {file = "coverage-7.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8"}, + {file = "coverage-7.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255"}, + {file = "coverage-7.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8"}, + {file = "coverage-7.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2"}, + {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a"}, + {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc"}, + {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004"}, + {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb"}, + {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36"}, + {file = "coverage-7.6.1-cp39-cp39-win32.whl", hash = "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c"}, + {file = "coverage-7.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca"}, + {file = "coverage-7.6.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df"}, + {file = "coverage-7.6.1.tar.gz", hash = "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d"}, ] [package.extras] @@ -1102,33 +1122,13 @@ tests = ["django", "hypothesis", "pytest", "pytest-asyncio"] [[package]] name = "debugpy" -version = "1.8.2" +version = "1.8.3" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7ee2e1afbf44b138c005e4380097d92532e1001580853a7cb40ed84e0ef1c3d2"}, - {file = "debugpy-1.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f8c3f7c53130a070f0fc845a0f2cee8ed88d220d6b04595897b66605df1edd6"}, - {file = "debugpy-1.8.2-cp310-cp310-win32.whl", hash = "sha256:f179af1e1bd4c88b0b9f0fa153569b24f6b6f3de33f94703336363ae62f4bf47"}, - {file = "debugpy-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:0600faef1d0b8d0e85c816b8bb0cb90ed94fc611f308d5fde28cb8b3d2ff0fe3"}, - {file = "debugpy-1.8.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8a13417ccd5978a642e91fb79b871baded925d4fadd4dfafec1928196292aa0a"}, - {file = "debugpy-1.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acdf39855f65c48ac9667b2801234fc64d46778021efac2de7e50907ab90c634"}, - {file = "debugpy-1.8.2-cp311-cp311-win32.whl", hash = "sha256:2cbd4d9a2fc5e7f583ff9bf11f3b7d78dfda8401e8bb6856ad1ed190be4281ad"}, - {file = "debugpy-1.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:d3408fddd76414034c02880e891ea434e9a9cf3a69842098ef92f6e809d09afa"}, - {file = "debugpy-1.8.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:5d3ccd39e4021f2eb86b8d748a96c766058b39443c1f18b2dc52c10ac2757835"}, - {file = "debugpy-1.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62658aefe289598680193ff655ff3940e2a601765259b123dc7f89c0239b8cd3"}, - {file = "debugpy-1.8.2-cp312-cp312-win32.whl", hash = "sha256:bd11fe35d6fd3431f1546d94121322c0ac572e1bfb1f6be0e9b8655fb4ea941e"}, - {file = "debugpy-1.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:15bc2f4b0f5e99bf86c162c91a74c0631dbd9cef3c6a1d1329c946586255e859"}, - {file = "debugpy-1.8.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:5a019d4574afedc6ead1daa22736c530712465c0c4cd44f820d803d937531b2d"}, - {file = "debugpy-1.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40f062d6877d2e45b112c0bbade9a17aac507445fd638922b1a5434df34aed02"}, - {file = "debugpy-1.8.2-cp38-cp38-win32.whl", hash = "sha256:c78ba1680f1015c0ca7115671fe347b28b446081dada3fedf54138f44e4ba031"}, - {file = "debugpy-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:cf327316ae0c0e7dd81eb92d24ba8b5e88bb4d1b585b5c0d32929274a66a5210"}, - {file = "debugpy-1.8.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1523bc551e28e15147815d1397afc150ac99dbd3a8e64641d53425dba57b0ff9"}, - {file = "debugpy-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e24ccb0cd6f8bfaec68d577cb49e9c680621c336f347479b3fce060ba7c09ec1"}, - {file = "debugpy-1.8.2-cp39-cp39-win32.whl", hash = "sha256:7f8d57a98c5a486c5c7824bc0b9f2f11189d08d73635c326abef268f83950326"}, - {file = "debugpy-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:16c8dcab02617b75697a0a925a62943e26a0330da076e2a10437edd9f0bf3755"}, - {file = "debugpy-1.8.2-py2.py3-none-any.whl", hash = "sha256:16e16df3a98a35c63c3ab1e4d19be4cbc7fdda92d9ddc059294f18910928e0ca"}, - {file = "debugpy-1.8.2.zip", hash = "sha256:95378ed08ed2089221896b9b3a8d021e642c24edc8fef20e5d4342ca8be65c00"}, + {file = "debugpy-1.8.3-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:0df2c400853150af14996b8d1a4f54d45ffa98e76c0f3de30665e89e273ea293"}, + {file = "debugpy-1.8.3.zip", hash = "sha256:0f5a6326d9fc375b864ed368d06cddf2dabe5135511e71cde3758be699847d36"}, ] [[package]] @@ -1203,13 +1203,13 @@ files = [ [[package]] name = "django-filter" -version = "24.2" +version = "24.3" description = "Django-filter is a reusable Django application for allowing users to filter querysets dynamically." optional = false python-versions = ">=3.8" files = [ - {file = "django-filter-24.2.tar.gz", hash = "sha256:48e5fc1da3ccd6ca0d5f9bb550973518ce977a4edde9d2a8a154a7f4f0b9f96e"}, - {file = "django_filter-24.2-py3-none-any.whl", hash = "sha256:df2ee9857e18d38bed203c8745f62a803fa0f31688c9fe6f8e868120b1848e48"}, + {file = "django_filter-24.3-py3-none-any.whl", hash = "sha256:c4852822928ce17fb699bcfccd644b3574f1a2d80aeb2b4ff4f16b02dd49dc64"}, + {file = "django_filter-24.3.tar.gz", hash = "sha256:d8ccaf6732afd21ca0542f6733b11591030fa98669f8d15599b358e24a2cd9c3"}, ] [package.dependencies] @@ -1525,20 +1525,6 @@ files = [ dnspython = ">=2.0.0" idna = ">=2.0.0" -[[package]] -name = "facebook-sdk" -version = "3.1.0" -description = "This client library is designed to support the Facebook Graph API and the official Facebook JavaScript SDK, which is the canonical way to implement Facebook authentication." -optional = false -python-versions = "*" -files = [ - {file = "facebook-sdk-3.1.0.tar.gz", hash = "sha256:cabcd2e69ea3d9f042919c99b353df7aa1e2be86d040121f6e9f5e63c1cf0f8d"}, - {file = "facebook_sdk-3.1.0-py2.py3-none-any.whl", hash = "sha256:2e987b3e0f466a6f4ee77b935eb023dba1384134f004a2af21f1cfff7fe0806e"}, -] - -[package.dependencies] -requests = "*" - [[package]] name = "fido2" version = "1.1.3" @@ -2810,13 +2796,13 @@ dev = ["bumpver", "isort", "mypy", "pylint", "pytest", "yapf"] [[package]] name = "msgraph-sdk" -version = "1.5.3" +version = "1.5.4" description = "The Microsoft Graph Python SDK" optional = false python-versions = ">=3.8" files = [ - {file = "msgraph_sdk-1.5.3-py3-none-any.whl", hash = "sha256:47aecbeb3bdb76fcfb4b7535aa5defc336249c42b0d7cbb9480244045449cb12"}, - {file = "msgraph_sdk-1.5.3.tar.gz", hash = "sha256:34dd5a9a55287cfc8a3d5e301acdf65e46462011d451f2992fdbf31851a94e8f"}, + {file = "msgraph_sdk-1.5.4-py3-none-any.whl", hash = "sha256:9ea349f30cc4a03edb587e26554c7a4839a38c2ef30d4b5396882fd2be82dcac"}, + {file = "msgraph_sdk-1.5.4.tar.gz", hash = "sha256:b0e146328d136d1db175938d8fc901f3bb32acf3ea6fe93c0dc7c5a0abc45e39"}, ] [package.dependencies] @@ -2825,7 +2811,7 @@ microsoft-kiota-abstractions = ">=1.3.0,<2.0.0" microsoft-kiota-authentication-azure = ">=1.0.0,<2.0.0" microsoft-kiota-http = ">=1.0.0,<2.0.0" microsoft-kiota-serialization-form = ">=0.1.0" -microsoft-kiota-serialization-json = ">=1.0.0,<2.0.0" +microsoft-kiota-serialization-json = ">=1.3.0,<2.0.0" microsoft-kiota-serialization-multipart = ">=0.1.0" microsoft-kiota-serialization-text = ">=1.0.0,<2.0.0" msgraph_core = ">=1.0.0" @@ -2979,9 +2965,14 @@ version = "0.0.14" description = "Python module for oci specifications" optional = false python-versions = "*" -files = [ - {file = "opencontainers-0.0.14.tar.gz", hash = "sha256:fde3b8099b56b5c956415df8933e2227e1914e805a277b844f2f9e52341738f2"}, -] +files = [] +develop = false + +[package.source] +type = "git" +url = "https://github.com/vsoch/oci-python" +reference = "20d69d9cc50a0fef31605b46f06da0c94f1ec3cf" +resolved_reference = "20d69d9cc50a0fef31605b46f06da0c94f1ec3cf" [[package]] name = "opentelemetry-api" @@ -3614,13 +3605,13 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyjwt" -version = "2.8.0" +version = "2.9.0" description = "JSON Web Token implementation in Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, - {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, + {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, + {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, ] [package.dependencies] @@ -3628,8 +3619,8 @@ cryptography = {version = ">=3.4.0", optional = true, markers = "extra == \"cryp [package.extras] crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] +dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] @@ -4151,29 +4142,29 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruff" -version = "0.5.5" +version = "0.5.6" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.5.5-py3-none-linux_armv6l.whl", hash = "sha256:605d589ec35d1da9213a9d4d7e7a9c761d90bba78fc8790d1c5e65026c1b9eaf"}, - {file = "ruff-0.5.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00817603822a3e42b80f7c3298c8269e09f889ee94640cd1fc7f9329788d7bf8"}, - {file = "ruff-0.5.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:187a60f555e9f865a2ff2c6984b9afeffa7158ba6e1eab56cb830404c942b0f3"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe26fc46fa8c6e0ae3f47ddccfbb136253c831c3289bba044befe68f467bfb16"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4ad25dd9c5faac95c8e9efb13e15803cd8bbf7f4600645a60ffe17c73f60779b"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f70737c157d7edf749bcb952d13854e8f745cec695a01bdc6e29c29c288fc36e"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:cfd7de17cef6ab559e9f5ab859f0d3296393bc78f69030967ca4d87a541b97a0"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a09b43e02f76ac0145f86a08e045e2ea452066f7ba064fd6b0cdccb486f7c3e7"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0b856cb19c60cd40198be5d8d4b556228e3dcd545b4f423d1ad812bfdca5884"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3687d002f911e8a5faf977e619a034d159a8373514a587249cc00f211c67a091"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ac9dc814e510436e30d0ba535f435a7f3dc97f895f844f5b3f347ec8c228a523"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:af9bdf6c389b5add40d89b201425b531e0a5cceb3cfdcc69f04d3d531c6be74f"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d40a8533ed545390ef8315b8e25c4bb85739b90bd0f3fe1280a29ae364cc55d8"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cab904683bf9e2ecbbe9ff235bfe056f0eba754d0168ad5407832928d579e7ab"}, - {file = "ruff-0.5.5-py3-none-win32.whl", hash = "sha256:696f18463b47a94575db635ebb4c178188645636f05e934fdf361b74edf1bb2d"}, - {file = "ruff-0.5.5-py3-none-win_amd64.whl", hash = "sha256:50f36d77f52d4c9c2f1361ccbfbd09099a1b2ea5d2b2222c586ab08885cf3445"}, - {file = "ruff-0.5.5-py3-none-win_arm64.whl", hash = "sha256:3191317d967af701f1b73a31ed5788795936e423b7acce82a2b63e26eb3e89d6"}, - {file = "ruff-0.5.5.tar.gz", hash = "sha256:cc5516bdb4858d972fbc31d246bdb390eab8df1a26e2353be2dbc0c2d7f5421a"}, + {file = "ruff-0.5.6-py3-none-linux_armv6l.whl", hash = "sha256:a0ef5930799a05522985b9cec8290b185952f3fcd86c1772c3bdbd732667fdcd"}, + {file = "ruff-0.5.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b652dc14f6ef5d1552821e006f747802cc32d98d5509349e168f6bf0ee9f8f42"}, + {file = "ruff-0.5.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:80521b88d26a45e871f31e4b88938fd87db7011bb961d8afd2664982dfc3641a"}, + {file = "ruff-0.5.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9bc8f328a9f1309ae80e4d392836e7dbc77303b38ed4a7112699e63d3b066ab"}, + {file = "ruff-0.5.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4d394940f61f7720ad371ddedf14722ee1d6250fd8d020f5ea5a86e7be217daf"}, + {file = "ruff-0.5.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111a99cdb02f69ddb2571e2756e017a1496c2c3a2aeefe7b988ddab38b416d36"}, + {file = "ruff-0.5.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e395daba77a79f6dc0d07311f94cc0560375ca20c06f354c7c99af3bf4560c5d"}, + {file = "ruff-0.5.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c476acb43c3c51e3c614a2e878ee1589655fa02dab19fe2db0423a06d6a5b1b6"}, + {file = "ruff-0.5.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2ff8003f5252fd68425fd53d27c1f08b201d7ed714bb31a55c9ac1d4c13e2eb"}, + {file = "ruff-0.5.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c94e084ba3eaa80c2172918c2ca2eb2230c3f15925f4ed8b6297260c6ef179ad"}, + {file = "ruff-0.5.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1f77c1c3aa0669fb230b06fb24ffa3e879391a3ba3f15e3d633a752da5a3e670"}, + {file = "ruff-0.5.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f908148c93c02873210a52cad75a6eda856b2cbb72250370ce3afef6fb99b1ed"}, + {file = "ruff-0.5.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:563a7ae61ad284187d3071d9041c08019975693ff655438d8d4be26e492760bd"}, + {file = "ruff-0.5.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:94fe60869bfbf0521e04fd62b74cbca21cbc5beb67cbb75ab33fe8c174f54414"}, + {file = "ruff-0.5.6-py3-none-win32.whl", hash = "sha256:e6a584c1de6f8591c2570e171cc7ce482bb983d49c70ddf014393cd39e9dfaed"}, + {file = "ruff-0.5.6-py3-none-win_amd64.whl", hash = "sha256:d7fe7dccb1a89dc66785d7aa0ac283b2269712d8ed19c63af908fdccca5ccc1a"}, + {file = "ruff-0.5.6-py3-none-win_arm64.whl", hash = "sha256:57c6c0dd997b31b536bff49b9eee5ed3194d60605a4427f735eeb1f9c1b8d264"}, + {file = "ruff-0.5.6.tar.gz", hash = "sha256:07c9e3c2a8e1fe377dd460371c3462671a728c981c3205a5217291422209f642"}, ] [[package]] @@ -4771,13 +4762,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "uvicorn" -version = "0.30.4" +version = "0.30.5" description = "The lightning-fast ASGI server." optional = false python-versions = ">=3.8" files = [ - {file = "uvicorn-0.30.4-py3-none-any.whl", hash = "sha256:06b00e3087e58c6865c284143c0c42f810b32ff4f265ab19d08c566f74a08728"}, - {file = "uvicorn-0.30.4.tar.gz", hash = "sha256:00db9a9e3711a5fa59866e2b02fac69d8dc70ce0814aaec9a66d1d9e5c832a30"}, + {file = "uvicorn-0.30.5-py3-none-any.whl", hash = "sha256:b2d86de274726e9878188fa07576c9ceeff90a839e2b6e25c917fe05f5a6c835"}, + {file = "uvicorn-0.30.5.tar.gz", hash = "sha256:ac6fdbd4425c5fd17a9fe39daf4d4d075da6fdc80f653e5894cdc2fd98752bee"}, ] [package.dependencies] @@ -5452,4 +5443,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "~3.12" -content-hash = "ee92e7bc797266450be0b5f0ffec79d2a69161e1e48024474e00c14e3120a63a" +content-hash = "1147e0dceb83f7c487e6b4d96270bad644e6618585e00fa2a1fc89cbf2efe300" diff --git a/pyproject.toml b/pyproject.toml index c4b4c4f42578..45fae0506b23 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "authentik" -version = "2024.6.2" +version = "2024.6.3" description = "" authors = ["authentik Team "] @@ -109,7 +109,6 @@ drf-orjson-renderer = "*" drf-spectacular = "*" dumb-init = "*" duo-client = "*" -facebook-sdk = "*" fido2 = "*" flower = "*" geoip2 = "*" @@ -120,7 +119,7 @@ kubernetes = "*" ldap3 = "*" lxml = "*" msgraph-sdk = "*" -opencontainers = { extras = ["reggie"], version = "*" } +opencontainers = { git = "https://github.com/vsoch/oci-python", rev = "20d69d9cc50a0fef31605b46f06da0c94f1ec3cf", extras = ["reggie"] } packaging = "*" paramiko = "*" psycopg = { extras = ["c"], version = "*" } diff --git a/schema.yml b/schema.yml index 169f01e51a69..e8839957af31 100644 --- a/schema.yml +++ b/schema.yml @@ -1,7 +1,7 @@ openapi: 3.0.3 info: title: authentik - version: 2024.6.2 + version: 2024.6.3 description: Making authentication simple. contact: email: hello@goauthentik.io @@ -2682,6 +2682,10 @@ paths: name: name schema: type: string + - in: query + name: only_with_launch_url + schema: + type: boolean - name: ordering required: false in: query @@ -14825,6 +14829,10 @@ paths: operationId: propertymappings_saml_list description: SAMLPropertyMapping Viewset parameters: + - in: query + name: friendly_name + schema: + type: string - in: query name: managed schema: @@ -14859,6 +14867,10 @@ paths: description: Number of results to return per page. schema: type: integer + - in: query + name: saml_name + schema: + type: string - name: search required: false in: query @@ -15953,10 +15965,6 @@ paths: operationId: propertymappings_source_scim_list description: SCIMSourcePropertyMapping Viewset parameters: - - in: query - name: expression - schema: - type: string - in: query name: managed schema: @@ -15965,6 +15973,10 @@ paths: type: string explode: true style: form + - in: query + name: managed__isnull + schema: + type: boolean - in: query name: name schema: @@ -15987,11 +15999,6 @@ paths: description: Number of results to return per page. schema: type: integer - - in: query - name: pm_uuid - schema: - type: string - format: uuid - name: search required: false in: query @@ -21393,7 +21400,7 @@ paths: description: '' /rbac/permissions/assigned_by_roles/{uuid}/assign/: post: - operationId: rbac_permissions_assigned_by_roles_assign_create + operationId: rbac_permissions_assigned_by_roles_assign description: |- Assign permission(s) to role. When `object_pk` is set, the permissions are only assigned to the specific object, otherwise they are assigned globally. @@ -21416,8 +21423,14 @@ paths: security: - authentik: [] responses: - '204': - description: Successfully assigned + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PermissionAssignResult' + description: '' '400': content: application/json: @@ -21614,7 +21627,7 @@ paths: description: '' /rbac/permissions/assigned_by_users/{id}/assign/: post: - operationId: rbac_permissions_assigned_by_users_assign_create + operationId: rbac_permissions_assigned_by_users_assign description: Assign permission(s) to user parameters: - in: path @@ -21634,8 +21647,14 @@ paths: security: - authentik: [] responses: - '204': - description: Successfully assigned + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PermissionAssignResult' + description: '' '400': content: application/json: @@ -21719,7 +21738,6 @@ paths: schema: type: string format: uuid - required: true tags: - rbac security: @@ -21743,6 +21761,146 @@ paths: schema: $ref: '#/components/schemas/GenericError' description: '' + /rbac/permissions/roles/{id}/: + get: + operationId: rbac_permissions_roles_retrieve + description: Get a role's assigned object permissions + parameters: + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this group object permission. + required: true + tags: + - rbac + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExtraRoleObjectPermission' + description: '' + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ValidationError' + description: '' + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/GenericError' + description: '' + put: + operationId: rbac_permissions_roles_update + description: Get a role's assigned object permissions + parameters: + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this group object permission. + required: true + tags: + - rbac + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExtraRoleObjectPermissionRequest' + required: true + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExtraRoleObjectPermission' + description: '' + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ValidationError' + description: '' + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/GenericError' + description: '' + patch: + operationId: rbac_permissions_roles_partial_update + description: Get a role's assigned object permissions + parameters: + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this group object permission. + required: true + tags: + - rbac + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedExtraRoleObjectPermissionRequest' + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExtraRoleObjectPermission' + description: '' + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ValidationError' + description: '' + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/GenericError' + description: '' + delete: + operationId: rbac_permissions_roles_destroy + description: Get a role's assigned object permissions + parameters: + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this group object permission. + required: true + tags: + - rbac + security: + - authentik: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ValidationError' + description: '' + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/GenericError' + description: '' /rbac/permissions/users/: get: operationId: rbac_permissions_users_list @@ -21776,7 +21934,6 @@ paths: name: user_id schema: type: integer - required: true tags: - rbac security: @@ -21800,6 +21957,146 @@ paths: schema: $ref: '#/components/schemas/GenericError' description: '' + /rbac/permissions/users/{id}/: + get: + operationId: rbac_permissions_users_retrieve + description: Get a users's assigned object permissions + parameters: + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this user object permission. + required: true + tags: + - rbac + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExtraUserObjectPermission' + description: '' + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ValidationError' + description: '' + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/GenericError' + description: '' + put: + operationId: rbac_permissions_users_update + description: Get a users's assigned object permissions + parameters: + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this user object permission. + required: true + tags: + - rbac + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExtraUserObjectPermissionRequest' + required: true + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExtraUserObjectPermission' + description: '' + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ValidationError' + description: '' + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/GenericError' + description: '' + patch: + operationId: rbac_permissions_users_partial_update + description: Get a users's assigned object permissions + parameters: + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this user object permission. + required: true + tags: + - rbac + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedExtraUserObjectPermissionRequest' + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ExtraUserObjectPermission' + description: '' + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ValidationError' + description: '' + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/GenericError' + description: '' + delete: + operationId: rbac_permissions_users_destroy + description: Get a users's assigned object permissions + parameters: + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this user object permission. + required: true + tags: + - rbac + security: + - authentik: [] + responses: + '204': + description: No response body + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/ValidationError' + description: '' + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/GenericError' + description: '' /rbac/roles/: get: operationId: rbac_roles_list @@ -36544,8 +36841,6 @@ components: readOnly: true object_pk: type: string - title: Object ID - readOnly: true name: type: string readOnly: true @@ -36575,6 +36870,15 @@ components: - name - object_description - object_pk + ExtraRoleObjectPermissionRequest: + type: object + description: User permission with additional object-related data + properties: + object_pk: + type: string + minLength: 1 + required: + - object_pk ExtraUserObjectPermission: type: object description: User permission with additional object-related data @@ -36594,8 +36898,6 @@ components: readOnly: true object_pk: type: string - title: Object ID - readOnly: true name: type: string readOnly: true @@ -36625,6 +36927,15 @@ components: - name - object_description - object_pk + ExtraUserObjectPermissionRequest: + type: object + description: User permission with additional object-related data + properties: + object_pk: + type: string + minLength: 1 + required: + - object_pk FilePathRequest: type: object description: Serializer to upload file @@ -42500,6 +42811,20 @@ components: expression: type: string minLength: 1 + PatchedExtraRoleObjectPermissionRequest: + type: object + description: User permission with additional object-related data + properties: + object_pk: + type: string + minLength: 1 + PatchedExtraUserObjectPermissionRequest: + type: object + description: User permission with additional object-related data + properties: + object_pk: + type: string + minLength: 1 PatchedFlowRequest: type: object description: Flow Serializer @@ -44497,6 +44822,14 @@ components: minLength: 1 required: - permissions + PermissionAssignResult: + type: object + description: Result from assigning permissions to a user/role + properties: + id: + type: string + required: + - id PlexAuthenticationChallenge: type: object description: Challenge shown to the user in identification stage @@ -46317,8 +46650,6 @@ components: readOnly: true object_pk: type: string - title: Object ID - readOnly: true name: type: string readOnly: true @@ -49162,8 +49493,6 @@ components: readOnly: true object_pk: type: string - title: Object ID - readOnly: true name: type: string readOnly: true diff --git a/web/package-lock.json b/web/package-lock.json index edcd268fe9c0..ff0011ed9545 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -19,7 +19,7 @@ "@floating-ui/dom": "^1.6.8", "@formatjs/intl-listformat": "^7.5.7", "@fortawesome/fontawesome-free": "^6.6.0", - "@goauthentik/api": "^2024.6.2-1722467631", + "@goauthentik/api": "^2024.6.2-1722867797", "@lit/context": "^1.1.2", "@lit/localize": "^0.12.1", "@lit/reactive-element": "^2.0.4", @@ -27,14 +27,14 @@ "@open-wc/lit-helpers": "^0.7.0", "@patternfly/elements": "^3.0.2", "@patternfly/patternfly": "^4.224.2", - "@sentry/browser": "^8.21.0", + "@sentry/browser": "^8.22.0", "@webcomponents/webcomponentsjs": "^2.8.0", "base64-js": "^1.5.1", "chart.js": "^4.4.3", "chartjs-adapter-moment": "^1.0.1", "codemirror": "^6.0.1", "construct-style-sheets-polyfill": "^3.1.0", - "core-js": "^3.37.1", + "core-js": "^3.38.0", "country-flag-icons": "^1.5.13", "fuse.js": "^7.0.0", "guacamole-common-js": "^1.5.0", @@ -60,18 +60,18 @@ "@changesets/cli": "^2.27.5", "@custom-elements-manifest/analyzer": "^0.10.2", "@genesiscommunitysuccess/custom-elements-lsp": "^5.0.3", - "@hcaptcha/types": "^1.0.3", + "@hcaptcha/types": "^1.0.4", "@jeysal/storybook-addon-css-user-preferences": "^0.2.0", "@lit/localize-tools": "^0.7.2", "@rollup/plugin-replace": "^5.0.7", - "@spotlightjs/spotlight": "^2.2.2", - "@storybook/addon-essentials": "^8.2.6", - "@storybook/addon-links": "^8.2.6", + "@spotlightjs/spotlight": "^2.3.0", + "@storybook/addon-essentials": "^8.2.7", + "@storybook/addon-links": "^8.2.7", "@storybook/api": "^7.6.17", "@storybook/blocks": "^8.0.8", - "@storybook/manager-api": "^8.2.6", - "@storybook/web-components": "^8.2.6", - "@storybook/web-components-vite": "^8.2.6", + "@storybook/manager-api": "^8.2.7", + "@storybook/web-components": "^8.2.7", + "@storybook/web-components-vite": "^8.2.7", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/chart.js": "^2.9.41", "@types/codemirror": "5.60.15", @@ -123,9 +123,9 @@ "@esbuild/darwin-arm64": "^0.23.0", "@esbuild/linux-amd64": "^0.18.11", "@esbuild/linux-arm64": "^0.23.0", - "@rollup/rollup-darwin-arm64": "4.19.1", - "@rollup/rollup-linux-arm64-gnu": "4.19.1", - "@rollup/rollup-linux-x64-gnu": "4.19.1" + "@rollup/rollup-darwin-arm64": "4.20.0", + "@rollup/rollup-linux-arm64-gnu": "4.20.0", + "@rollup/rollup-linux-x64-gnu": "4.20.0" } }, "node_modules/@ampproject/remapping": { @@ -1198,12 +1198,12 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.7.tgz", - "integrity": "sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz", + "integrity": "sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", "@babel/plugin-syntax-flow": "^7.24.7" }, "engines": { @@ -3720,14 +3720,15 @@ "dev": true }, "node_modules/@goauthentik/api": { - "version": "2024.6.2-1722467631", - "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2024.6.2-1722467631.tgz", - "integrity": "sha512-fTiW4Esf73TcT8FjfadknvrrrtI0A7s++nGSSqnB8/MOZv42ZjPTK1lJ9BIDSzPvYYK7fwgwEUKPqiHMpZ5v0g==" + "version": "2024.6.2-1722867797", + "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2024.6.2-1722867797.tgz", + "integrity": "sha512-pucWvrEt+0xzAlGCB6mNOCBhpN9ENAqMNsTtp3DwlHWZ0dEc8ereGL3aDlpMkKH/hsYjbblVeowNcgLVZxtiKQ==" }, "node_modules/@hcaptcha/types": { - "version": "1.0.3", - "dev": true, - "license": "MIT" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@hcaptcha/types/-/types-1.0.4.tgz", + "integrity": "sha512-4CBrdr9DFC7sYZPRvLol82UVZVne8B2skBGfMDUqPC6q9vzHMwv/cNxXW44EIa6DaFDr+EWNSnKJpHxWr7Q42Q==", + "dev": true }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", @@ -6288,9 +6289,9 @@ "peer": true }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.1.tgz", - "integrity": "sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", + "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", "cpu": [ "arm64" ], @@ -6342,9 +6343,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.1.tgz", - "integrity": "sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", + "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", "cpu": [ "arm64" ], @@ -6410,9 +6411,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.1.tgz", - "integrity": "sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", + "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", "cpu": [ "x64" ], @@ -6478,102 +6479,102 @@ "peer": true }, "node_modules/@sentry-internal/browser-utils": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.21.0.tgz", - "integrity": "sha512-qN95Yuc9csDW6H4LEET/qkAA87WIbYIq3x2EY8YzfmjyPvjgfGoOD3wz2ROiitKNgB291rCtnJiSMKE0GinSRg==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.22.0.tgz", + "integrity": "sha512-R0u8KPaSivueIwUOhmYxcisKaJq3gx+I0xOcWoluDB3OI1Ds/QOSP/vmTsMg/mjwG/nUJ8RRM8pj0s8vlqCrjg==", "dependencies": { - "@sentry/core": "8.21.0", - "@sentry/types": "8.21.0", - "@sentry/utils": "8.21.0" + "@sentry/core": "8.22.0", + "@sentry/types": "8.22.0", + "@sentry/utils": "8.22.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/feedback": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.21.0.tgz", - "integrity": "sha512-vAArMtoYvsBbCvB2KGB4v6uzmBxHCimSkBtfq6CuAv0+mdPGFbhPd+pzKcMovXZD1tji4lY89DbFxRsuliskWw==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.22.0.tgz", + "integrity": "sha512-Sy2+v0xBmVnZ5LQ48603CvLy5vVQvAZ+hc9xQSAHexts07NkvApMU1qv26YNwxlAWfDha1wXiW6ryd4YDzaoVA==", "dependencies": { - "@sentry/core": "8.21.0", - "@sentry/types": "8.21.0", - "@sentry/utils": "8.21.0" + "@sentry/core": "8.22.0", + "@sentry/types": "8.22.0", + "@sentry/utils": "8.22.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.21.0.tgz", - "integrity": "sha512-di2rLyya4yPA+5LybX5+52HBrW4D8e22yKpERu7cnwWi3+ZAjoDf3M/CmKM9kCPFfSE/tHWlm+CYDl2WhslFLA==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.22.0.tgz", + "integrity": "sha512-sF8RyMPJP1fSIyyBDAbtybvKCu0dy8ZAfMwLP7ZqEnWrhZqktVuqM7/++EAFMlD5YaWJXm1IDuOXjgSQjUtSIQ==", "dependencies": { - "@sentry-internal/browser-utils": "8.21.0", - "@sentry/core": "8.21.0", - "@sentry/types": "8.21.0", - "@sentry/utils": "8.21.0" + "@sentry-internal/browser-utils": "8.22.0", + "@sentry/core": "8.22.0", + "@sentry/types": "8.22.0", + "@sentry/utils": "8.22.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.21.0.tgz", - "integrity": "sha512-vm0ZLY5DpjjFodKDhD79ZiLLQaHnA6XG5gTT5HcWhMwAykYNVfXRaNC0dq3ydOw0oDgPnOAnL/RuOXCgYahVdQ==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.22.0.tgz", + "integrity": "sha512-/gV8qN3JqWw0LXTMuCGB8RDI8Bx1VESNRBdh/7Cmc5+hxYBfcketuix3S8mHWcE/JO+Ed9g1Abzys6GphTB9LA==", "dependencies": { - "@sentry-internal/replay": "8.21.0", - "@sentry/core": "8.21.0", - "@sentry/types": "8.21.0", - "@sentry/utils": "8.21.0" + "@sentry-internal/replay": "8.22.0", + "@sentry/core": "8.22.0", + "@sentry/types": "8.22.0", + "@sentry/utils": "8.22.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/browser": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.21.0.tgz", - "integrity": "sha512-pYlnQQbkDZfULT8UjGOWY8U+z+8La4dvTtetWYW3SI/colFR3YuZyJvGAJQkwKJpxi4VxGAxQglqj+HgsQua1A==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.22.0.tgz", + "integrity": "sha512-t3b+/9WWcP9SQTWwrHrB57B33ENgmUjyFlW2+JSlCXkSJBSmAoquPZ/GPjOuPaSr3HIA0mu9uEr4A41d5diASQ==", "dependencies": { - "@sentry-internal/browser-utils": "8.21.0", - "@sentry-internal/feedback": "8.21.0", - "@sentry-internal/replay": "8.21.0", - "@sentry-internal/replay-canvas": "8.21.0", - "@sentry/core": "8.21.0", - "@sentry/types": "8.21.0", - "@sentry/utils": "8.21.0" + "@sentry-internal/browser-utils": "8.22.0", + "@sentry-internal/feedback": "8.22.0", + "@sentry-internal/replay": "8.22.0", + "@sentry-internal/replay-canvas": "8.22.0", + "@sentry/core": "8.22.0", + "@sentry/types": "8.22.0", + "@sentry/utils": "8.22.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/core": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.21.0.tgz", - "integrity": "sha512-1eW0HKxpBz23oWR3yshl7kVpoJSq1DtqnSIRK3JkV72ytO+UD5sbGQ2iCzmXrefJHP555EOrui2eMm+akq2sDA==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.22.0.tgz", + "integrity": "sha512-fYPnxp7UkY2tckaOtivIySxnJvlbekuxs+Qi6rkUv9JpF+TYKpt7OPNUAbgVIhS0xazAEN6iKTfmnmpUbFRLmQ==", "dependencies": { - "@sentry/types": "8.21.0", - "@sentry/utils": "8.21.0" + "@sentry/types": "8.22.0", + "@sentry/utils": "8.22.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/types": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.21.0.tgz", - "integrity": "sha512-2hF7lhDCGBN8VkIkHTuh9pL3QnJ3QBkIDAcKosFCS5tHGp68zGJgE0VWg2yQvqjZM06DnFT9CUKF9ZGv45FS3w==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.22.0.tgz", + "integrity": "sha512-1MLK3xO+uF2oJaa+M98aLIrQsEHzV7xnVWPfE3MhejYLNQebj4rQnQKTut/xZNIF9W0Q+bRcakLarC3ce2a74g==", "engines": { "node": ">=14.18" } }, "node_modules/@sentry/utils": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.21.0.tgz", - "integrity": "sha512-Evq5goV8CKLISuULenqJm8VyIYaKa6wDAYIHfcDmSyCJIEDlEpRb8S7LcKdYsf6h0FdGy9ofv5ksgMPCqYq7eg==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.22.0.tgz", + "integrity": "sha512-0ITG2+3EtyMtyc/nQG8aB9z9eIQ4L43nM/KuNgYSnM1vPl/zegbaLT0Ek/xkQB1OLIOLkEPQ6x9GWe+248/n3g==", "dependencies": { - "@sentry/types": "8.21.0" + "@sentry/types": "8.22.0" }, "engines": { "node": ">=14.18" @@ -6608,15 +6609,15 @@ } }, "node_modules/@spotlightjs/overlay": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@spotlightjs/overlay/-/overlay-2.2.0.tgz", - "integrity": "sha512-1Tw/yZXl6XC3ep1BPnBbPH1ZSAdhFri9CD7Zs2pC/8qCEMa2ucqYzStMqgi7kHqzNaqzNEqU6VZ6algT0wU+xA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@spotlightjs/overlay/-/overlay-2.2.1.tgz", + "integrity": "sha512-irQruLWY9U3Kijdx4vid+bqPXQih+UOxfeMw9NwhBIIKRNOGIXmXCsZExBhyySWj3BmP8aHZKTECbjkQ8Vvbfg==", "dev": true }, "node_modules/@spotlightjs/sidecar": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@spotlightjs/sidecar/-/sidecar-1.6.2.tgz", - "integrity": "sha512-tdmfXXSUQa3lFoueX52jUMx3S//J+Rx4oCeQpAsikh+rK7NfplC+mUaaZWYck/k1SLE/POiET0jJomsT7RHTXQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@spotlightjs/sidecar/-/sidecar-1.7.0.tgz", + "integrity": "sha512-XTasirfq6FCAmShtFGgw/hM/q5yWOKjpLN7WKrRdASD+aj5uPt1p1WUbpMBA0NaC7Acu1gvMKFgqhcJnDzaWIg==", "dev": true, "dependencies": { "kleur": "^4.1.5", @@ -6649,13 +6650,13 @@ } }, "node_modules/@spotlightjs/spotlight": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@spotlightjs/spotlight/-/spotlight-2.2.2.tgz", - "integrity": "sha512-mSFWJpsaz31N/7fDJvhIAiJhLreeopNcq8MpOzyFzyXZpW68bElNB/euGOHdKWx5jv92tKAhbq2vkr95ZGWq6A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@spotlightjs/spotlight/-/spotlight-2.3.0.tgz", + "integrity": "sha512-lKE750puAx3nQ0gS9UZ7bXuAfymeEzMXx8FQYIXvWQOP+gcR+qluhMYcB0pcTlZco/4T2xQJ7tP/QKQycfbacQ==", "dev": true, "dependencies": { - "@spotlightjs/overlay": "2.2.0", - "@spotlightjs/sidecar": "1.6.2", + "@spotlightjs/overlay": "2.2.1", + "@spotlightjs/sidecar": "1.7.0", "import-meta-resolve": "^4.1.0" }, "bin": { @@ -6666,9 +6667,9 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.2.6.tgz", - "integrity": "sha512-iCsf3V28/jJ95w2zd8aSvR4denoA2UYV3fpNCTGOURqICyKOG3cyVxvqKp8Hhcwn7trNOsK+HlL6q5gpv56ViA==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.2.7.tgz", + "integrity": "sha512-wDnMGGmaogAForkNncfCx8BEDiwxeK8zC0lj8HkRPUuH6vTr81U5RIb12Wa2TnnNKLKMFAtyPSnofHf3OAfzZQ==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0", @@ -6682,13 +6683,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/addon-backgrounds": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.2.6.tgz", - "integrity": "sha512-61NFowA6EmCw+Eyzp0U4fat9MlPDdnT7aoDyzqSImLwWLITY9IvmWuTeo7XKJZN3fe22z1r7cZseKdYrtaHcKw==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.2.7.tgz", + "integrity": "sha512-kEL3kzYB0qNfpznchlGBnQm4iydyzdTYDPlCFsKUAxfUmJFnpz2H52Sl5lB+qJC/4OREp1Usltag7cUjeuyzMQ==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0", @@ -6700,13 +6701,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/addon-controls": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.2.6.tgz", - "integrity": "sha512-EHUwHy+oZZv3pXzN7fuXWrS/meHFjqcELY3RBvOyEkGf21agl6co6R1tnf6d5N5QoYAGfIbDO7dkauSL2RfNAw==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.2.7.tgz", + "integrity": "sha512-u3MruX0Zh6l1iNkoJdXwx+zPVqpDKypVrC0YdN3qQ3+mtTwqt35rgetYqtOkDnJ8mXKxo8A5giERKPIyzH9iBA==", "dev": true, "dependencies": { "dequal": "^2.0.2", @@ -6718,21 +6719,21 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/addon-docs": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.2.6.tgz", - "integrity": "sha512-qe7hxntaezqjKdU9QS+Q9NFL6i/uNdBxdvOnCKgPhBAY/zY6yhk5t3sOvonynPK5nkaNAowfSNPIzNxAXlJ1sA==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.2.7.tgz", + "integrity": "sha512-icLbvUWp95WUxq2sY+0xgJ49MaQ2HqtWY9RUJUZswJ/ZPJTCCpIoa6HP/NOB9A90Oec9n8sW+1CdDL4CxfxfZg==", "dev": true, "dependencies": { "@babel/core": "^7.24.4", "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.2.6", - "@storybook/csf-plugin": "8.2.6", + "@storybook/blocks": "8.2.7", + "@storybook/csf-plugin": "8.2.7", "@storybook/global": "^5.0.0", - "@storybook/react-dom-shim": "8.2.6", + "@storybook/react-dom-shim": "8.2.7", "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", "fs-extra": "^11.1.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", @@ -6746,7 +6747,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/addon-docs/node_modules/fs-extra": { @@ -6764,20 +6765,20 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.2.6.tgz", - "integrity": "sha512-diGjGZcZNov+RCAVQBTm8JKP2kUtMRuJIQFBeXdPWpu6hYBk6lw1FlAf2GywWGCvdny1pJT90hfoD33qUMNuDg==", - "dev": true, - "dependencies": { - "@storybook/addon-actions": "8.2.6", - "@storybook/addon-backgrounds": "8.2.6", - "@storybook/addon-controls": "8.2.6", - "@storybook/addon-docs": "8.2.6", - "@storybook/addon-highlight": "8.2.6", - "@storybook/addon-measure": "8.2.6", - "@storybook/addon-outline": "8.2.6", - "@storybook/addon-toolbars": "8.2.6", - "@storybook/addon-viewport": "8.2.6", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.2.7.tgz", + "integrity": "sha512-5qe7La9B2Z4Y9Fet3C35y8zOZwKgrqduNk8yAUmPRAOwopdo8SGKYpnFTnAtTfTCVk6Y+AZlRfQq0yLUk0Wl3g==", + "dev": true, + "dependencies": { + "@storybook/addon-actions": "8.2.7", + "@storybook/addon-backgrounds": "8.2.7", + "@storybook/addon-controls": "8.2.7", + "@storybook/addon-docs": "8.2.7", + "@storybook/addon-highlight": "8.2.7", + "@storybook/addon-measure": "8.2.7", + "@storybook/addon-outline": "8.2.7", + "@storybook/addon-toolbars": "8.2.7", + "@storybook/addon-viewport": "8.2.7", "ts-dedent": "^2.0.0" }, "funding": { @@ -6785,13 +6786,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/addon-highlight": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.2.6.tgz", - "integrity": "sha512-03cV9USsfP3bS4wYV06DYcIaGPfoheQe53Q0Jr1B2yJUVyIPKvmO2nGjLBsqzeL3Wl7vSfLQn0/dUdxCcbqLsw==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.2.7.tgz", + "integrity": "sha512-YhiLtyJ3NBNV3FQoQo8RFjj59QGSmmeSwRvCjoac6No2DY5vkMW5a8mW6ORr6QYd7ratRNtd3AsPqksZIehRwQ==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -6801,13 +6802,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/addon-links": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.2.6.tgz", - "integrity": "sha512-CUuU3nk8wyZ3bljCmOG/OCKazan+bPuNbCph8N763zyzdEx5M/CbBxV9d3pi3zjYpix7txlqrl2/YdMCejfyFw==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.2.7.tgz", + "integrity": "sha512-BJdR+vdj7S6Rtx8XqBNQzLsRGH/FYHJ6B6BPWGp0awVx0jNWJnxepINQov8i+GAddUVQGCNG+r4LI3QSD3tNAA==", "dev": true, "dependencies": { "@storybook/csf": "0.1.11", @@ -6820,7 +6821,7 @@ }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.2.6" + "storybook": "^8.2.7" }, "peerDependenciesMeta": { "react": { @@ -6829,9 +6830,9 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.2.6.tgz", - "integrity": "sha512-neI8YeSOAtOmzasLxo6O8ZLr2ebMaD7XVF+kYatl5+SpyuwwvUGcP9NkKe5S+mB8V2zxFUIsXS74XrhmQhRoaQ==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.2.7.tgz", + "integrity": "sha512-cS5njwlzrgrUjigUKjhbgJMT8bhPmVDK3FwrQqGhw6xYP4cd9/YBJ4RLNPWhOgGJ+EUTz7eFZ/Rkli5mNrhYcQ==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0", @@ -6842,13 +6843,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/addon-outline": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.2.6.tgz", - "integrity": "sha512-uAlPtqDWlq7MQQ4zJT80qdjbSdLF/zsvtPhidX6h9cjLKNPWAv79xJQ14AJHaMv+Hzy5xKnM4wdEhgPbzKabQg==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.2.7.tgz", + "integrity": "sha512-oFSo3o5eEUSsdGUSPV22pGoJ5lL0PGcqjcee2hyl0Rc60ovsnB1BEGOoaGk7/bmkywMxRZm8D6j85V8HftA/kg==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0", @@ -6859,26 +6860,26 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/addon-toolbars": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.2.6.tgz", - "integrity": "sha512-0JmRirMpxHS6VZzBk0kY871xWTpkk3TN4S1sxoFf5fcnCfVTHDjEJ5Ws/QWru1RJlIZHuJKRdQIA6Vuq5X+KfQ==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.2.7.tgz", + "integrity": "sha512-lEq0/uiogQSxS8pM5AqIexPiG2mudHUxgBiVWSspbTQDUbGBUxB64VYeYERat50N/GyS2iCymlfSkC+OUXaYLQ==", "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.2.6.tgz", - "integrity": "sha512-IAxH9H8tVFzSmZhKf5E+EALiAdkp19RzGqP/rWluD8LH7oW5HumQE/4oN0ZhVMy1RxYsCKFYjWyAp7AuxeMRSw==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.2.7.tgz", + "integrity": "sha512-d4+klwM/duTukNED1WCeBgIMqL5Jvm/iUs2rUc5HI1FGMEDYnoLVR2ztjivQs+6f1cJWuGwWZD/toB5pKHuR/A==", "dev": true, "dependencies": { "memoizerific": "^1.11.3" @@ -6888,7 +6889,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/addons": { @@ -7181,9 +7182,9 @@ } }, "node_modules/@storybook/blocks": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.2.6.tgz", - "integrity": "sha512-nMlZJjVTyfOJ6xwORptsNuS1AZZlDbJUVXc2R8uukGd5GIXxxCdrPk4NvUsjfQslMT9LhYuFld3z62FATsM2rw==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.2.7.tgz", + "integrity": "sha512-lZB4EzmY4ftgubkf7hmkALEhmfMhRkDRD5QjrgTZLRpdVXPzFUyljgLlTBhv34YTN+ZLYK618/4uSVJBpgoKeQ==", "dev": true, "dependencies": { "@storybook/csf": "0.1.11", @@ -7208,7 +7209,7 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.2.6" + "storybook": "^8.2.7" }, "peerDependenciesMeta": { "react": { @@ -7220,12 +7221,12 @@ } }, "node_modules/@storybook/builder-vite": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.2.6.tgz", - "integrity": "sha512-3PrsPZAedpQUbzRBEl23Fi1zG5bkQD76JsygVwmfiSm4Est4K8kW2AIB2ht9cIfKXh3mfQkyQlxXKHeQEHeQwQ==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.2.7.tgz", + "integrity": "sha512-CoEQjsfAQdZeAavfh1sBTMmC453kUFLKHr1zs6MZAlkejxky+U21t1Zb1qEU+IsEr/AlzvJr60pxUNL/dy6PVQ==", "dev": true, "dependencies": { - "@storybook/csf-plugin": "8.2.6", + "@storybook/csf-plugin": "8.2.7", "@types/find-cache-dir": "^3.2.1", "browser-assert": "^1.2.1", "es-module-lexer": "^1.5.0", @@ -7241,7 +7242,7 @@ }, "peerDependencies": { "@preact/preset-vite": "*", - "storybook": "^8.2.6", + "storybook": "^8.2.7", "typescript": ">= 4.3.x", "vite": "^4.0.0 || ^5.0.0", "vite-plugin-glimmerx": "*" @@ -7314,15 +7315,15 @@ } }, "node_modules/@storybook/codemod": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.2.6.tgz", - "integrity": "sha512-+mFJ6R+JhJLpU7VPDlXU5Yn6nqIBq745GaEosnIiFOdNo3jaxJ58wq/sGhbQvoCHPUxMA+sDQvR7pS62YFoLRQ==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.2.7.tgz", + "integrity": "sha512-D2sJcZMUO6Y7DNja4LvdT6uBee4bZbQKB904kEG9Kpr0XF20IHAP9BbkfG8HEFaS0GbJwvGvE03Sg+S1y+vO6Q==", "dev": true, "dependencies": { "@babel/core": "^7.24.4", "@babel/preset-env": "^7.24.4", "@babel/types": "^7.24.0", - "@storybook/core": "8.2.6", + "@storybook/core": "8.2.7", "@storybook/csf": "0.1.11", "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", @@ -7412,9 +7413,9 @@ } }, "node_modules/@storybook/core": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.2.6.tgz", - "integrity": "sha512-XY71g3AcpD6IiER9k9Lt+vlUMYfPIYgWekd7e0Ggzz2gJkPuLunKEdQccLGDSHf5OFAobHhrTJc7ZsvWhmDMag==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.2.7.tgz", + "integrity": "sha512-vgw5MYN9Bq2/ZsObCOEHbBHwi4RpbYCHPFtKkr4kTnWID++FCSiSVd7jY3xPvcNxWqCxOyH6dThpBi+SsB/ZAA==", "dev": true, "dependencies": { "@storybook/csf": "0.1.11", @@ -7536,9 +7537,9 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.2.6.tgz", - "integrity": "sha512-USn7E/bMQYVqvFBuW6d9rKoSuCImjk0BAmc/0wIOuMQ/yQNp2Xze0m8eVkNHUIUDokyx0TXDjRjwq10Xxk16ag==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.2.7.tgz", + "integrity": "sha512-rBdplL6xcVJcuq+uM0eidomMQ5BtAlVAejYrOTNiqBk/zVh5JSvchYzYG9n6Fo2PdKLLKdlZ874zhsVuNriNBQ==", "dev": true, "dependencies": { "unplugin": "^1.3.1" @@ -7548,7 +7549,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/global": { @@ -7569,35 +7570,35 @@ } }, "node_modules/@storybook/manager-api": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.2.6.tgz", - "integrity": "sha512-uv36h/b5RhlajWtEg4cVPBYV8gZs6juux0nIE+6G9i7vt8Ild6gM9tW1KNabgZcaHFiyWJYCNWxJZoKjgUmXDg==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.2.7.tgz", + "integrity": "sha512-BXjz6eNl1GyFcMwzRQTIokslcIY71AYblJUscPcy03X93oqI0GjFVa1xuSMwYw/oXWn7SHhKmqtqEG19lvBGRQ==", "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/preview-api": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.2.6.tgz", - "integrity": "sha512-5vTj2ndX5ng4nDntZYe+r8UwLjCIGFymhq5/r2adAvRKL+Bo4zQDWGO7bhvGJk16do2THb2JvPz49ComW9LLZw==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.2.7.tgz", + "integrity": "sha512-lNZBTjZaYNSwBY8dEcDZdkOBvq1/JoVWpuvqDEKvGmp5usTe77xAOwGyncEb96Cx1BbXXkMiDrqbV5G23PFRYA==", "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.2.6.tgz", - "integrity": "sha512-B+x8UAEQPDp1yhN3tMh09NvSL38QNfJB7PAyLgKrfE7xIAzvewq+RLW2DfGkoZCy+Zr7QSHm1p7NOgud8+sQCg==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.2.7.tgz", + "integrity": "sha512-9VI+NrC09DAr0QQZsFmU5Fd9eqdJp/1AHK+sm9BOZretGGGJwn22xS7UXhHIiFpfXJQnr3TNcYWRzXFyuaE/Sw==", "dev": true, "funding": { "type": "opencollective", @@ -7606,7 +7607,7 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/theming": { @@ -7657,16 +7658,16 @@ } }, "node_modules/@storybook/web-components": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-8.2.6.tgz", - "integrity": "sha512-W8UmfjuU3ChJBg2g+wkgN4mYIvXn2TgNqNECz/vWUNFbRZyw3++Ip5VLSn5nLX+8bY0SJoRnZ1NOk58XJXetOw==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-8.2.7.tgz", + "integrity": "sha512-ndcLJip+oNFqqPp2UkuO6gUVZ+IjYhPhFGB7yeVzWLa/OT/XfAcEVfRWfeNwBGxc7r18sY25oo2d3ykgauYVvA==", "dev": true, "dependencies": { - "@storybook/components": "^8.2.6", + "@storybook/components": "^8.2.7", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "^8.2.6", - "@storybook/preview-api": "^8.2.6", - "@storybook/theming": "^8.2.6", + "@storybook/manager-api": "^8.2.7", + "@storybook/preview-api": "^8.2.7", + "@storybook/theming": "^8.2.7", "tiny-invariant": "^1.3.1", "ts-dedent": "^2.0.0" }, @@ -7679,17 +7680,17 @@ }, "peerDependencies": { "lit": "^2.0.0 || ^3.0.0", - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/web-components-vite": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-8.2.6.tgz", - "integrity": "sha512-WuENh+IxrStKuH5emHmfHd8zXvZ4MmmhB/IVv2JV1nt7Sv/PrGcnlGKFIQkyxIMeeKP/5SKtSbVr1Kat4BbeEw==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-8.2.7.tgz", + "integrity": "sha512-i0at4OwUXp31gUEkSdfF4MLomgWmanpEJyaWtFVneeC55Fz2gFlmggFVIWx2fTQxSV6F07/PFneXYqlwjJAsAA==", "dev": true, "dependencies": { - "@storybook/builder-vite": "8.2.6", - "@storybook/web-components": "8.2.6", + "@storybook/builder-vite": "8.2.7", + "@storybook/web-components": "8.2.7", "magic-string": "^0.30.0" }, "engines": { @@ -7700,33 +7701,33 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/web-components/node_modules/@storybook/components": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.2.6.tgz", - "integrity": "sha512-H8ckH1AnLkHtMtvJ3J8LxnmDtHxkJ7NJacGctHMRrsBIvdKTVwlT4su5nAVVJlan/PrEou+jESfw+OjjBYE5PA==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.2.7.tgz", + "integrity": "sha512-FXhnoHl9S+tKSFc62iUG3EWplQP9ojGQaSMhqP4QTus6xmo53oSsPzuTPQilKVHkGxFQW8eGgKKsfHw3G2NT2g==", "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@storybook/web-components/node_modules/@storybook/theming": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.2.6.tgz", - "integrity": "sha512-ICnYuLIVsYifVCMQljdHgrp+5vAquNybHxDGWiPeOxBicotwHF8rLhTckD2CdVQbMp0jk6r6jetvjXbFJ2MbvQ==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.2.7.tgz", + "integrity": "sha512-+iqm0GfRkshrjjNSOzwl7AD2m+LtJGXJCr93ke1huDK497WUKbX1hbbw51h5E1tEkx0c2wIqUlaqCM+7XMYcpw==", "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.6" + "storybook": "^8.2.7" } }, "node_modules/@swagger-api/apidom-ast": { @@ -12275,9 +12276,10 @@ "dev": true }, "node_modules/core-js": { - "version": "3.37.1", + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.0.tgz", + "integrity": "sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug==", "hasInstallScript": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -13963,9 +13965,9 @@ } }, "node_modules/esbuild-register": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.5.0.tgz", - "integrity": "sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", "dev": true, "dependencies": { "debug": "^4.3.4" @@ -15454,9 +15456,9 @@ "license": "ISC" }, "node_modules/flow-parser": { - "version": "0.241.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.241.0.tgz", - "integrity": "sha512-82yKXpz7iWknWFsognZUf5a6mBQLnVrYoYSU9Nbu7FTOpKlu3v9ehpiI9mYXuaIO3J0ojX1b83M/InXvld9HUw==", + "version": "0.242.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.242.1.tgz", + "integrity": "sha512-E3ml21Q1S5cMAyPbtYslkvI6yZO5oCS/S2EoteeFH8Kx9iKOv/YOJ+dGd/yMf+H3YKfhMKjnOpyNwrO7NdddWA==", "dev": true, "engines": { "node": ">=0.4.0" @@ -22473,15 +22475,15 @@ "license": "MIT" }, "node_modules/storybook": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.2.6.tgz", - "integrity": "sha512-8j30wDxQmkcqI0fWcSYFsUCjErsY1yTWbTW+yjbwM8DyW18Cud6CwbFRCxjFsH+2M0CjP6Pqs/m1PGI0vcQscQ==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.2.7.tgz", + "integrity": "sha512-Jb9DXue1sr3tKkpuq66VP5ItOKTpxL6t99ze1wXDbjCvPiInTdPA5AyFEjBuKjOBIh28bayYoOZa6/xbMJV+Wg==", "dev": true, "dependencies": { "@babel/core": "^7.24.4", "@babel/types": "^7.24.0", - "@storybook/codemod": "8.2.6", - "@storybook/core": "8.2.6", + "@storybook/codemod": "8.2.7", + "@storybook/core": "8.2.7", "@types/semver": "^7.3.4", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", diff --git a/web/package.json b/web/package.json index ea83ed9c4f6e..8306496fd78b 100644 --- a/web/package.json +++ b/web/package.json @@ -46,7 +46,7 @@ "@floating-ui/dom": "^1.6.8", "@formatjs/intl-listformat": "^7.5.7", "@fortawesome/fontawesome-free": "^6.6.0", - "@goauthentik/api": "^2024.6.2-1722467631", + "@goauthentik/api": "^2024.6.2-1722867797", "@lit/context": "^1.1.2", "@lit/localize": "^0.12.1", "@lit/reactive-element": "^2.0.4", @@ -54,14 +54,14 @@ "@open-wc/lit-helpers": "^0.7.0", "@patternfly/elements": "^3.0.2", "@patternfly/patternfly": "^4.224.2", - "@sentry/browser": "^8.21.0", + "@sentry/browser": "^8.22.0", "@webcomponents/webcomponentsjs": "^2.8.0", "base64-js": "^1.5.1", "chart.js": "^4.4.3", "chartjs-adapter-moment": "^1.0.1", "codemirror": "^6.0.1", "construct-style-sheets-polyfill": "^3.1.0", - "core-js": "^3.37.1", + "core-js": "^3.38.0", "country-flag-icons": "^1.5.13", "fuse.js": "^7.0.0", "guacamole-common-js": "^1.5.0", @@ -87,18 +87,18 @@ "@changesets/cli": "^2.27.5", "@custom-elements-manifest/analyzer": "^0.10.2", "@genesiscommunitysuccess/custom-elements-lsp": "^5.0.3", - "@hcaptcha/types": "^1.0.3", + "@hcaptcha/types": "^1.0.4", "@jeysal/storybook-addon-css-user-preferences": "^0.2.0", "@lit/localize-tools": "^0.7.2", "@rollup/plugin-replace": "^5.0.7", - "@spotlightjs/spotlight": "^2.2.2", - "@storybook/addon-essentials": "^8.2.6", - "@storybook/addon-links": "^8.2.6", + "@spotlightjs/spotlight": "^2.3.0", + "@storybook/addon-essentials": "^8.2.7", + "@storybook/addon-links": "^8.2.7", "@storybook/api": "^7.6.17", "@storybook/blocks": "^8.0.8", - "@storybook/manager-api": "^8.2.6", - "@storybook/web-components": "^8.2.6", - "@storybook/web-components-vite": "^8.2.6", + "@storybook/manager-api": "^8.2.7", + "@storybook/web-components": "^8.2.7", + "@storybook/web-components-vite": "^8.2.7", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/chart.js": "^2.9.41", "@types/codemirror": "5.60.15", @@ -147,9 +147,9 @@ "@esbuild/darwin-arm64": "^0.23.0", "@esbuild/linux-amd64": "^0.18.11", "@esbuild/linux-arm64": "^0.23.0", - "@rollup/rollup-darwin-arm64": "4.19.1", - "@rollup/rollup-linux-arm64-gnu": "4.19.1", - "@rollup/rollup-linux-x64-gnu": "4.19.1" + "@rollup/rollup-darwin-arm64": "4.20.0", + "@rollup/rollup-linux-arm64-gnu": "4.20.0", + "@rollup/rollup-linux-x64-gnu": "4.20.0" }, "engines": { "node": ">=20" diff --git a/web/sfe/package-lock.json b/web/sfe/package-lock.json index 8da0be0a59f8..091a40a6861d 100644 --- a/web/sfe/package-lock.json +++ b/web/sfe/package-lock.json @@ -21,9 +21,9 @@ "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-swc": "^0.3.1", "@swc/cli": "^0.4.0", - "@swc/core": "^1.7.4", + "@swc/core": "^1.7.6", "@types/jquery": "^3.5.30", - "rollup": "^4.19.1", + "rollup": "^4.20.0", "rollup-plugin-copy": "^3.5.0" } }, @@ -237,9 +237,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.1.tgz", - "integrity": "sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", + "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", "cpu": [ "arm" ], @@ -250,9 +250,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.1.tgz", - "integrity": "sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", + "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", "cpu": [ "arm64" ], @@ -263,9 +263,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.1.tgz", - "integrity": "sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", + "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", "cpu": [ "arm64" ], @@ -276,9 +276,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.1.tgz", - "integrity": "sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", + "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", "cpu": [ "x64" ], @@ -289,9 +289,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.1.tgz", - "integrity": "sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", + "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", "cpu": [ "arm" ], @@ -302,9 +302,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.1.tgz", - "integrity": "sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", + "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", "cpu": [ "arm" ], @@ -315,9 +315,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.1.tgz", - "integrity": "sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", + "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", "cpu": [ "arm64" ], @@ -328,9 +328,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.1.tgz", - "integrity": "sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", + "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", "cpu": [ "arm64" ], @@ -341,9 +341,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.1.tgz", - "integrity": "sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", + "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", "cpu": [ "ppc64" ], @@ -354,9 +354,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.1.tgz", - "integrity": "sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", + "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", "cpu": [ "riscv64" ], @@ -367,9 +367,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.1.tgz", - "integrity": "sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", + "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", "cpu": [ "s390x" ], @@ -380,9 +380,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.1.tgz", - "integrity": "sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", + "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", "cpu": [ "x64" ], @@ -393,9 +393,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.1.tgz", - "integrity": "sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", + "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", "cpu": [ "x64" ], @@ -406,9 +406,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.1.tgz", - "integrity": "sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", + "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", "cpu": [ "arm64" ], @@ -419,9 +419,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.1.tgz", - "integrity": "sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", + "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", "cpu": [ "ia32" ], @@ -432,9 +432,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.1.tgz", - "integrity": "sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", + "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", "cpu": [ "x64" ], @@ -491,9 +491,9 @@ } }, "node_modules/@swc/core": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.4.tgz", - "integrity": "sha512-+wSycNxOw9QQz81AJAZlNS34EtOIifwUXMPACg05PWjECsjOKDTXLCVPx6J0lRaxhHSGBU2OYs9mRfIvxGt3CA==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.6.tgz", + "integrity": "sha512-FZxyao9eQks1MRmUshgsZTmlg/HB2oXK5fghkoWJm/1CU2q2kaJlVDll2as5j+rmWiwkp0Gidlq8wlXcEEAO+g==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -508,16 +508,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.4", - "@swc/core-darwin-x64": "1.7.4", - "@swc/core-linux-arm-gnueabihf": "1.7.4", - "@swc/core-linux-arm64-gnu": "1.7.4", - "@swc/core-linux-arm64-musl": "1.7.4", - "@swc/core-linux-x64-gnu": "1.7.4", - "@swc/core-linux-x64-musl": "1.7.4", - "@swc/core-win32-arm64-msvc": "1.7.4", - "@swc/core-win32-ia32-msvc": "1.7.4", - "@swc/core-win32-x64-msvc": "1.7.4" + "@swc/core-darwin-arm64": "1.7.6", + "@swc/core-darwin-x64": "1.7.6", + "@swc/core-linux-arm-gnueabihf": "1.7.6", + "@swc/core-linux-arm64-gnu": "1.7.6", + "@swc/core-linux-arm64-musl": "1.7.6", + "@swc/core-linux-x64-gnu": "1.7.6", + "@swc/core-linux-x64-musl": "1.7.6", + "@swc/core-win32-arm64-msvc": "1.7.6", + "@swc/core-win32-ia32-msvc": "1.7.6", + "@swc/core-win32-x64-msvc": "1.7.6" }, "peerDependencies": { "@swc/helpers": "*" @@ -529,9 +529,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.4.tgz", - "integrity": "sha512-RbWrdGh+x9xKFUA9/kPZRR8OPxUsDUuPyLjPIGLYZMO+ftht2vhVH7QsUq6lg+jAP34eIya72UA1isiZe+BRaA==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.6.tgz", + "integrity": "sha512-6lYHey84ZzsdtC7UuPheM4Rm0Inzxm6Sb8U6dmKc4eCx8JL0LfWG4LC5RsdsrTxnjTsbriWlnhZBffh8ijUHIQ==", "cpu": [ "arm64" ], @@ -545,9 +545,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.4.tgz", - "integrity": "sha512-TxCWMJs4OrqApjFuT8cUiqMz0zg97F0JsXBEeZ7zjkyv9XJ/rN2pdwqMlZv0Wv2C2rivOPo6FsWYlZ3V8ZHhyA==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.6.tgz", + "integrity": "sha512-Fyl+8aH9O5rpx4O7r2KnsPpoi32iWoKOYKiipeTbGjQ/E95tNPxbmsz4yqE8Ovldcga60IPJ5OKQA3HWRiuzdw==", "cpu": [ "x64" ], @@ -561,9 +561,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.4.tgz", - "integrity": "sha512-5IhwIJZAgkkfI6PqgQ3xk0/2hTAVsAczIPLiR2Epp30EgsNo1KIFL0ZHzrnvJPy5BZ3jy3T1dEbDE/memBOEmA==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.6.tgz", + "integrity": "sha512-2WxYTqFaOx48GKC2cbO1/IntA+w+kfCFy436Ij7qRqqtV/WAvTM9TC1OmiFbqq436rSot52qYmX8fkwdB5UcLQ==", "cpu": [ "arm" ], @@ -577,9 +577,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.4.tgz", - "integrity": "sha512-0787jri83jigf26mF8FndWehh7jqMaHwAm/OV6VdToyNo/g+d1AxVpkEizrywZK46el+AObnHUIHIHwZgO21LA==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.6.tgz", + "integrity": "sha512-TBEGMSe0LhvPe4S7E68c7VzgT3OMu4VTmBLS7B2aHv4v8uZO92Khpp7L0WqgYU1y5eMjk+XLDLi4kokiNHv/Hg==", "cpu": [ "arm64" ], @@ -593,9 +593,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.4.tgz", - "integrity": "sha512-A45hGKWAGcjU5Ol0uQUoK0tHerwEKxfprYUZbmPLpD2yrpMZr+dTrwY2n075sixs7RuZEccBkgGNpehEe5BPBQ==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.6.tgz", + "integrity": "sha512-QI8QGL0HGT42tj7F1A+YAzhGkJjUcvvTfI1e2m704W0Enl2/UIK9v5D1zvQzYwusRyKuaQfbeBRYDh0NcLOGLg==", "cpu": [ "arm64" ], @@ -609,9 +609,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.4.tgz", - "integrity": "sha512-bcO1MpAm39TXqqHuYW4ox4vDvhB7jkguwMwxvmL+cKBGsUHrIoUTfGt9NM9N4D4CvOwULlxqbyt19veUJ7CVPw==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.6.tgz", + "integrity": "sha512-61AYVzhjuNQAVIKKWOJu3H0/pFD28RYJGxnGg3YMhvRLRyuWNyY5Nyyj2WkKcz/ON+g38Arlz00NT1LDIViRLg==", "cpu": [ "x64" ], @@ -625,9 +625,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.4.tgz", - "integrity": "sha512-N6nXuHyDO/q5kPN2xQxz5BEvhFpgnFSkP+9wxg5xWq+qIQL5bv37jk8dkKvMLx/8fHzTqrIjPDSRzVbcL7sqXg==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.6.tgz", + "integrity": "sha512-hQFznpfLK8XajfAAN9Cjs0w/aVmO7iu9VZvInyrTCRcPqxV5O+rvrhRxKvC1LRMZXr5M6JRSRtepp5w+TK4kAw==", "cpu": [ "x64" ], @@ -641,9 +641,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.4.tgz", - "integrity": "sha512-7W1owqCNR1cG+mpS55juiZlR/lrAdxB1pH32egeOipNKOLGwyqmlzQ0g9tkQTNgzwgfpCUg8z606+GqqXvajZw==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.6.tgz", + "integrity": "sha512-Aqsd9afykVMuekzjm4X4TDqwxmG4CrzoOSFe0hZrn9SMio72l5eAPnMtYoe5LsIqtjV8MNprLfXaNbjHjTegmA==", "cpu": [ "arm64" ], @@ -657,9 +657,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.4.tgz", - "integrity": "sha512-saLkY+q7zNPk4gYiUBCc93FYPo4ECXMjHcSPtLVHoPZBIxRrklgaAf6aDpblBo30nVdoBE2V3YPd0Y/cPiY6RQ==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.6.tgz", + "integrity": "sha512-9h0hYnOeRVNeQgHQTvD1Im67faNSSzBZ7Adtxyu9urNLfBTJilMllFd2QuGHlKW5+uaT6ZH7ZWDb+c/enx7Lcg==", "cpu": [ "ia32" ], @@ -673,9 +673,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.4.tgz", - "integrity": "sha512-zKF6jpRBNuVKgOf2W5dMcPyjwcNCp21syjl9lvLRbCeIg+1U+zjdoQCAmMWWoPNE7fLg+yfvohnnOJG2AdzQ9Q==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.6.tgz", + "integrity": "sha512-izeoB8glCSe6IIDQmrVm6bvR9muk9TeKgmtY7b6l1BwL4BFnTUk4dMmpbntT90bEVQn3JPCaPtUG4HfL8VuyuA==", "cpu": [ "x64" ], @@ -2489,9 +2489,9 @@ } }, "node_modules/rollup": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.1.tgz", - "integrity": "sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz", + "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -2504,22 +2504,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.19.1", - "@rollup/rollup-android-arm64": "4.19.1", - "@rollup/rollup-darwin-arm64": "4.19.1", - "@rollup/rollup-darwin-x64": "4.19.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.19.1", - "@rollup/rollup-linux-arm-musleabihf": "4.19.1", - "@rollup/rollup-linux-arm64-gnu": "4.19.1", - "@rollup/rollup-linux-arm64-musl": "4.19.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.19.1", - "@rollup/rollup-linux-riscv64-gnu": "4.19.1", - "@rollup/rollup-linux-s390x-gnu": "4.19.1", - "@rollup/rollup-linux-x64-gnu": "4.19.1", - "@rollup/rollup-linux-x64-musl": "4.19.1", - "@rollup/rollup-win32-arm64-msvc": "4.19.1", - "@rollup/rollup-win32-ia32-msvc": "4.19.1", - "@rollup/rollup-win32-x64-msvc": "4.19.1", + "@rollup/rollup-android-arm-eabi": "4.20.0", + "@rollup/rollup-android-arm64": "4.20.0", + "@rollup/rollup-darwin-arm64": "4.20.0", + "@rollup/rollup-darwin-x64": "4.20.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", + "@rollup/rollup-linux-arm-musleabihf": "4.20.0", + "@rollup/rollup-linux-arm64-gnu": "4.20.0", + "@rollup/rollup-linux-arm64-musl": "4.20.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", + "@rollup/rollup-linux-riscv64-gnu": "4.20.0", + "@rollup/rollup-linux-s390x-gnu": "4.20.0", + "@rollup/rollup-linux-x64-gnu": "4.20.0", + "@rollup/rollup-linux-x64-musl": "4.20.0", + "@rollup/rollup-win32-arm64-msvc": "4.20.0", + "@rollup/rollup-win32-ia32-msvc": "4.20.0", + "@rollup/rollup-win32-x64-msvc": "4.20.0", "fsevents": "~2.3.2" } }, diff --git a/web/sfe/package.json b/web/sfe/package.json index e0e73dca059f..42e69cb6b428 100644 --- a/web/sfe/package.json +++ b/web/sfe/package.json @@ -20,9 +20,9 @@ "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-swc": "^0.3.1", "@swc/cli": "^0.4.0", - "@swc/core": "^1.7.4", + "@swc/core": "^1.7.6", "@types/jquery": "^3.5.30", - "rollup": "^4.19.1", + "rollup": "^4.20.0", "rollup-plugin-copy": "^3.5.0" } } diff --git a/web/src/admin/rbac/RoleObjectPermissionForm.ts b/web/src/admin/rbac/RoleObjectPermissionForm.ts index 7c5fc4721703..f423c5974203 100644 --- a/web/src/admin/rbac/RoleObjectPermissionForm.ts +++ b/web/src/admin/rbac/RoleObjectPermissionForm.ts @@ -53,7 +53,7 @@ export class RoleObjectPermissionForm extends ModelForm } send(data: RoleAssignData): Promise { - return new RbacApi(DEFAULT_CONFIG).rbacPermissionsAssignedByRolesAssignCreate({ + return new RbacApi(DEFAULT_CONFIG).rbacPermissionsAssignedByRolesAssign({ uuid: data.role, permissionAssignRequest: { permissions: Object.keys(data.permissions).filter((key) => data.permissions[key]), diff --git a/web/src/admin/rbac/UserObjectPermissionForm.ts b/web/src/admin/rbac/UserObjectPermissionForm.ts index 026c580563c1..335bd011030b 100644 --- a/web/src/admin/rbac/UserObjectPermissionForm.ts +++ b/web/src/admin/rbac/UserObjectPermissionForm.ts @@ -54,7 +54,7 @@ export class UserObjectPermissionForm extends ModelForm } send(data: UserAssignData): Promise { - return new RbacApi(DEFAULT_CONFIG).rbacPermissionsAssignedByUsersAssignCreate({ + return new RbacApi(DEFAULT_CONFIG).rbacPermissionsAssignedByUsersAssign({ id: data.user, permissionAssignRequest: { permissions: Object.keys(data.permissions).filter((key) => data.permissions[key]), diff --git a/web/src/admin/roles/RolePermissionForm.ts b/web/src/admin/roles/RolePermissionForm.ts index b059083a669f..95ad8a796a10 100644 --- a/web/src/admin/roles/RolePermissionForm.ts +++ b/web/src/admin/roles/RolePermissionForm.ts @@ -37,7 +37,7 @@ export class RolePermissionForm extends ModelForm } async send(data: RolePermissionAssign) { - await new RbacApi(DEFAULT_CONFIG).rbacPermissionsAssignedByRolesAssignCreate({ + await new RbacApi(DEFAULT_CONFIG).rbacPermissionsAssignedByRolesAssign({ uuid: this.roleUuid || "", permissionAssignRequest: { permissions: data.permissions, diff --git a/web/src/admin/users/UserPermissionForm.ts b/web/src/admin/users/UserPermissionForm.ts index 989b2d10288d..2d3d804de36b 100644 --- a/web/src/admin/users/UserPermissionForm.ts +++ b/web/src/admin/users/UserPermissionForm.ts @@ -37,7 +37,7 @@ export class UserPermissionForm extends ModelForm } async send(data: UserPermissionAssign) { - await new RbacApi(DEFAULT_CONFIG).rbacPermissionsAssignedByUsersAssignCreate({ + await new RbacApi(DEFAULT_CONFIG).rbacPermissionsAssignedByUsersAssign({ id: this.userId || 0, permissionAssignRequest: { permissions: data.permissions, diff --git a/web/src/common/constants.ts b/web/src/common/constants.ts index 2ea3f58e96d3..a05c82c5f7f3 100644 --- a/web/src/common/constants.ts +++ b/web/src/common/constants.ts @@ -3,7 +3,7 @@ export const SUCCESS_CLASS = "pf-m-success"; export const ERROR_CLASS = "pf-m-danger"; export const PROGRESS_CLASS = "pf-m-in-progress"; export const CURRENT_CLASS = "pf-m-current"; -export const VERSION = "2024.6.2"; +export const VERSION = "2024.6.3"; export const TITLE_DEFAULT = "authentik"; export const ROUTE_SEPARATOR = ";"; diff --git a/web/src/elements/utils/images.ts b/web/src/elements/utils/images.ts index 8b28d405ceb1..573308a43d21 100644 --- a/web/src/elements/utils/images.ts +++ b/web/src/elements/utils/images.ts @@ -9,5 +9,5 @@ export function themeImage(rawPath: string) { ? UiThemeEnum.Light : UiThemeEnum.Dark; } - return rawPath.replace("%(theme)s", enabledTheme); + return rawPath.replaceAll("%(theme)s", enabledTheme); } diff --git a/web/src/user/LibraryPage/ak-library.ts b/web/src/user/LibraryPage/ak-library.ts index e6edea0ac0a0..c78315663778 100644 --- a/web/src/user/LibraryPage/ak-library.ts +++ b/web/src/user/LibraryPage/ak-library.ts @@ -70,6 +70,7 @@ export class LibraryPage extends AKElement { ordering: "name", page, pageSize: 100, + onlyWithLaunchUrl: true, }); const applicationListFetch = await coreApi().coreApplicationsList(applicationListParams(1)); diff --git a/website/developer-docs/blueprints/v1/models.md b/website/developer-docs/blueprints/v1/models.md index 26ecd03ce0d3..f392c8295cbe 100644 --- a/website/developer-docs/blueprints/v1/models.md +++ b/website/developer-docs/blueprints/v1/models.md @@ -2,7 +2,9 @@ Some models behave differently and allow for access to different API fields when created via blueprint. -### `authentik_core.token` +## `authentik_core.token` + +### `key` :::info Requires authentik 2023.4 @@ -26,7 +28,9 @@ For example: intent: api ``` -### `authentik_core.user` +## `authentik_core.user` + +### `password` :::info Requires authentik 2023.6 @@ -49,7 +53,29 @@ For example: password: this-should-be-a-long-value ``` -### `authentik_core.application` +### `permissions` + +:::info +Requires authentik 2024.8 +::: + +The `permissions` field can be used to set global permissions for a user. A full list of possible permissions is included in the JSON schema for blueprints. + +For example: + +```yaml +# [...] +- model: authentik_core.user + identifiers: + username: test-user + attrs: + permissions: + - authentik_blueprints.view_blueprintinstance +``` + +## `authentik_core.application` + +### `icon` :::info Requires authentik 2023.5 @@ -69,7 +95,9 @@ For example: icon: https://goauthentik.io/img/icon.png ``` -### `authentik_sources_oauth.oauthsource`, `authentik_sources_saml.samlsource`, `authentik_sources_plex.plexsource` +## `authentik_sources_oauth.oauthsource`, `authentik_sources_saml.samlsource`, `authentik_sources_plex.plexsource` + +### `icon` :::info Requires authentik 2023.5 @@ -89,7 +117,9 @@ For example: icon: https://goauthentik.io/img/icon.png ``` -### `authentik_flows.flow` +## `authentik_flows.flow` + +### `icon` :::info Requires authentik 2023.5 @@ -110,3 +140,25 @@ For example: designation: authentication background: https://goauthentik.io/img/icon.png ``` + +## `authentik_rbac.role` + +### `permissions` + +:::info +Requires authentik 2024.8 +::: + +The `permissions` field can be used to set global permissions for a role. A full list of possible permissions is included in the JSON schema for blueprints. + +For example: + +```yaml +# [...] +- model: authentik_rbac.role + identifiers: + name: test-role + attrs: + permissions: + - authentik_blueprints.view_blueprintinstance +``` diff --git a/website/developer-docs/blueprints/v1/structure.md b/website/developer-docs/blueprints/v1/structure.md index ee2f3e74b456..fd819bca8aa2 100644 --- a/website/developer-docs/blueprints/v1/structure.md +++ b/website/developer-docs/blueprints/v1/structure.md @@ -60,6 +60,11 @@ entries: designation: stage_configuration name: default-oobe-setup title: Welcome to authentik! + # Optionally set object-level permissions on the object + # Requires authentik 2024.8 + permissions: + - permission: inspect_flow + user: !Find [authentik_core.user, [username, akadmin]] ``` ## Special Labels diff --git a/website/developer-docs/blueprints/v1/tags.md b/website/developer-docs/blueprints/v1/tags.md index a931063b8396..7ec1ff15a1b7 100644 --- a/website/developer-docs/blueprints/v1/tags.md +++ b/website/developer-docs/blueprints/v1/tags.md @@ -7,15 +7,15 @@ For VS Code, for example, add these entries to your `settings.json`: ``` { "yaml.customTags": [ - "!KeyOf scalar", + "!Condition sequence", + "!Context scalar", + "!Enumerate sequence", "!Env scalar", "!Find sequence", - "!Context scalar", "!Format sequence", "!If sequence", - "!Condition sequence", - "!Enumerate sequence", "!Index scalar", + "!KeyOf scalar", "!Value scalar" ] } diff --git a/website/docs/releases/2024/v2024.6.md b/website/docs/releases/2024/v2024.6.md index 7747dfc4f830..6a5b8039f658 100644 --- a/website/docs/releases/2024/v2024.6.md +++ b/website/docs/releases/2024/v2024.6.md @@ -223,6 +223,14 @@ helm upgrade authentik authentik/authentik -f values.yaml --version ^2024.6 - web/admin: show matching user reputation scores in user details (cherry-pick #10276) (#10699) - web/flows: remove continue button from AutoSubmit stage (cherry-pick #10253) (#10677) +## Fixed in 2024.6.3 + +- enterprise/rac: fix error when listing connection tokens as non-superuser (cherry-pick #10771) (#10773) +- root: remove warnings (#10774) +- sources/scim: fix duplicate service account users and changing token (cherry-pick #10735) (#10737) +- web: fix theme not applying to document correctly (cherry-pick #10721) (#10722) +- web: replace all occurrences of the theme placeholder (cherry-pick #10749) (#10750) + ## API Changes #### What's New diff --git a/website/integrations/services/whats-up-docker/index.md b/website/integrations/services/whats-up-docker/index.md new file mode 100644 index 000000000000..7b26dd4d54a5 --- /dev/null +++ b/website/integrations/services/whats-up-docker/index.md @@ -0,0 +1,43 @@ +--- +title: What's Up Docker +--- + +Support level: Community + +## What is What's Up Docker + +> What's Up Docker (WUD) is an easy-to-use tool that alerts you whenever a new version of your Docker containers is released. +> +> -- https://fmartinou.github.io/whats-up-docker/ + +## Preparation + +The following placeholders will be used: + +- `wud.company` is the FQDN of the WUD install. +- `authentik.company` is the FQDN of the authentik install. + +## WUD configuration + +To configure WUD to use authentik, add the following values to your `.env` file: + +``` +WUD_AUTH_OIDC_AUTHENTIK_CLIENTID= +WUD_AUTH_OIDC_AUTHENTIK_CLIENTSECRET= +WUD_AUTH_OIDC_AUTHENTIK_DISCOVERY=https://authentik.company/application/o/wud/.well-known/openid-configuration +WUD_AUTH_OIDC_AUTHENTIK_REDIRECT=true # Set to true to skip internal login page +``` + +After making these changes, restart your Docker containers to apply the new configuration. + +## authentik configuration + +1. Access the **Admin Interface** in on your authentik install. +2. Create a new **OAuth2 / OpenID Provider**. +3. Note the generated **Client ID** and **Client Secret**. +4. In the provider settings, add this redirect URL under **Redirect URIs/Origins (RegEx)**: `https://wud.company/auth/oidc/authentik/cb` +5. Ensure the `email`, `openid`, and `profile` scopes are selected under **Advanced protocol settings**. +6. Click **Finish** to save the provider configuration. +7. Create a new application associated with this provider. + +Once completed, What's Up Docker should be successfully configured to use authentik as its Single Sign-On SSO provider. diff --git a/website/package-lock.json b/website/package-lock.json index 48b4b5264c77..dbeff17a2ab4 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -27,7 +27,7 @@ "react-dom": "^18.3.1", "react-feather": "^2.0.10", "react-toggle": "^4.1.3", - "react-tooltip": "^5.27.1", + "react-tooltip": "^5.28.0", "remark-github": "^12.0.0" }, "devDependencies": { @@ -14896,8 +14896,9 @@ } }, "node_modules/react-tooltip": { - "version": "5.27.1", - "license": "MIT", + "version": "5.28.0", + "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.28.0.tgz", + "integrity": "sha512-R5cO3JPPXk6FRbBHMO0rI9nkUG/JKfalBSQfZedZYzmqaZQgq7GLzF8vcCWx6IhUCKg0yPqJhXIzmIO5ff15xg==", "dependencies": { "@floating-ui/dom": "^1.6.1", "classnames": "^2.3.0" diff --git a/website/package.json b/website/package.json index 888d2f1a055b..cd522c7ff5fb 100644 --- a/website/package.json +++ b/website/package.json @@ -35,7 +35,7 @@ "react-dom": "^18.3.1", "react-feather": "^2.0.10", "react-toggle": "^4.1.3", - "react-tooltip": "^5.27.1", + "react-tooltip": "^5.28.0", "remark-github": "^12.0.0" }, "browserslist": { diff --git a/website/scripts/README.md b/website/scripts/README.md deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/scripts/docsmg/README.md b/website/scripts/docsmg/README.md index 516f574f28e5..12f47c2e781e 100644 --- a/website/scripts/docsmg/README.md +++ b/website/scripts/docsmg/README.md @@ -1,16 +1,47 @@ # Docsmg +This CLI tool is used to generate a mapping file (`migratefile`) that is then used by the tool to migrate `.md`, `.mdx`, and images file from their current structure into a new structure. + +Use this migration tool to: + +- generate the mapping file with the current structure +- read the completed (manual process to define target structure) and create the directories and move the files. +- modify the internal, cross-reference links to point to new location +- write to the `netlify.toml` file to add redirect entries for all migrated files. + ## Steps to install 1. Verify that you have the latest version of rust installed - Install [rust](rustup.rs) or update rust to the latest version with `rustup update` - If installing rust from scratch, you may need to run `. $HOME/.cargo/env` 2. Install the cli tool with `cargo install --git https://github.com/goauthentik/authentik --bin docsmg` +3. In the `/website` directory, create a file named `docsmg.env` with the entry of `MIGRATE_PATH=./docs`. ## Steps to use -1. Generate a migratefile with `docsmg generate >> migratefile` -2. Find the files you want to move in `migratefile` and insert the path you want to move them to after the arrow; ex `path/to/move/from/file.md -> path/to/move/to/file.md` Note: make sure to put spaces on either side of the arrow or that line won't be recognized -3. Once you have entered all the paths you want to move, migrate the files with `docsmg migrate` -4. To revert the migration, use `docsmg unmigrate`; Note: DO NOT edit the migrate file inbetween steps 3 and 4 -5. Repeat steps 2-4 until you are satified with the result +### Create the mapping file (`migratefile`) + +1. Navigate to the `authentik/website` dir. +2. Generate a migratefile with `docsmg generate | sort >> migratefile`. + You can also just run `docsmg generate | sort` to see the output in the terminal, before writing it to a file. +3. Edit the `migratefile` to add the target directory paths in the new structure for each entry. + Find the files you want to move in `migratefile` and insert the path you want to move them to after the arrow; ex `path/to/move/from/file.md -> path/to/move/to/file.md` Note: make sure to put spaces on either side of the arrow or that line won't be recognized. + +### Migrate the docs + +1. After you have entered all the paths you want to move, migrate the files with the command `docsmg migrate`. + +:::info +After you have run `migrate`, you cannot run it again or you will get a `panic` error... because the files have already been moved. +::: + +2. To revert the migration, use `docsmg unmigrate`. Note: DO NOT edit the `migratefile` file in befor running `unmigrate`. +3. Continue modifying the `migratefile` file and then using the `docsmg migrate` command until you are satisfied with the result. + +### Update the `sidebar.js file` + +Because the structure is completely changed, you will need to modify/reconstruct the navigation bar. + +## Test the results + +To test the internal links, navigate up a level to `authentik` and then run `make website-watch`. diff --git a/website/scripts/docsmg/docsmg.env b/website/scripts/docsmg/docsmg.env new file mode 100644 index 000000000000..cbadaa58de06 --- /dev/null +++ b/website/scripts/docsmg/docsmg.env @@ -0,0 +1 @@ +MIGRATE_FILE=./docs diff --git a/website/sidebarsIntegrations.js b/website/sidebarsIntegrations.js index 2b17cc407b86..118e89ef9673 100644 --- a/website/sidebarsIntegrations.js +++ b/website/sidebarsIntegrations.js @@ -146,6 +146,7 @@ module.exports = { "services/ubuntu-landscape/index", "services/uptime-kuma/index", "services/zabbix/index", + "services/whats-up-docker/index", ], }, {