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