diff --git a/.github/actions/docker-push-variables/action.yml b/.github/actions/docker-push-variables/action.yml index 04fdb8d6b2c4..2b1fc9ce262d 100644 --- a/.github/actions/docker-push-variables/action.yml +++ b/.github/actions/docker-push-variables/action.yml @@ -9,6 +9,9 @@ inputs: image-arch: required: false description: "Docker image arch" + release: + required: true + description: "True if this is a release build, false if this is a dev/PR build" outputs: shouldPush: @@ -44,6 +47,9 @@ outputs: imageMainName: description: "Docker image main name" value: ${{ steps.ev.outputs.imageMainName }} + imageBuildArgs: + description: "Docker image build args" + value: ${{ steps.ev.outputs.imageBuildArgs }} runs: using: "composite" @@ -54,6 +60,8 @@ runs: env: IMAGE_NAME: ${{ inputs.image-name }} IMAGE_ARCH: ${{ inputs.image-arch }} + RELEASE: ${{ inputs.release }} PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }} + REF: ${{ github.ref }} run: | python3 ${{ github.action_path }}/push_vars.py diff --git a/.github/actions/docker-push-variables/push_vars.py b/.github/actions/docker-push-variables/push_vars.py index feeae09b8c3b..578fceb57f09 100644 --- a/.github/actions/docker-push-variables/push_vars.py +++ b/.github/actions/docker-push-variables/push_vars.py @@ -80,6 +80,13 @@ def get_attest_image_names(image_with_tags: list[str]): cache_to = f"type=registry,ref={get_attest_image_names(image_tags)}:{_cache_tag},mode=max" +image_build_args = [] +if os.getenv("RELEASE", "false").lower() == "true": + image_build_args = [f"VERSION={os.getenv('REF')}"] +else: + image_build_args = [f"GIT_BUILD_HASH={sha}"] +image_build_args = "\n".join(image_build_args) + with open(os.environ["GITHUB_OUTPUT"], "a+", encoding="utf-8") as _output: print(f"shouldPush={str(should_push).lower()}", file=_output) print(f"sha={sha}", file=_output) @@ -91,3 +98,4 @@ def get_attest_image_names(image_with_tags: list[str]): print(f"imageMainTag={image_main_tag}", file=_output) print(f"imageMainName={image_tags[0]}", file=_output) print(f"cacheTo={cache_to}", file=_output) + print(f"imageBuildArgs={image_build_args}", file=_output) diff --git a/.github/workflows/_reusable-docker-build-single.yaml b/.github/workflows/_reusable-docker-build-single.yaml index cca6a9a2139e..c7896a8c093d 100644 --- a/.github/workflows/_reusable-docker-build-single.yaml +++ b/.github/workflows/_reusable-docker-build-single.yaml @@ -50,6 +50,7 @@ jobs: with: image-name: ${{ inputs.image_name }} image-arch: ${{ inputs.image_arch }} + release: ${{ inputs.release }} - name: Login to Docker Hub if: ${{ inputs.registry_dockerhub }} uses: docker/login-action@v3 @@ -81,7 +82,7 @@ jobs: GEOIPUPDATE_ACCOUNT_ID=${{ secrets.GEOIPUPDATE_ACCOUNT_ID }} GEOIPUPDATE_LICENSE_KEY=${{ secrets.GEOIPUPDATE_LICENSE_KEY }} build-args: | - VERSION=${{ github.ref }} + ${{ steps.ev.outputs.imageBuildArgs }} tags: ${{ steps.ev.outputs.imageTags }} platforms: linux/${{ inputs.image_arch }} cache-from: type=registry,ref=${{ steps.ev.outputs.attestImageNames }}:buildcache-${{ inputs.image_arch }} diff --git a/Dockerfile b/Dockerfile index f71c93aba7cb..3d1404af3545 100644 --- a/Dockerfile +++ b/Dockerfile @@ -94,7 +94,7 @@ RUN --mount=type=secret,id=GEOIPUPDATE_ACCOUNT_ID \ /bin/sh -c "/usr/bin/entry.sh || echo 'Failed to get GeoIP database, disabling'; exit 0" # Stage 5: Python dependencies -FROM ghcr.io/goauthentik/fips-python:3.12.7-slim-bookworm-fips AS python-deps +FROM ghcr.io/goauthentik/fips-python:3.12.8-slim-bookworm-fips AS python-deps ARG TARGETARCH ARG TARGETVARIANT @@ -132,13 +132,14 @@ RUN --mount=type=bind,target=./pyproject.toml,src=./pyproject.toml \ . "$HOME/.cargo/env" && \ python -m venv /ak-root/venv/ && \ bash -c "source ${VENV_PATH}/bin/activate && \ - pip3 install --upgrade pip && \ - pip3 install poetry && \ + pip3 install --upgrade pip poetry && \ poetry config --local installer.no-binary cryptography,xmlsec,lxml,python-kadmin-rs && \ + poetry install --only=main --no-ansi --no-interaction --no-root && \ + pip uninstall cryptography -y && \ poetry install --only=main --no-ansi --no-interaction --no-root" # Stage 6: Run -FROM ghcr.io/goauthentik/fips-python:3.12.7-slim-bookworm-fips AS final-image +FROM ghcr.io/goauthentik/fips-python:3.12.8-slim-bookworm-fips AS final-image ARG VERSION ARG GIT_BUILD_HASH @@ -154,10 +155,12 @@ WORKDIR / # We cannot cache this layer otherwise we'll end up with a bigger image RUN apt-get update && \ + apt-get upgrade -y && \ # Required for runtime apt-get install -y --no-install-recommends libpq5 libmaxminddb0 ca-certificates libkrb5-3 libkadm5clnt-mit12 libkdb5-10 libltdl7 libxslt1.1 && \ # Required for bootstrap & healtcheck apt-get install -y --no-install-recommends runit && \ + pip3 install --no-cache-dir --upgrade pip && \ apt-get clean && \ rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/ && \ adduser --system --no-create-home --uid 1000 --group --home /authentik authentik && \ diff --git a/Makefile b/Makefile index 33a4adab9d71..582efb546d39 100644 --- a/Makefile +++ b/Makefile @@ -152,7 +152,7 @@ gen-client-ts: gen-clean-ts ## Build and install the authentik API for Typescri docker run \ --rm -v ${PWD}:/local \ --user ${UID}:${GID} \ - docker.io/openapitools/openapi-generator-cli:v6.5.0 generate \ + docker.io/openapitools/openapi-generator-cli:v7.11.0 generate \ -i /local/schema.yml \ -g typescript-fetch \ -o /local/${GEN_API_TS} \ diff --git a/authentik/sources/kerberos/api/source.py b/authentik/sources/kerberos/api/source.py index cffc0a89400c..9b8120e2e08a 100644 --- a/authentik/sources/kerberos/api/source.py +++ b/authentik/sources/kerberos/api/source.py @@ -66,6 +66,7 @@ class KerberosSourceViewSet(UsedByMixin, ModelViewSet): serializer_class = KerberosSourceSerializer lookup_field = "slug" filterset_fields = [ + "pbm_uuid", "name", "slug", "enabled", diff --git a/authentik/sources/ldap/api.py b/authentik/sources/ldap/api.py index 89ef164cd739..16741caa3ed3 100644 --- a/authentik/sources/ldap/api.py +++ b/authentik/sources/ldap/api.py @@ -110,6 +110,7 @@ class LDAPSourceViewSet(UsedByMixin, ModelViewSet): serializer_class = LDAPSourceSerializer lookup_field = "slug" filterset_fields = [ + "pbm_uuid", "name", "slug", "enabled", diff --git a/authentik/sources/oauth/api/source.py b/authentik/sources/oauth/api/source.py index ebba67d2f260..811049571adf 100644 --- a/authentik/sources/oauth/api/source.py +++ b/authentik/sources/oauth/api/source.py @@ -152,6 +152,7 @@ def filter_has_jwks(self, queryset, name, value): # pragma: no cover class Meta: model = OAuthSource fields = [ + "pbm_uuid", "name", "slug", "enabled", diff --git a/authentik/sources/plex/api/source.py b/authentik/sources/plex/api/source.py index f662fe9f4b5f..c4239e2b301e 100644 --- a/authentik/sources/plex/api/source.py +++ b/authentik/sources/plex/api/source.py @@ -52,6 +52,7 @@ class PlexSourceViewSet(UsedByMixin, ModelViewSet): serializer_class = PlexSourceSerializer lookup_field = "slug" filterset_fields = [ + "pbm_uuid", "name", "slug", "enabled", diff --git a/authentik/sources/saml/api/source.py b/authentik/sources/saml/api/source.py index 5cf4dc7ea60d..0191fccc2a3a 100644 --- a/authentik/sources/saml/api/source.py +++ b/authentik/sources/saml/api/source.py @@ -44,6 +44,7 @@ class SAMLSourceViewSet(UsedByMixin, ModelViewSet): serializer_class = SAMLSourceSerializer lookup_field = "slug" filterset_fields = [ + "pbm_uuid", "name", "slug", "enabled", diff --git a/authentik/sources/scim/api/sources.py b/authentik/sources/scim/api/sources.py index 729e89c7a2f6..d51395a0656e 100644 --- a/authentik/sources/scim/api/sources.py +++ b/authentik/sources/scim/api/sources.py @@ -53,6 +53,6 @@ class SCIMSourceViewSet(UsedByMixin, ModelViewSet): queryset = SCIMSource.objects.all() serializer_class = SCIMSourceSerializer lookup_field = "slug" - filterset_fields = ["name", "slug"] + filterset_fields = ["pbm_uuid", "name", "slug"] search_fields = ["name", "slug", "token__identifier", "token__user__username"] ordering = ["name"] diff --git a/authentik/stages/prompt/stage.py b/authentik/stages/prompt/stage.py index 987a16444638..5f43e11ebffb 100644 --- a/authentik/stages/prompt/stage.py +++ b/authentik/stages/prompt/stage.py @@ -5,6 +5,7 @@ from types import MethodType from typing import Any +from django.contrib.messages import INFO, add_message from django.db.models.query import QuerySet from django.http import HttpRequest, HttpResponse from django.http.request import QueryDict @@ -147,6 +148,9 @@ def validate(self, attrs: dict[str, Any]) -> dict[str, Any]: result = engine.result if not result.passing: raise ValidationError(list(result.messages)) + else: + for msg in result.messages: + add_message(self.request, INFO, msg) return attrs diff --git a/ldap.Dockerfile b/ldap.Dockerfile index 646d3c23428b..088204382798 100644 --- a/ldap.Dockerfile +++ b/ldap.Dockerfile @@ -43,6 +43,11 @@ LABEL org.opencontainers.image.source=https://github.com/goauthentik/authentik LABEL org.opencontainers.image.version=${VERSION} LABEL org.opencontainers.image.revision=${GIT_BUILD_HASH} +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get clean && \ + rm -rf /tmp/* /var/lib/apt/lists/* + COPY --from=builder /go/ldap / HEALTHCHECK --interval=5s --retries=20 --start-period=3s CMD [ "/ldap", "healthcheck" ] diff --git a/poetry.lock b/poetry.lock index 021bb33e01cc..953838d10641 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1061,13 +1061,13 @@ testing = ["pytest (>=7.2.1)", "pytest-cov (>=4.0.0)", "tox (>=4.4.3)"] [[package]] name = "codespell" -version = "2.3.0" -description = "Codespell" +version = "2.4.0" +description = "Fix common misspellings in text files" optional = false python-versions = ">=3.8" files = [ - {file = "codespell-2.3.0-py3-none-any.whl", hash = "sha256:a9c7cef2501c9cfede2110fd6d4e5e62296920efe9abfb84648df866e47f58d1"}, - {file = "codespell-2.3.0.tar.gz", hash = "sha256:360c7d10f75e65f67bad720af7007e1060a5d395670ec11a7ed1fed9dd17471f"}, + {file = "codespell-2.4.0-py3-none-any.whl", hash = "sha256:b4c5b779f747dd481587aeecb5773301183f52b94b96ed51a28126d0482eec1d"}, + {file = "codespell-2.4.0.tar.gz", hash = "sha256:587d45b14707fb8ce51339ba4cce50ae0e98ce228ef61f3c5e160e34f681be58"}, ] [package.extras] diff --git a/proxy.Dockerfile b/proxy.Dockerfile index 51bd22a27a72..363d0729e80a 100644 --- a/proxy.Dockerfile +++ b/proxy.Dockerfile @@ -59,6 +59,11 @@ LABEL org.opencontainers.image.source=https://github.com/goauthentik/authentik LABEL org.opencontainers.image.version=${VERSION} LABEL org.opencontainers.image.revision=${GIT_BUILD_HASH} +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get clean && \ + rm -rf /tmp/* /var/lib/apt/lists/* + COPY --from=builder /go/proxy / COPY --from=web-builder /static/robots.txt /web/robots.txt COPY --from=web-builder /static/security.txt /web/security.txt diff --git a/rac.Dockerfile b/rac.Dockerfile index 849f5d32a54e..892d0a407d9b 100644 --- a/rac.Dockerfile +++ b/rac.Dockerfile @@ -43,6 +43,13 @@ LABEL org.opencontainers.image.source=https://github.com/goauthentik/authentik LABEL org.opencontainers.image.version=${VERSION} LABEL org.opencontainers.image.revision=${GIT_BUILD_HASH} +USER root +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get clean && \ + rm -rf /tmp/* /var/lib/apt/lists/* +USER 1000 + COPY --from=builder /go/rac / HEALTHCHECK --interval=5s --retries=20 --start-period=3s CMD [ "/rac", "healthcheck" ] diff --git a/radius.Dockerfile b/radius.Dockerfile index 1db5c49256f4..b488b3b6b3a3 100644 --- a/radius.Dockerfile +++ b/radius.Dockerfile @@ -43,6 +43,11 @@ LABEL org.opencontainers.image.source=https://github.com/goauthentik/authentik LABEL org.opencontainers.image.version=${VERSION} LABEL org.opencontainers.image.revision=${GIT_BUILD_HASH} +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get clean && \ + rm -rf /tmp/* /var/lib/apt/lists/* + COPY --from=builder /go/radius / HEALTHCHECK --interval=5s --retries=20 --start-period=3s CMD [ "/radius", "healthcheck" ] diff --git a/schema.yml b/schema.yml index 85d2875976cf..fbf74d3c91a9 100644 --- a/schema.yml +++ b/schema.yml @@ -26248,6 +26248,11 @@ paths: name: password_login_update_internal_password schema: type: boolean + - in: query + name: pbm_uuid + schema: + type: string + format: uuid - in: query name: realm schema: @@ -26620,6 +26625,11 @@ paths: name: password_login_update_internal_password schema: type: boolean + - in: query + name: pbm_uuid + schema: + type: string + format: uuid - in: query name: peer_certificate schema: @@ -27049,6 +27059,11 @@ paths: description: Number of results to return per page. schema: type: integer + - in: query + name: pbm_uuid + schema: + type: string + format: uuid - in: query name: policy_engine_mode schema: @@ -27418,6 +27433,11 @@ paths: description: Number of results to return per page. schema: type: integer + - in: query + name: pbm_uuid + schema: + type: string + format: uuid - in: query name: policy_engine_mode schema: @@ -27821,6 +27841,11 @@ paths: description: Number of results to return per page. schema: type: integer + - in: query + name: pbm_uuid + schema: + type: string + format: uuid - in: query name: policy_engine_mode schema: @@ -28184,6 +28209,11 @@ paths: description: Number of results to return per page. schema: type: integer + - in: query + name: pbm_uuid + schema: + type: string + format: uuid - name: search required: false in: query diff --git a/web/package-lock.json b/web/package-lock.json index 722c87b816a2..e8eec32137ca 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -23,7 +23,7 @@ "@floating-ui/dom": "^1.6.11", "@formatjs/intl-listformat": "^7.5.7", "@fortawesome/fontawesome-free": "^6.6.0", - "@goauthentik/api": "^2024.12.2-1736779617", + "@goauthentik/api": "^2024.12.2-1737631633", "@lit-labs/ssr": "^3.2.2", "@lit/context": "^1.1.2", "@lit/localize": "^0.12.2", @@ -1775,9 +1775,9 @@ } }, "node_modules/@goauthentik/api": { - "version": "2024.12.2-1736779617", - "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2024.12.2-1736779617.tgz", - "integrity": "sha512-M0UMkAjYzvPAeqlYnbZAYkoG6WqIILmAocG5u2tTUcFfpFd6hWcrC8vmq5CsJZbaG4ikkHqFEtitzH/UrX9p8g==" + "version": "2024.12.2-1737631633", + "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2024.12.2-1737631633.tgz", + "integrity": "sha512-vprJ56RxbU/+QfUek6O4XYO/o1uoro2W7Q7kNFpA42JxcR02terZQQBSkghsd4ldNQh0h58QYgRZP29eLK/tuw==" }, "node_modules/@goauthentik/web": { "resolved": "", @@ -21468,10 +21468,11 @@ } }, "node_modules/undici": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", - "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "version": "6.21.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", + "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.17" } @@ -21792,10 +21793,11 @@ } }, "node_modules/vite": { - "version": "5.4.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", - "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "version": "5.4.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", + "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", diff --git a/web/package.json b/web/package.json index 8de64e7f8628..910578e9161b 100644 --- a/web/package.json +++ b/web/package.json @@ -11,7 +11,7 @@ "@floating-ui/dom": "^1.6.11", "@formatjs/intl-listformat": "^7.5.7", "@fortawesome/fontawesome-free": "^6.6.0", - "@goauthentik/api": "^2024.12.2-1736779617", + "@goauthentik/api": "^2024.12.2-1737631633", "@lit-labs/ssr": "^3.2.2", "@lit/context": "^1.1.2", "@lit/localize": "^0.12.2", @@ -125,6 +125,7 @@ "lint:nightmare": "wireit", "lint:package": "wireit", "lint:precommit": "wireit", + "lint:types": "wireit", "lit-analyse": "wireit", "postinstall": "bash scripts/patch-spotlight.sh", "precommit": "wireit", diff --git a/web/src/admin/applications/ApplicationViewPage.ts b/web/src/admin/applications/ApplicationViewPage.ts index 406cbc4b1e9e..6f0905a430b8 100644 --- a/web/src/admin/applications/ApplicationViewPage.ts +++ b/web/src/admin/applications/ApplicationViewPage.ts @@ -80,8 +80,8 @@ export class ApplicationViewPage extends AKElement { if ( app.providerObj && [ - RbacPermissionsAssignedByUsersListModelEnum.ProvidersProxyProxyprovider.toString(), - RbacPermissionsAssignedByUsersListModelEnum.ProvidersLdapLdapprovider.toString(), + RbacPermissionsAssignedByUsersListModelEnum.AuthentikProvidersProxyProxyprovider.toString(), + RbacPermissionsAssignedByUsersListModelEnum.AuthentikProvidersLdapLdapprovider.toString(), ].includes(app.providerObj.metaModelName) ) { this.fetchIsMissingOutpost([app.provider || 0]); @@ -340,7 +340,7 @@ export class ApplicationViewPage extends AKElement { `; diff --git a/web/src/admin/applications/entitlements/ApplicationEntitlementPage.ts b/web/src/admin/applications/entitlements/ApplicationEntitlementPage.ts index 19216376b24a..bedff89e7c35 100644 --- a/web/src/admin/applications/entitlements/ApplicationEntitlementPage.ts +++ b/web/src/admin/applications/entitlements/ApplicationEntitlementPage.ts @@ -86,7 +86,7 @@ export class ApplicationEntitlementsPage extends Table { `, diff --git a/web/src/admin/applications/wizard/steps/SubmitStepOverviewRenderers.ts b/web/src/admin/applications/wizard/steps/SubmitStepOverviewRenderers.ts index 1937d08e846f..934d92c9ace5 100644 --- a/web/src/admin/applications/wizard/steps/SubmitStepOverviewRenderers.ts +++ b/web/src/admin/applications/wizard/steps/SubmitStepOverviewRenderers.ts @@ -142,11 +142,11 @@ function renderLDAPOverview(rawProvider: OneOfProvider) { const providerName = (p: ProviderModelEnum): string => p.toString().split(".")[1]; export const providerRenderers = new Map([ - [providerName(ProviderModelEnum.SamlSamlprovider), renderSAMLOverview], - [providerName(ProviderModelEnum.ScimScimprovider), renderSCIMOverview], - [providerName(ProviderModelEnum.RadiusRadiusprovider), renderRadiusOverview], - [providerName(ProviderModelEnum.RacRacprovider), renderRACOverview], - [providerName(ProviderModelEnum.ProxyProxyprovider), renderProxyOverview], - [providerName(ProviderModelEnum.Oauth2Oauth2provider), renderOAuth2Overview], - [providerName(ProviderModelEnum.LdapLdapprovider), renderLDAPOverview], + [providerName(ProviderModelEnum.AuthentikProvidersSamlSamlprovider), renderSAMLOverview], + [providerName(ProviderModelEnum.AuthentikProvidersScimScimprovider), renderSCIMOverview], + [providerName(ProviderModelEnum.AuthentikProvidersRadiusRadiusprovider), renderRadiusOverview], + [providerName(ProviderModelEnum.AuthentikProvidersRacRacprovider), renderRACOverview], + [providerName(ProviderModelEnum.AuthentikProvidersProxyProxyprovider), renderProxyOverview], + [providerName(ProviderModelEnum.AuthentikProvidersOauth2Oauth2provider), renderOAuth2Overview], + [providerName(ProviderModelEnum.AuthentikProvidersLdapLdapprovider), renderLDAPOverview], ]); diff --git a/web/src/admin/blueprints/BlueprintListPage.ts b/web/src/admin/blueprints/BlueprintListPage.ts index 8ced89232d93..6317fb32cb78 100644 --- a/web/src/admin/blueprints/BlueprintListPage.ts +++ b/web/src/admin/blueprints/BlueprintListPage.ts @@ -155,7 +155,7 @@ export class BlueprintListPage extends TablePage { diff --git a/web/src/admin/brands/BrandListPage.ts b/web/src/admin/brands/BrandListPage.ts index 2f917d038b9d..f7d1a7d8b2e9 100644 --- a/web/src/admin/brands/BrandListPage.ts +++ b/web/src/admin/brands/BrandListPage.ts @@ -93,7 +93,7 @@ export class BrandListPage extends TablePage { `, diff --git a/web/src/admin/crypto/CertificateKeyPairListPage.ts b/web/src/admin/crypto/CertificateKeyPairListPage.ts index bcf3113680e0..24cbed22cd2f 100644 --- a/web/src/admin/crypto/CertificateKeyPairListPage.ts +++ b/web/src/admin/crypto/CertificateKeyPairListPage.ts @@ -134,7 +134,7 @@ export class CertificateKeyPairListPage extends TablePage { `, diff --git a/web/src/admin/enterprise/EnterpriseLicenseListPage.ts b/web/src/admin/enterprise/EnterpriseLicenseListPage.ts index 3c700b615eec..13e392c3e458 100644 --- a/web/src/admin/enterprise/EnterpriseLicenseListPage.ts +++ b/web/src/admin/enterprise/EnterpriseLicenseListPage.ts @@ -231,7 +231,7 @@ export class EnterpriseLicenseListPage extends TablePage { `, diff --git a/web/src/admin/events/RuleListPage.ts b/web/src/admin/events/RuleListPage.ts index 054914a6e926..eae71b70942f 100644 --- a/web/src/admin/events/RuleListPage.ts +++ b/web/src/admin/events/RuleListPage.ts @@ -99,7 +99,7 @@ export class RuleListPage extends TablePage { `, diff --git a/web/src/admin/events/TransportListPage.ts b/web/src/admin/events/TransportListPage.ts index 1aa93b7b3ae5..36b607512cd0 100644 --- a/web/src/admin/events/TransportListPage.ts +++ b/web/src/admin/events/TransportListPage.ts @@ -94,7 +94,7 @@ export class TransportListPage extends TablePage { diff --git a/web/src/admin/flows/FlowViewPage.ts b/web/src/admin/flows/FlowViewPage.ts index 67ed848d7abd..661cc3367c6e 100644 --- a/web/src/admin/flows/FlowViewPage.ts +++ b/web/src/admin/flows/FlowViewPage.ts @@ -280,7 +280,7 @@ export class FlowViewPage extends AKElement { `; diff --git a/web/src/admin/groups/GroupViewPage.ts b/web/src/admin/groups/GroupViewPage.ts index 9cbf32246836..a9c023e7676f 100644 --- a/web/src/admin/groups/GroupViewPage.ts +++ b/web/src/admin/groups/GroupViewPage.ts @@ -203,7 +203,7 @@ export class GroupViewPage extends AKElement { `; diff --git a/web/src/admin/outposts/OutpostListPage.ts b/web/src/admin/outposts/OutpostListPage.ts index 7784c11574e9..2349ce5bbbb1 100644 --- a/web/src/admin/outposts/OutpostListPage.ts +++ b/web/src/admin/outposts/OutpostListPage.ts @@ -148,7 +148,7 @@ export class OutpostListPage extends TablePage { diff --git a/web/src/admin/policies/reputation/ReputationListPage.ts b/web/src/admin/policies/reputation/ReputationListPage.ts index e9c2d92a4c0e..769bcfb5dd40 100644 --- a/web/src/admin/policies/reputation/ReputationListPage.ts +++ b/web/src/admin/policies/reputation/ReputationListPage.ts @@ -93,7 +93,7 @@ export class ReputationListPage extends TablePage { ${item.updated.toLocaleString()}`, html` diff --git a/web/src/admin/property-mappings/PropertyMappingTestForm.ts b/web/src/admin/property-mappings/PropertyMappingTestForm.ts index ae847ad4f3c0..c39ee8f69a9b 100644 --- a/web/src/admin/property-mappings/PropertyMappingTestForm.ts +++ b/web/src/admin/property-mappings/PropertyMappingTestForm.ts @@ -71,7 +71,7 @@ export class PolicyTestForm extends Form { renderExampleButtons() { return this.mapping?.metaModelName === - RbacPermissionsAssignedByUsersListModelEnum.SourcesLdapLdapsourcepropertymapping + RbacPermissionsAssignedByUsersListModelEnum.AuthentikSourcesLdapLdapsourcepropertymapping ? html`

