use nested for RAC
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
		@ -40,9 +40,16 @@ class ConnectionTokenViewSet(
 | 
			
		||||
):
 | 
			
		||||
    """ConnectionToken Viewset"""
 | 
			
		||||
 | 
			
		||||
    queryset = ConnectionToken.objects.all().select_related("session", "endpoint")
 | 
			
		||||
    queryset = ConnectionToken.objects.none()
 | 
			
		||||
    serializer_class = ConnectionTokenSerializer
 | 
			
		||||
    filterset_fields = ["endpoint", "session__user", "provider"]
 | 
			
		||||
    search_fields = ["endpoint__name", "provider__name"]
 | 
			
		||||
    ordering = ["endpoint__name", "provider__name"]
 | 
			
		||||
    filterset_fields = ["endpoint", "session__user"]
 | 
			
		||||
    search_fields = ["endpoint__name", "session__user__username"]
 | 
			
		||||
    ordering = ["endpoint__name", "session__user__username"]
 | 
			
		||||
    owner_field = "session__user"
 | 
			
		||||
 | 
			
		||||
    def get_queryset(self):
 | 
			
		||||
        return (
 | 
			
		||||
            ConnectionToken.objects.all()
 | 
			
		||||
            .select_related("session", "endpoint")
 | 
			
		||||
            .filter(provider=self.kwargs["provider_pk"])
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
@ -65,12 +65,15 @@ class EndpointSerializer(ModelSerializer):
 | 
			
		||||
class EndpointViewSet(UsedByMixin, ModelViewSet):
 | 
			
		||||
    """Endpoint Viewset"""
 | 
			
		||||
 | 
			
		||||
    queryset = Endpoint.objects.all()
 | 
			
		||||
    queryset = Endpoint.objects.none()
 | 
			
		||||
    serializer_class = EndpointSerializer
 | 
			
		||||
    filterset_fields = ["name", "provider"]
 | 
			
		||||
    filterset_fields = ["name"]
 | 
			
		||||
    search_fields = ["name", "protocol"]
 | 
			
		||||
    ordering = ["name", "protocol"]
 | 
			
		||||
 | 
			
		||||
    def get_queryset(self):
 | 
			
		||||
        return Endpoint.objects.filter(provider=self.kwargs["provider_pk"])
 | 
			
		||||
 | 
			
		||||
    def _filter_queryset_for_list(self, queryset: QuerySet) -> QuerySet:
 | 
			
		||||
        """Custom filter_queryset method which ignores guardian, but still supports sorting"""
 | 
			
		||||
        for backend in list(self.filter_backends):
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@
 | 
			
		||||
 | 
			
		||||
from django.urls import path
 | 
			
		||||
 | 
			
		||||
from authentik.api.v3.routers import NestedRouter
 | 
			
		||||
from authentik.outposts.channels import TokenOutpostMiddleware
 | 
			
		||||
from authentik.providers.rac.api.connection_tokens import ConnectionTokenViewSet
 | 
			
		||||
from authentik.providers.rac.api.endpoints import EndpointViewSet
 | 
			
		||||
@ -38,8 +39,10 @@ websocket_urlpatterns = [
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
api_urlpatterns = [
 | 
			
		||||
    ("providers/rac", RACProviderViewSet),
 | 
			
		||||
    *NestedRouter()
 | 
			
		||||
    .register("providers/rac", RACProviderViewSet)
 | 
			
		||||
    .nested("provider", "endpoints", EndpointViewSet)
 | 
			
		||||
    .nested("provider", "connection_tokens", ConnectionTokenViewSet)
 | 
			
		||||
    .urls,
 | 
			
		||||
    ("propertymappings/provider/rac", RACPropertyMappingViewSet),
 | 
			
		||||
    ("rac/endpoints", EndpointViewSet),
 | 
			
		||||
    ("rac/connection_tokens", ConnectionTokenViewSet),
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1092
									
								
								schema.yml
									
									
									
									
									
								
							
							
						
						
									
										1092
									
								
								schema.yml
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -12,7 +12,7 @@ import { customElement, property } from "lit/decorators.js";
 | 
			
		||||
 | 
			
		||||
import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css";
 | 
			
		||||
 | 
			
		||||
import { ConnectionToken, RACProvider, RacApi } from "@goauthentik/api";
 | 
			
		||||
import { ConnectionToken, ProvidersApi, RACProvider } from "@goauthentik/api";
 | 
			
		||||
 | 
			
		||||
@customElement("ak-rac-connection-token-list")
 | 
			
		||||
export class ConnectionTokenListPage extends Table<ConnectionToken> {
 | 
			
		||||
@ -37,9 +37,9 @@ export class ConnectionTokenListPage extends Table<ConnectionToken> {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async apiEndpoint(): Promise<PaginatedResponse<ConnectionToken>> {
 | 
			
		||||
        return new RacApi(DEFAULT_CONFIG).racConnectionTokensList({
 | 
			
		||||
        return new ProvidersApi(DEFAULT_CONFIG).providersRacConnectionTokensList({
 | 
			
		||||
            ...(await this.defaultEndpointConfig()),
 | 
			
		||||
            provider: this.provider?.pk,
 | 
			
		||||
            providerPk: this.provider!.pk,
 | 
			
		||||
            sessionUser: this.userId,
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
@ -56,12 +56,14 @@ export class ConnectionTokenListPage extends Table<ConnectionToken> {
 | 
			
		||||
                ];
 | 
			
		||||
            }}
 | 
			
		||||
            .usedBy=${(item: ConnectionToken) => {
 | 
			
		||||
                return new RacApi(DEFAULT_CONFIG).racConnectionTokensUsedByList({
 | 
			
		||||
                return new ProvidersApi(DEFAULT_CONFIG).providersRacConnectionTokensUsedByList({
 | 
			
		||||
                    providerPk: this.provider!.pk,
 | 
			
		||||
                    connectionTokenUuid: item.pk || "",
 | 
			
		||||
                });
 | 
			
		||||
            }}
 | 
			
		||||
            .delete=${(item: ConnectionToken) => {
 | 
			
		||||
                return new RacApi(DEFAULT_CONFIG).racConnectionTokensDestroy({
 | 
			
		||||
                return new ProvidersApi(DEFAULT_CONFIG).providersRacConnectionTokensDestroy({
 | 
			
		||||
                    providerPk: this.provider!.pk,
 | 
			
		||||
                    connectionTokenUuid: item.pk || "",
 | 
			
		||||
                });
 | 
			
		||||
            }}
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@ import { TemplateResult, html } from "lit";
 | 
			
		||||
import { customElement, property } from "lit/decorators.js";
 | 
			
		||||
import { ifDefined } from "lit/directives/if-defined.js";
 | 
			
		||||
 | 
			
		||||
import { AuthModeEnum, Endpoint, ProtocolEnum, RacApi } from "@goauthentik/api";
 | 
			
		||||
import { AuthModeEnum, Endpoint, ProtocolEnum, ProvidersApi } from "@goauthentik/api";
 | 
			
		||||
 | 
			
		||||
import { propertyMappingsProvider, propertyMappingsSelector } from "./RACProviderFormHelpers.js";
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,8 @@ export class EndpointForm extends ModelForm<Endpoint, string> {
 | 
			
		||||
    providerID?: number;
 | 
			
		||||
 | 
			
		||||
    loadInstance(pk: string): Promise<Endpoint> {
 | 
			
		||||
        return new RacApi(DEFAULT_CONFIG).racEndpointsRetrieve({
 | 
			
		||||
        return new ProvidersApi(DEFAULT_CONFIG).providersRacEndpointsRetrieve({
 | 
			
		||||
            providerPk: this.providerID!,
 | 
			
		||||
            pbmUuid: pk,
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
@ -41,12 +42,14 @@ export class EndpointForm extends ModelForm<Endpoint, string> {
 | 
			
		||||
            data.provider = this.instance.provider;
 | 
			
		||||
        }
 | 
			
		||||
        if (this.instance) {
 | 
			
		||||
            return new RacApi(DEFAULT_CONFIG).racEndpointsPartialUpdate({
 | 
			
		||||
            return new ProvidersApi(DEFAULT_CONFIG).providersRacEndpointsPartialUpdate({
 | 
			
		||||
                providerPk: this.providerID!,
 | 
			
		||||
                pbmUuid: this.instance.pk || "",
 | 
			
		||||
                patchedEndpointRequest: data,
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
        return new RacApi(DEFAULT_CONFIG).racEndpointsCreate({
 | 
			
		||||
        return new ProvidersApi(DEFAULT_CONFIG).providersRacEndpointsCreate({
 | 
			
		||||
            providerPk: this.providerID!,
 | 
			
		||||
            endpointRequest: data,
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -17,8 +17,8 @@ import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList
 | 
			
		||||
 | 
			
		||||
import {
 | 
			
		||||
    Endpoint,
 | 
			
		||||
    ProvidersApi,
 | 
			
		||||
    RACProvider,
 | 
			
		||||
    RacApi,
 | 
			
		||||
    RbacPermissionsAssignedByUsersListModelEnum,
 | 
			
		||||
} from "@goauthentik/api";
 | 
			
		||||
 | 
			
		||||
@ -43,9 +43,9 @@ export class EndpointListPage extends Table<Endpoint> {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async apiEndpoint(): Promise<PaginatedResponse<Endpoint>> {
 | 
			
		||||
        return new RacApi(DEFAULT_CONFIG).racEndpointsList({
 | 
			
		||||
        return new ProvidersApi(DEFAULT_CONFIG).providersRacEndpointsList({
 | 
			
		||||
            ...(await this.defaultEndpointConfig()),
 | 
			
		||||
            provider: this.provider?.pk,
 | 
			
		||||
            providerPk: this.provider!.pk,
 | 
			
		||||
            superuserFullList: true,
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
@ -70,12 +70,14 @@ export class EndpointListPage extends Table<Endpoint> {
 | 
			
		||||
                ];
 | 
			
		||||
            }}
 | 
			
		||||
            .usedBy=${(item: Endpoint) => {
 | 
			
		||||
                return new RacApi(DEFAULT_CONFIG).racEndpointsUsedByList({
 | 
			
		||||
                return new ProvidersApi(DEFAULT_CONFIG).providersRacEndpointsUsedByList({
 | 
			
		||||
                    providerPk: this.provider!.pk,
 | 
			
		||||
                    pbmUuid: item.pk,
 | 
			
		||||
                });
 | 
			
		||||
            }}
 | 
			
		||||
            .delete=${(item: Endpoint) => {
 | 
			
		||||
                return new RacApi(DEFAULT_CONFIG).racEndpointsDestroy({
 | 
			
		||||
                return new ProvidersApi(DEFAULT_CONFIG).providersRacEndpointsDestroy({
 | 
			
		||||
                    providerPk: this.provider!.pk,
 | 
			
		||||
                    pbmUuid: item.pk,
 | 
			
		||||
                });
 | 
			
		||||
            }}
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@ import { msg } from "@lit/localize";
 | 
			
		||||
import { TemplateResult, html } from "lit";
 | 
			
		||||
import { customElement, property } from "lit/decorators.js";
 | 
			
		||||
 | 
			
		||||
import { Application, Endpoint, RacApi } from "@goauthentik/api";
 | 
			
		||||
import { Application, Endpoint, ProvidersApi } from "@goauthentik/api";
 | 
			
		||||
 | 
			
		||||
@customElement("ak-library-rac-endpoint-launch")
 | 
			
		||||
export class RACLaunchEndpointModal extends TableModal<Endpoint> {
 | 
			
		||||
@ -30,9 +30,9 @@ export class RACLaunchEndpointModal extends TableModal<Endpoint> {
 | 
			
		||||
    app?: Application;
 | 
			
		||||
 | 
			
		||||
    async apiEndpoint(): Promise<PaginatedResponse<Endpoint>> {
 | 
			
		||||
        const endpoints = await new RacApi(DEFAULT_CONFIG).racEndpointsList({
 | 
			
		||||
        const endpoints = await new ProvidersApi(DEFAULT_CONFIG).providersRacEndpointsList({
 | 
			
		||||
            ...(await this.defaultEndpointConfig()),
 | 
			
		||||
            provider: this.app?.provider || 0,
 | 
			
		||||
            providerPk: this.app?.provider || 0,
 | 
			
		||||
        });
 | 
			
		||||
        if (this.open && endpoints.pagination.count === 1) {
 | 
			
		||||
            this.clickHandler(endpoints.results[0]);
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user