${msg("Example context data")}

${this.renderExampleLDAP()}` : nothing; diff --git a/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderGroupList.ts b/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderGroupList.ts index 7c5dc6fe271b..fe8b547e5631 100644 --- a/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderGroupList.ts +++ b/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderGroupList.ts @@ -35,7 +35,7 @@ export class GoogleWorkspaceProviderGroupList extends Table${msg("Sync Group")} { return new ProvidersApi( DEFAULT_CONFIG, diff --git a/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderUserList.ts b/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderUserList.ts index c0e125ff22db..df0681463326 100644 --- a/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderUserList.ts +++ b/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderUserList.ts @@ -35,7 +35,7 @@ export class GoogleWorkspaceProviderUserList extends Table${msg("Sync User")} { return new ProvidersApi( DEFAULT_CONFIG, diff --git a/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderViewPage.ts b/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderViewPage.ts index 850c4d919678..3cfefb72da8b 100644 --- a/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderViewPage.ts +++ b/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderViewPage.ts @@ -147,7 +147,7 @@ export class GoogleWorkspaceProviderViewPage extends AKElement { `; diff --git a/web/src/admin/providers/ldap/LDAPProviderViewPage.ts b/web/src/admin/providers/ldap/LDAPProviderViewPage.ts index 1362a8d718b0..91e163dfdbe8 100644 --- a/web/src/admin/providers/ldap/LDAPProviderViewPage.ts +++ b/web/src/admin/providers/ldap/LDAPProviderViewPage.ts @@ -111,7 +111,7 @@ export class LDAPProviderViewPage extends AKElement { `; diff --git a/web/src/admin/providers/microsoft_entra/MicrosoftEntraProviderGroupList.ts b/web/src/admin/providers/microsoft_entra/MicrosoftEntraProviderGroupList.ts index 79056978d6f0..396f4fd460fb 100644 --- a/web/src/admin/providers/microsoft_entra/MicrosoftEntraProviderGroupList.ts +++ b/web/src/admin/providers/microsoft_entra/MicrosoftEntraProviderGroupList.ts @@ -32,7 +32,7 @@ export class MicrosoftEntraProviderGroupList extends Table${msg("Sync Group")} { return new ProvidersApi( DEFAULT_CONFIG, diff --git a/web/src/admin/providers/microsoft_entra/MicrosoftEntraProviderUserList.ts b/web/src/admin/providers/microsoft_entra/MicrosoftEntraProviderUserList.ts index 6ff8d4c7253a..a1ec577266d9 100644 --- a/web/src/admin/providers/microsoft_entra/MicrosoftEntraProviderUserList.ts +++ b/web/src/admin/providers/microsoft_entra/MicrosoftEntraProviderUserList.ts @@ -35,7 +35,7 @@ export class MicrosoftEntraProviderUserList extends Table${msg("Sync User")} { return new ProvidersApi( DEFAULT_CONFIG, diff --git a/web/src/admin/providers/microsoft_entra/MicrosoftEntraProviderViewPage.ts b/web/src/admin/providers/microsoft_entra/MicrosoftEntraProviderViewPage.ts index bf4197c936e7..0e113c97afb0 100644 --- a/web/src/admin/providers/microsoft_entra/MicrosoftEntraProviderViewPage.ts +++ b/web/src/admin/providers/microsoft_entra/MicrosoftEntraProviderViewPage.ts @@ -147,7 +147,7 @@ export class MicrosoftEntraProviderViewPage extends AKElement { `; diff --git a/web/src/admin/providers/oauth2/OAuth2ProviderViewPage.ts b/web/src/admin/providers/oauth2/OAuth2ProviderViewPage.ts index d1245b4e9449..f2a866536a81 100644 --- a/web/src/admin/providers/oauth2/OAuth2ProviderViewPage.ts +++ b/web/src/admin/providers/oauth2/OAuth2ProviderViewPage.ts @@ -158,7 +158,7 @@ export class OAuth2ProviderViewPage extends AKElement { `; diff --git a/web/src/admin/providers/oauth2/OAuth2Sources.ts b/web/src/admin/providers/oauth2/OAuth2Sources.ts index f8dcb910b507..73e571839ffe 100644 --- a/web/src/admin/providers/oauth2/OAuth2Sources.ts +++ b/web/src/admin/providers/oauth2/OAuth2Sources.ts @@ -4,7 +4,7 @@ import { DualSelectPair } from "@goauthentik/elements/ak-dual-select/types"; import { OAuthSource, SourcesApi } from "@goauthentik/api"; const sourceToSelect = (source: OAuthSource) => [ - source.slug, + source.pk, `${source.name} (${source.slug})`, source.name, source, @@ -37,13 +37,15 @@ export function oauth2SourcesSelector(instanceMappings?: string[]) { const oauthSources = new SourcesApi(DEFAULT_CONFIG); const mappings = await Promise.allSettled( instanceMappings.map((instanceId) => - oauthSources.sourcesOauthRetrieve({ slug: instanceId }), + oauthSources.sourcesOauthList({ pbmUuid: instanceId }), ), ); return mappings .filter((s) => s.status === "fulfilled") .map((s) => s.value) + .filter((s) => s.pagination.count > 0) + .map((s) => s.results[0]) .map(sourceToSelect); }; } diff --git a/web/src/admin/providers/proxy/ProxyProviderViewPage.ts b/web/src/admin/providers/proxy/ProxyProviderViewPage.ts index c7e42a32288f..6c36efad0a59 100644 --- a/web/src/admin/providers/proxy/ProxyProviderViewPage.ts +++ b/web/src/admin/providers/proxy/ProxyProviderViewPage.ts @@ -229,7 +229,7 @@ export class ProxyProviderViewPage extends AKElement { `; diff --git a/web/src/admin/providers/rac/EndpointList.ts b/web/src/admin/providers/rac/EndpointList.ts index 06e60477bc16..56c8aa103725 100644 --- a/web/src/admin/providers/rac/EndpointList.ts +++ b/web/src/admin/providers/rac/EndpointList.ts @@ -102,7 +102,7 @@ export class EndpointListPage extends Table { `, diff --git a/web/src/admin/providers/rac/RACProviderViewPage.ts b/web/src/admin/providers/rac/RACProviderViewPage.ts index 5669f475e0ed..ae21bd62fa8f 100644 --- a/web/src/admin/providers/rac/RACProviderViewPage.ts +++ b/web/src/admin/providers/rac/RACProviderViewPage.ts @@ -119,7 +119,7 @@ export class RACProviderViewPage extends AKElement { `; diff --git a/web/src/admin/providers/radius/RadiusProviderViewPage.ts b/web/src/admin/providers/radius/RadiusProviderViewPage.ts index 73dbb42c347c..913f3faa9886 100644 --- a/web/src/admin/providers/radius/RadiusProviderViewPage.ts +++ b/web/src/admin/providers/radius/RadiusProviderViewPage.ts @@ -169,7 +169,7 @@ export class RadiusProviderViewPage extends AKElement { `; diff --git a/web/src/admin/providers/saml/SAMLProviderOptions.ts b/web/src/admin/providers/saml/SAMLProviderOptions.ts index cf6181f7e3d8..3ab0e4dd5990 100644 --- a/web/src/admin/providers/saml/SAMLProviderOptions.ts +++ b/web/src/admin/providers/saml/SAMLProviderOptions.ts @@ -18,20 +18,20 @@ export const spBindingOptions = toOptions([ ]); export const digestAlgorithmOptions = toOptions([ - ["SHA1", DigestAlgorithmEnum._200009Xmldsigsha1], - ["SHA256", DigestAlgorithmEnum._200104Xmlencsha256, true], - ["SHA384", DigestAlgorithmEnum._200104XmldsigMoresha384], - ["SHA512", DigestAlgorithmEnum._200104Xmlencsha512], + ["SHA1", DigestAlgorithmEnum.HttpWwwW3Org200009Xmldsigsha1], + ["SHA256", DigestAlgorithmEnum.HttpWwwW3Org200104Xmlencsha256, true], + ["SHA384", DigestAlgorithmEnum.HttpWwwW3Org200104XmldsigMoresha384], + ["SHA512", DigestAlgorithmEnum.HttpWwwW3Org200104Xmlencsha512], ]); export const signatureAlgorithmOptions = toOptions([ - ["RSA-SHA1", SignatureAlgorithmEnum._200009XmldsigrsaSha1], - ["RSA-SHA256", SignatureAlgorithmEnum._200104XmldsigMorersaSha256, true], - ["RSA-SHA384", SignatureAlgorithmEnum._200104XmldsigMorersaSha384], - ["RSA-SHA512", SignatureAlgorithmEnum._200104XmldsigMorersaSha512], - ["ECDSA-SHA1", SignatureAlgorithmEnum._200104XmldsigMoreecdsaSha1], - ["ECDSA-SHA256", SignatureAlgorithmEnum._200104XmldsigMoreecdsaSha256], - ["ECDSA-SHA384", SignatureAlgorithmEnum._200104XmldsigMoreecdsaSha384], - ["ECDSA-SHA512", SignatureAlgorithmEnum._200104XmldsigMoreecdsaSha512], - ["DSA-SHA1", SignatureAlgorithmEnum._200009XmldsigdsaSha1], + ["RSA-SHA1", SignatureAlgorithmEnum.HttpWwwW3Org200009XmldsigrsaSha1], + ["RSA-SHA256", SignatureAlgorithmEnum.HttpWwwW3Org200104XmldsigMorersaSha256, true], + ["RSA-SHA384", SignatureAlgorithmEnum.HttpWwwW3Org200104XmldsigMorersaSha384], + ["RSA-SHA512", SignatureAlgorithmEnum.HttpWwwW3Org200104XmldsigMorersaSha512], + ["ECDSA-SHA1", SignatureAlgorithmEnum.HttpWwwW3Org200104XmldsigMoreecdsaSha1], + ["ECDSA-SHA256", SignatureAlgorithmEnum.HttpWwwW3Org200104XmldsigMoreecdsaSha256], + ["ECDSA-SHA384", SignatureAlgorithmEnum.HttpWwwW3Org200104XmldsigMoreecdsaSha384], + ["ECDSA-SHA512", SignatureAlgorithmEnum.HttpWwwW3Org200104XmldsigMoreecdsaSha512], + ["DSA-SHA1", SignatureAlgorithmEnum.HttpWwwW3Org200009XmldsigdsaSha1], ]); diff --git a/web/src/admin/providers/saml/SAMLProviderViewPage.ts b/web/src/admin/providers/saml/SAMLProviderViewPage.ts index 67e1ddad26d2..5bf4ff89b65d 100644 --- a/web/src/admin/providers/saml/SAMLProviderViewPage.ts +++ b/web/src/admin/providers/saml/SAMLProviderViewPage.ts @@ -247,7 +247,7 @@ export class SAMLProviderViewPage extends AKElement { `; diff --git a/web/src/admin/providers/scim/SCIMProviderGroupList.ts b/web/src/admin/providers/scim/SCIMProviderGroupList.ts index a2c8e13d50a3..fedc38a7bff2 100644 --- a/web/src/admin/providers/scim/SCIMProviderGroupList.ts +++ b/web/src/admin/providers/scim/SCIMProviderGroupList.ts @@ -33,7 +33,7 @@ export class SCIMProviderGroupList extends Table { ${msg("Sync Group")} { return new ProvidersApi(DEFAULT_CONFIG).providersScimSyncObjectCreate(data); }} diff --git a/web/src/admin/providers/scim/SCIMProviderUserList.ts b/web/src/admin/providers/scim/SCIMProviderUserList.ts index c5044966dec4..3625b6109770 100644 --- a/web/src/admin/providers/scim/SCIMProviderUserList.ts +++ b/web/src/admin/providers/scim/SCIMProviderUserList.ts @@ -33,7 +33,7 @@ export class SCIMProviderUserList extends Table { ${msg("Sync User")} { return new ProvidersApi(DEFAULT_CONFIG).providersScimSyncObjectCreate(data); }} diff --git a/web/src/admin/providers/scim/SCIMProviderViewPage.ts b/web/src/admin/providers/scim/SCIMProviderViewPage.ts index fd0220e3c672..808d4d853495 100644 --- a/web/src/admin/providers/scim/SCIMProviderViewPage.ts +++ b/web/src/admin/providers/scim/SCIMProviderViewPage.ts @@ -130,7 +130,7 @@ export class SCIMProviderViewPage extends AKElement { `; diff --git a/web/src/admin/rbac/ObjectPermissionsPage.ts b/web/src/admin/rbac/ObjectPermissionsPage.ts index f5ae15e9ec6e..6f3d612cccf6 100644 --- a/web/src/admin/rbac/ObjectPermissionsPage.ts +++ b/web/src/admin/rbac/ObjectPermissionsPage.ts @@ -35,10 +35,10 @@ export class ObjectPermissionPage extends AKElement { render() { return html` - ${this.model === RbacPermissionsAssignedByUsersListModelEnum.CoreUser + ${this.model === RbacPermissionsAssignedByUsersListModelEnum.AuthentikCoreUser ? this.renderCoreUser() : nothing} - ${this.model === RbacPermissionsAssignedByUsersListModelEnum.RbacRole + ${this.model === RbacPermissionsAssignedByUsersListModelEnum.AuthentikRbacRole ? this.renderRbacRole() : nothing}
`; diff --git a/web/src/admin/sources/kerberos/KerberosSourceViewPage.ts b/web/src/admin/sources/kerberos/KerberosSourceViewPage.ts index a09576453555..521866f04889 100644 --- a/web/src/admin/sources/kerberos/KerberosSourceViewPage.ts +++ b/web/src/admin/sources/kerberos/KerberosSourceViewPage.ts @@ -216,7 +216,7 @@ export class KerberosSourceViewPage extends AKElement { `; diff --git a/web/src/admin/sources/ldap/LDAPSourceViewPage.ts b/web/src/admin/sources/ldap/LDAPSourceViewPage.ts index 84da76f29b38..936fa0176235 100644 --- a/web/src/admin/sources/ldap/LDAPSourceViewPage.ts +++ b/web/src/admin/sources/ldap/LDAPSourceViewPage.ts @@ -192,7 +192,7 @@ export class LDAPSourceViewPage extends AKElement { `; diff --git a/web/src/admin/sources/oauth/OAuthSourceViewPage.ts b/web/src/admin/sources/oauth/OAuthSourceViewPage.ts index 4e7c94b1cb67..490ccdc03806 100644 --- a/web/src/admin/sources/oauth/OAuthSourceViewPage.ts +++ b/web/src/admin/sources/oauth/OAuthSourceViewPage.ts @@ -253,7 +253,7 @@ export class OAuthSourceViewPage extends AKElement { `; diff --git a/web/src/admin/sources/plex/PlexSourceViewPage.ts b/web/src/admin/sources/plex/PlexSourceViewPage.ts index 270faee0d853..276f9f03a9d6 100644 --- a/web/src/admin/sources/plex/PlexSourceViewPage.ts +++ b/web/src/admin/sources/plex/PlexSourceViewPage.ts @@ -143,7 +143,7 @@ export class PlexSourceViewPage extends AKElement { `; diff --git a/web/src/admin/sources/saml/SAMLSourceForm.ts b/web/src/admin/sources/saml/SAMLSourceForm.ts index dc1dfc09105e..e4ea8d3e43b3 100644 --- a/web/src/admin/sources/saml/SAMLSourceForm.ts +++ b/web/src/admin/sources/saml/SAMLSourceForm.ts @@ -358,37 +358,37 @@ export class SAMLSourceForm extends WithCapabilitiesConfig(BaseSourceForm