Merge branch 'main' into application-wizard-2-with-api-and-tests
* main: web: patternfly hints as ak-web-component (#7120) web: fix form default submit handler (#7122) web/admin: add additional Flow info (#7155) tests: fix potential infinite wait in tests spinning up a container (#7153) ci: disable ghcr retention schedule while it's broken (#7154) translate: Updates for file locale/en/LC_MESSAGES/django.po in de (#7151) core: bump golang.org/x/net from 0.16.0 to 0.17.0 (#7148) web: bump the babel group in /web with 5 updates (#7149) core: bump sentry-sdk from 1.31.0 to 1.32.0 (#7150) website: make get started on pricing page go to customer portal (#7147)
This commit is contained in:
commit
b96478148e
|
@ -1,8 +1,8 @@
|
||||||
name: ghcr-retention
|
name: ghcr-retention
|
||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
# schedule:
|
||||||
- cron: "0 0 * * *" # every day at midnight
|
# - cron: "0 0 * * *" # every day at midnight
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
|
@ -17,8 +17,8 @@ TestCase.maxDiff = None
|
||||||
class PytestTestRunner(DiscoverRunner): # pragma: no cover
|
class PytestTestRunner(DiscoverRunner): # pragma: no cover
|
||||||
"""Runs pytest to discover and run tests."""
|
"""Runs pytest to discover and run tests."""
|
||||||
|
|
||||||
def __init__(self, verbosity=1, failfast=False, keepdb=False, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
super().__init__(verbosity, failfast, keepdb, **kwargs)
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
self.args = []
|
self.args = []
|
||||||
if self.failfast:
|
if self.failfast:
|
||||||
|
@ -47,6 +47,7 @@ class PytestTestRunner(DiscoverRunner): # pragma: no cover
|
||||||
@classmethod
|
@classmethod
|
||||||
def add_arguments(cls, parser: ArgumentParser):
|
def add_arguments(cls, parser: ArgumentParser):
|
||||||
"""Add more pytest-specific arguments"""
|
"""Add more pytest-specific arguments"""
|
||||||
|
DiscoverRunner.add_arguments(parser)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--randomly-seed",
|
"--randomly-seed",
|
||||||
type=int,
|
type=int,
|
||||||
|
@ -55,9 +56,6 @@ class PytestTestRunner(DiscoverRunner): # pragma: no cover
|
||||||
"Default behaviour: use random.Random().getrandbits(32), so the seed is"
|
"Default behaviour: use random.Random().getrandbits(32), so the seed is"
|
||||||
"different on each run.",
|
"different on each run.",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
|
||||||
"--keepdb", action="store_true", help="Preserves the test DB between runs."
|
|
||||||
)
|
|
||||||
|
|
||||||
def run_tests(self, test_labels, extra_tests=None, **kwargs):
|
def run_tests(self, test_labels, extra_tests=None, **kwargs):
|
||||||
"""Run pytest and return the exitcode.
|
"""Run pytest and return the exitcode.
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -73,7 +73,7 @@ require (
|
||||||
go.opentelemetry.io/otel v1.14.0 // indirect
|
go.opentelemetry.io/otel v1.14.0 // indirect
|
||||||
go.opentelemetry.io/otel/trace v1.14.0 // indirect
|
go.opentelemetry.io/otel/trace v1.14.0 // indirect
|
||||||
golang.org/x/crypto v0.14.0 // indirect
|
golang.org/x/crypto v0.14.0 // indirect
|
||||||
golang.org/x/net v0.16.0 // indirect
|
golang.org/x/net v0.17.0 // indirect
|
||||||
golang.org/x/sys v0.13.0 // indirect
|
golang.org/x/sys v0.13.0 // indirect
|
||||||
golang.org/x/text v0.13.0 // indirect
|
golang.org/x/text v0.13.0 // indirect
|
||||||
google.golang.org/appengine v1.6.7 // indirect
|
google.golang.org/appengine v1.6.7 // indirect
|
||||||
|
|
4
go.sum
4
go.sum
|
@ -437,8 +437,8 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||||
golang.org/x/net v0.16.0 h1:7eBu7KsSvFDtSXUIDbh3aqlK4DPsZ1rByC8PFfBThos=
|
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
|
||||||
golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
|
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -3468,13 +3468,13 @@ urllib3 = {version = ">=1.26,<3", extras = ["socks"]}
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sentry-sdk"
|
name = "sentry-sdk"
|
||||||
version = "1.31.0"
|
version = "1.32.0"
|
||||||
description = "Python client for Sentry (https://sentry.io)"
|
description = "Python client for Sentry (https://sentry.io)"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
files = [
|
files = [
|
||||||
{file = "sentry-sdk-1.31.0.tar.gz", hash = "sha256:6de2e88304873484207fed836388e422aeff000609b104c802749fd89d56ba5b"},
|
{file = "sentry-sdk-1.32.0.tar.gz", hash = "sha256:935e8fbd7787a3702457393b74b13d89a5afb67185bc0af85c00cb27cbd42e7c"},
|
||||||
{file = "sentry_sdk-1.31.0-py2.py3-none-any.whl", hash = "sha256:64a7141005fb775b9db298a30de93e3b83e0ddd1232dc6f36eb38aebc1553291"},
|
{file = "sentry_sdk-1.32.0-py2.py3-none-any.whl", hash = "sha256:eeb0b3550536f3bbc05bb1c7e0feb3a78d74acb43b607159a606ed2ec0a33a4d"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
|
|
@ -49,13 +49,8 @@ class TestProviderOAuth2OIDC(SeleniumTestCase):
|
||||||
"OIDC_PROVIDER": f"{self.live_server_url}/application/o/{self.application_slug}/",
|
"OIDC_PROVIDER": f"{self.live_server_url}/application/o/{self.application_slug}/",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
while True:
|
self.wait_for_container(container)
|
||||||
container.reload()
|
return container
|
||||||
status = container.attrs.get("State", {}).get("Health", {}).get("Status")
|
|
||||||
if status == "healthy":
|
|
||||||
return container
|
|
||||||
self.logger.info("Container failed healthcheck")
|
|
||||||
sleep(1)
|
|
||||||
|
|
||||||
@retry()
|
@retry()
|
||||||
@apply_blueprint(
|
@apply_blueprint(
|
||||||
|
|
|
@ -49,13 +49,8 @@ class TestProviderOAuth2OIDCImplicit(SeleniumTestCase):
|
||||||
"OIDC_PROVIDER": f"{self.live_server_url}/application/o/{self.application_slug}/",
|
"OIDC_PROVIDER": f"{self.live_server_url}/application/o/{self.application_slug}/",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
while True:
|
self.wait_for_container(container)
|
||||||
container.reload()
|
return container
|
||||||
status = container.attrs.get("State", {}).get("Health", {}).get("Status")
|
|
||||||
if status == "healthy":
|
|
||||||
return container
|
|
||||||
self.logger.info("Container failed healthcheck")
|
|
||||||
sleep(1)
|
|
||||||
|
|
||||||
@retry()
|
@retry()
|
||||||
@apply_blueprint(
|
@apply_blueprint(
|
||||||
|
|
|
@ -48,13 +48,8 @@ class TestProviderSAML(SeleniumTestCase):
|
||||||
"SP_METADATA_URL": metadata_url,
|
"SP_METADATA_URL": metadata_url,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
while True:
|
self.wait_for_container(container)
|
||||||
container.reload()
|
return container
|
||||||
status = container.attrs.get("State", {}).get("Health", {}).get("Status")
|
|
||||||
if status == "healthy":
|
|
||||||
return container
|
|
||||||
self.logger.info("Container failed healthcheck")
|
|
||||||
sleep(1)
|
|
||||||
|
|
||||||
@retry()
|
@retry()
|
||||||
@apply_blueprint(
|
@apply_blueprint(
|
||||||
|
|
|
@ -43,7 +43,24 @@ def get_docker_tag() -> str:
|
||||||
return f"gh-{branch_name}"
|
return f"gh-{branch_name}"
|
||||||
|
|
||||||
|
|
||||||
class SeleniumTestCase(StaticLiveServerTestCase):
|
class DockerTestCase:
|
||||||
|
"""Mixin for dealing with containers"""
|
||||||
|
|
||||||
|
def wait_for_container(self, container: Container):
|
||||||
|
"""Check that container is health"""
|
||||||
|
attempt = 0
|
||||||
|
while True:
|
||||||
|
container.reload()
|
||||||
|
status = container.attrs.get("State", {}).get("Health", {}).get("Status")
|
||||||
|
if status == "healthy":
|
||||||
|
return container
|
||||||
|
sleep(1)
|
||||||
|
attempt += 1
|
||||||
|
if attempt >= 30:
|
||||||
|
self.failureException("Container failed to start")
|
||||||
|
|
||||||
|
|
||||||
|
class SeleniumTestCase(DockerTestCase, StaticLiveServerTestCase):
|
||||||
"""StaticLiveServerTestCase which automatically creates a Webdriver instance"""
|
"""StaticLiveServerTestCase which automatically creates a Webdriver instance"""
|
||||||
|
|
||||||
container: Optional[Container] = None
|
container: Optional[Container] = None
|
||||||
|
@ -82,13 +99,8 @@ class SeleniumTestCase(StaticLiveServerTestCase):
|
||||||
state = container.attrs.get("State", {})
|
state = container.attrs.get("State", {})
|
||||||
if "Health" not in state:
|
if "Health" not in state:
|
||||||
return container
|
return container
|
||||||
while True:
|
self.wait_for_container(container)
|
||||||
container.reload()
|
return container
|
||||||
status = container.attrs.get("State", {}).get("Health", {}).get("Status")
|
|
||||||
if status == "healthy":
|
|
||||||
return container
|
|
||||||
self.logger.info("Container failed healthcheck")
|
|
||||||
sleep(1)
|
|
||||||
|
|
||||||
def output_container_logs(self, container: Optional[Container] = None):
|
def output_container_logs(self, container: Optional[Container] = None):
|
||||||
"""Output the container logs to our STDOUT"""
|
"""Output the container logs to our STDOUT"""
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
"""outpost tests"""
|
"""outpost tests"""
|
||||||
from shutil import rmtree
|
from shutil import rmtree
|
||||||
from tempfile import mkdtemp
|
from tempfile import mkdtemp
|
||||||
from time import sleep
|
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from channels.testing import ChannelsLiveServerTestCase
|
from channels.testing import ChannelsLiveServerTestCase
|
||||||
|
@ -20,10 +19,10 @@ from authentik.outposts.models import (
|
||||||
)
|
)
|
||||||
from authentik.outposts.tasks import outpost_connection_discovery
|
from authentik.outposts.tasks import outpost_connection_discovery
|
||||||
from authentik.providers.proxy.models import ProxyProvider
|
from authentik.providers.proxy.models import ProxyProvider
|
||||||
from tests.e2e.utils import get_docker_tag
|
from tests.e2e.utils import DockerTestCase, get_docker_tag
|
||||||
|
|
||||||
|
|
||||||
class OutpostDockerTests(ChannelsLiveServerTestCase):
|
class OutpostDockerTests(DockerTestCase, ChannelsLiveServerTestCase):
|
||||||
"""Test Docker Controllers"""
|
"""Test Docker Controllers"""
|
||||||
|
|
||||||
def _start_container(self, ssl_folder: str) -> Container:
|
def _start_container(self, ssl_folder: str) -> Container:
|
||||||
|
@ -45,12 +44,8 @@ class OutpostDockerTests(ChannelsLiveServerTestCase):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
while True:
|
self.wait_for_container(container)
|
||||||
container.reload()
|
return container
|
||||||
status = container.attrs.get("State", {}).get("Health", {}).get("Status")
|
|
||||||
if status == "healthy":
|
|
||||||
return container
|
|
||||||
sleep(1)
|
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
"""outpost tests"""
|
"""outpost tests"""
|
||||||
from shutil import rmtree
|
from shutil import rmtree
|
||||||
from tempfile import mkdtemp
|
from tempfile import mkdtemp
|
||||||
from time import sleep
|
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from channels.testing.live import ChannelsLiveServerTestCase
|
from channels.testing.live import ChannelsLiveServerTestCase
|
||||||
|
@ -20,10 +19,10 @@ from authentik.outposts.models import (
|
||||||
from authentik.outposts.tasks import outpost_connection_discovery
|
from authentik.outposts.tasks import outpost_connection_discovery
|
||||||
from authentik.providers.proxy.controllers.docker import DockerController
|
from authentik.providers.proxy.controllers.docker import DockerController
|
||||||
from authentik.providers.proxy.models import ProxyProvider
|
from authentik.providers.proxy.models import ProxyProvider
|
||||||
from tests.e2e.utils import get_docker_tag
|
from tests.e2e.utils import DockerTestCase, get_docker_tag
|
||||||
|
|
||||||
|
|
||||||
class TestProxyDocker(ChannelsLiveServerTestCase):
|
class TestProxyDocker(DockerTestCase, ChannelsLiveServerTestCase):
|
||||||
"""Test Docker Controllers"""
|
"""Test Docker Controllers"""
|
||||||
|
|
||||||
def _start_container(self, ssl_folder: str) -> Container:
|
def _start_container(self, ssl_folder: str) -> Container:
|
||||||
|
@ -45,12 +44,8 @@ class TestProxyDocker(ChannelsLiveServerTestCase):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
while True:
|
self.wait_for_container(container)
|
||||||
container.reload()
|
return container
|
||||||
status = container.attrs.get("State", {}).get("Health", {}).get("Status")
|
|
||||||
if status == "healthy":
|
|
||||||
return container
|
|
||||||
sleep(1)
|
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
|
@ -43,14 +43,14 @@
|
||||||
"yaml": "^2.3.2"
|
"yaml": "^2.3.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.23.0",
|
"@babel/core": "^7.23.2",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
||||||
"@babel/plugin-proposal-decorators": "^7.23.0",
|
"@babel/plugin-proposal-decorators": "^7.23.2",
|
||||||
"@babel/plugin-transform-private-methods": "^7.22.5",
|
"@babel/plugin-transform-private-methods": "^7.22.5",
|
||||||
"@babel/plugin-transform-private-property-in-object": "^7.22.11",
|
"@babel/plugin-transform-private-property-in-object": "^7.22.11",
|
||||||
"@babel/plugin-transform-runtime": "^7.22.15",
|
"@babel/plugin-transform-runtime": "^7.23.2",
|
||||||
"@babel/preset-env": "^7.22.20",
|
"@babel/preset-env": "^7.23.2",
|
||||||
"@babel/preset-typescript": "^7.23.0",
|
"@babel/preset-typescript": "^7.23.2",
|
||||||
"@hcaptcha/types": "^1.0.3",
|
"@hcaptcha/types": "^1.0.3",
|
||||||
"@jackfranklin/rollup-plugin-markdown": "^0.4.0",
|
"@jackfranklin/rollup-plugin-markdown": "^0.4.0",
|
||||||
"@jeysal/storybook-addon-css-user-preferences": "^0.2.0",
|
"@jeysal/storybook-addon-css-user-preferences": "^0.2.0",
|
||||||
|
@ -161,18 +161,18 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/compat-data": {
|
"node_modules/@babel/compat-data": {
|
||||||
"version": "7.22.20",
|
"version": "7.23.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz",
|
||||||
"integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==",
|
"integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/core": {
|
"node_modules/@babel/core": {
|
||||||
"version": "7.23.0",
|
"version": "7.23.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz",
|
||||||
"integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==",
|
"integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ampproject/remapping": "^2.2.0",
|
"@ampproject/remapping": "^2.2.0",
|
||||||
|
@ -180,10 +180,10 @@
|
||||||
"@babel/generator": "^7.23.0",
|
"@babel/generator": "^7.23.0",
|
||||||
"@babel/helper-compilation-targets": "^7.22.15",
|
"@babel/helper-compilation-targets": "^7.22.15",
|
||||||
"@babel/helper-module-transforms": "^7.23.0",
|
"@babel/helper-module-transforms": "^7.23.0",
|
||||||
"@babel/helpers": "^7.23.0",
|
"@babel/helpers": "^7.23.2",
|
||||||
"@babel/parser": "^7.23.0",
|
"@babel/parser": "^7.23.0",
|
||||||
"@babel/template": "^7.22.15",
|
"@babel/template": "^7.22.15",
|
||||||
"@babel/traverse": "^7.23.0",
|
"@babel/traverse": "^7.23.2",
|
||||||
"@babel/types": "^7.23.0",
|
"@babel/types": "^7.23.0",
|
||||||
"convert-source-map": "^2.0.0",
|
"convert-source-map": "^2.0.0",
|
||||||
"debug": "^4.1.0",
|
"debug": "^4.1.0",
|
||||||
|
@ -301,9 +301,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-define-polyfill-provider": {
|
"node_modules/@babel/helper-define-polyfill-provider": {
|
||||||
"version": "0.4.2",
|
"version": "0.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz",
|
||||||
"integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==",
|
"integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-compilation-targets": "^7.22.6",
|
"@babel/helper-compilation-targets": "^7.22.6",
|
||||||
|
@ -415,14 +415,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-remap-async-to-generator": {
|
"node_modules/@babel/helper-remap-async-to-generator": {
|
||||||
"version": "7.22.17",
|
"version": "7.22.20",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.17.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz",
|
||||||
"integrity": "sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA==",
|
"integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-annotate-as-pure": "^7.22.5",
|
"@babel/helper-annotate-as-pure": "^7.22.5",
|
||||||
"@babel/helper-environment-visitor": "^7.22.5",
|
"@babel/helper-environment-visitor": "^7.22.20",
|
||||||
"@babel/helper-wrap-function": "^7.22.17"
|
"@babel/helper-wrap-function": "^7.22.20"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
|
@ -512,27 +512,27 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-wrap-function": {
|
"node_modules/@babel/helper-wrap-function": {
|
||||||
"version": "7.22.17",
|
"version": "7.22.20",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.17.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz",
|
||||||
"integrity": "sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q==",
|
"integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-function-name": "^7.22.5",
|
"@babel/helper-function-name": "^7.22.5",
|
||||||
"@babel/template": "^7.22.15",
|
"@babel/template": "^7.22.15",
|
||||||
"@babel/types": "^7.22.17"
|
"@babel/types": "^7.22.19"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helpers": {
|
"node_modules/@babel/helpers": {
|
||||||
"version": "7.23.1",
|
"version": "7.23.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz",
|
||||||
"integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==",
|
"integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/template": "^7.22.15",
|
"@babel/template": "^7.22.15",
|
||||||
"@babel/traverse": "^7.23.0",
|
"@babel/traverse": "^7.23.2",
|
||||||
"@babel/types": "^7.23.0"
|
"@babel/types": "^7.23.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -615,9 +615,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-proposal-decorators": {
|
"node_modules/@babel/plugin-proposal-decorators": {
|
||||||
"version": "7.23.0",
|
"version": "7.23.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.2.tgz",
|
||||||
"integrity": "sha512-kYsT+f5ARWF6AdFmqoEEp+hpqxEB8vGmRWfw2aj78M2vTwS2uHW91EF58iFm1Z9U8Y/RrLu2XKJn46P9ca1b0w==",
|
"integrity": "sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-create-class-features-plugin": "^7.22.15",
|
"@babel/helper-create-class-features-plugin": "^7.22.15",
|
||||||
|
@ -991,14 +991,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-async-generator-functions": {
|
"node_modules/@babel/plugin-transform-async-generator-functions": {
|
||||||
"version": "7.22.15",
|
"version": "7.23.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz",
|
||||||
"integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==",
|
"integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-environment-visitor": "^7.22.5",
|
"@babel/helper-environment-visitor": "^7.22.20",
|
||||||
"@babel/helper-plugin-utils": "^7.22.5",
|
"@babel/helper-plugin-utils": "^7.22.5",
|
||||||
"@babel/helper-remap-async-to-generator": "^7.22.9",
|
"@babel/helper-remap-async-to-generator": "^7.22.20",
|
||||||
"@babel/plugin-syntax-async-generators": "^7.8.4"
|
"@babel/plugin-syntax-async-generators": "^7.8.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -1041,9 +1041,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-block-scoping": {
|
"node_modules/@babel/plugin-transform-block-scoping": {
|
||||||
"version": "7.22.15",
|
"version": "7.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz",
|
||||||
"integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==",
|
"integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.22.5"
|
"@babel/helper-plugin-utils": "^7.22.5"
|
||||||
|
@ -1128,9 +1128,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-destructuring": {
|
"node_modules/@babel/plugin-transform-destructuring": {
|
||||||
"version": "7.22.15",
|
"version": "7.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz",
|
||||||
"integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==",
|
"integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.22.5"
|
"@babel/helper-plugin-utils": "^7.22.5"
|
||||||
|
@ -1332,12 +1332,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-modules-amd": {
|
"node_modules/@babel/plugin-transform-modules-amd": {
|
||||||
"version": "7.22.5",
|
"version": "7.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz",
|
||||||
"integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==",
|
"integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-module-transforms": "^7.22.5",
|
"@babel/helper-module-transforms": "^7.23.0",
|
||||||
"@babel/helper-plugin-utils": "^7.22.5"
|
"@babel/helper-plugin-utils": "^7.22.5"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -1365,15 +1365,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-modules-systemjs": {
|
"node_modules/@babel/plugin-transform-modules-systemjs": {
|
||||||
"version": "7.22.11",
|
"version": "7.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz",
|
||||||
"integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==",
|
"integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-hoist-variables": "^7.22.5",
|
"@babel/helper-hoist-variables": "^7.22.5",
|
||||||
"@babel/helper-module-transforms": "^7.22.9",
|
"@babel/helper-module-transforms": "^7.23.0",
|
||||||
"@babel/helper-plugin-utils": "^7.22.5",
|
"@babel/helper-plugin-utils": "^7.22.5",
|
||||||
"@babel/helper-validator-identifier": "^7.22.5"
|
"@babel/helper-validator-identifier": "^7.22.20"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
|
@ -1513,9 +1513,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-optional-chaining": {
|
"node_modules/@babel/plugin-transform-optional-chaining": {
|
||||||
"version": "7.22.15",
|
"version": "7.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz",
|
||||||
"integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==",
|
"integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.22.5",
|
"@babel/helper-plugin-utils": "^7.22.5",
|
||||||
|
@ -1625,16 +1625,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-runtime": {
|
"node_modules/@babel/plugin-transform-runtime": {
|
||||||
"version": "7.22.15",
|
"version": "7.23.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz",
|
||||||
"integrity": "sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==",
|
"integrity": "sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-module-imports": "^7.22.15",
|
"@babel/helper-module-imports": "^7.22.15",
|
||||||
"@babel/helper-plugin-utils": "^7.22.5",
|
"@babel/helper-plugin-utils": "^7.22.5",
|
||||||
"babel-plugin-polyfill-corejs2": "^0.4.5",
|
"babel-plugin-polyfill-corejs2": "^0.4.6",
|
||||||
"babel-plugin-polyfill-corejs3": "^0.8.3",
|
"babel-plugin-polyfill-corejs3": "^0.8.5",
|
||||||
"babel-plugin-polyfill-regenerator": "^0.5.2",
|
"babel-plugin-polyfill-regenerator": "^0.5.3",
|
||||||
"semver": "^6.3.1"
|
"semver": "^6.3.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -1802,12 +1802,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/preset-env": {
|
"node_modules/@babel/preset-env": {
|
||||||
"version": "7.22.20",
|
"version": "7.23.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz",
|
||||||
"integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==",
|
"integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/compat-data": "^7.22.20",
|
"@babel/compat-data": "^7.23.2",
|
||||||
"@babel/helper-compilation-targets": "^7.22.15",
|
"@babel/helper-compilation-targets": "^7.22.15",
|
||||||
"@babel/helper-plugin-utils": "^7.22.5",
|
"@babel/helper-plugin-utils": "^7.22.5",
|
||||||
"@babel/helper-validator-option": "^7.22.15",
|
"@babel/helper-validator-option": "^7.22.15",
|
||||||
|
@ -1833,15 +1833,15 @@
|
||||||
"@babel/plugin-syntax-top-level-await": "^7.14.5",
|
"@babel/plugin-syntax-top-level-await": "^7.14.5",
|
||||||
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
|
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
|
||||||
"@babel/plugin-transform-arrow-functions": "^7.22.5",
|
"@babel/plugin-transform-arrow-functions": "^7.22.5",
|
||||||
"@babel/plugin-transform-async-generator-functions": "^7.22.15",
|
"@babel/plugin-transform-async-generator-functions": "^7.23.2",
|
||||||
"@babel/plugin-transform-async-to-generator": "^7.22.5",
|
"@babel/plugin-transform-async-to-generator": "^7.22.5",
|
||||||
"@babel/plugin-transform-block-scoped-functions": "^7.22.5",
|
"@babel/plugin-transform-block-scoped-functions": "^7.22.5",
|
||||||
"@babel/plugin-transform-block-scoping": "^7.22.15",
|
"@babel/plugin-transform-block-scoping": "^7.23.0",
|
||||||
"@babel/plugin-transform-class-properties": "^7.22.5",
|
"@babel/plugin-transform-class-properties": "^7.22.5",
|
||||||
"@babel/plugin-transform-class-static-block": "^7.22.11",
|
"@babel/plugin-transform-class-static-block": "^7.22.11",
|
||||||
"@babel/plugin-transform-classes": "^7.22.15",
|
"@babel/plugin-transform-classes": "^7.22.15",
|
||||||
"@babel/plugin-transform-computed-properties": "^7.22.5",
|
"@babel/plugin-transform-computed-properties": "^7.22.5",
|
||||||
"@babel/plugin-transform-destructuring": "^7.22.15",
|
"@babel/plugin-transform-destructuring": "^7.23.0",
|
||||||
"@babel/plugin-transform-dotall-regex": "^7.22.5",
|
"@babel/plugin-transform-dotall-regex": "^7.22.5",
|
||||||
"@babel/plugin-transform-duplicate-keys": "^7.22.5",
|
"@babel/plugin-transform-duplicate-keys": "^7.22.5",
|
||||||
"@babel/plugin-transform-dynamic-import": "^7.22.11",
|
"@babel/plugin-transform-dynamic-import": "^7.22.11",
|
||||||
|
@ -1853,9 +1853,9 @@
|
||||||
"@babel/plugin-transform-literals": "^7.22.5",
|
"@babel/plugin-transform-literals": "^7.22.5",
|
||||||
"@babel/plugin-transform-logical-assignment-operators": "^7.22.11",
|
"@babel/plugin-transform-logical-assignment-operators": "^7.22.11",
|
||||||
"@babel/plugin-transform-member-expression-literals": "^7.22.5",
|
"@babel/plugin-transform-member-expression-literals": "^7.22.5",
|
||||||
"@babel/plugin-transform-modules-amd": "^7.22.5",
|
"@babel/plugin-transform-modules-amd": "^7.23.0",
|
||||||
"@babel/plugin-transform-modules-commonjs": "^7.22.15",
|
"@babel/plugin-transform-modules-commonjs": "^7.23.0",
|
||||||
"@babel/plugin-transform-modules-systemjs": "^7.22.11",
|
"@babel/plugin-transform-modules-systemjs": "^7.23.0",
|
||||||
"@babel/plugin-transform-modules-umd": "^7.22.5",
|
"@babel/plugin-transform-modules-umd": "^7.22.5",
|
||||||
"@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
|
"@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
|
||||||
"@babel/plugin-transform-new-target": "^7.22.5",
|
"@babel/plugin-transform-new-target": "^7.22.5",
|
||||||
|
@ -1864,7 +1864,7 @@
|
||||||
"@babel/plugin-transform-object-rest-spread": "^7.22.15",
|
"@babel/plugin-transform-object-rest-spread": "^7.22.15",
|
||||||
"@babel/plugin-transform-object-super": "^7.22.5",
|
"@babel/plugin-transform-object-super": "^7.22.5",
|
||||||
"@babel/plugin-transform-optional-catch-binding": "^7.22.11",
|
"@babel/plugin-transform-optional-catch-binding": "^7.22.11",
|
||||||
"@babel/plugin-transform-optional-chaining": "^7.22.15",
|
"@babel/plugin-transform-optional-chaining": "^7.23.0",
|
||||||
"@babel/plugin-transform-parameters": "^7.22.15",
|
"@babel/plugin-transform-parameters": "^7.22.15",
|
||||||
"@babel/plugin-transform-private-methods": "^7.22.5",
|
"@babel/plugin-transform-private-methods": "^7.22.5",
|
||||||
"@babel/plugin-transform-private-property-in-object": "^7.22.11",
|
"@babel/plugin-transform-private-property-in-object": "^7.22.11",
|
||||||
|
@ -1881,10 +1881,10 @@
|
||||||
"@babel/plugin-transform-unicode-regex": "^7.22.5",
|
"@babel/plugin-transform-unicode-regex": "^7.22.5",
|
||||||
"@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
|
"@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
|
||||||
"@babel/preset-modules": "0.1.6-no-external-plugins",
|
"@babel/preset-modules": "0.1.6-no-external-plugins",
|
||||||
"@babel/types": "^7.22.19",
|
"@babel/types": "^7.23.0",
|
||||||
"babel-plugin-polyfill-corejs2": "^0.4.5",
|
"babel-plugin-polyfill-corejs2": "^0.4.6",
|
||||||
"babel-plugin-polyfill-corejs3": "^0.8.3",
|
"babel-plugin-polyfill-corejs3": "^0.8.5",
|
||||||
"babel-plugin-polyfill-regenerator": "^0.5.2",
|
"babel-plugin-polyfill-regenerator": "^0.5.3",
|
||||||
"core-js-compat": "^3.31.0",
|
"core-js-compat": "^3.31.0",
|
||||||
"semver": "^6.3.1"
|
"semver": "^6.3.1"
|
||||||
},
|
},
|
||||||
|
@ -1927,9 +1927,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/preset-typescript": {
|
"node_modules/@babel/preset-typescript": {
|
||||||
"version": "7.23.0",
|
"version": "7.23.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz",
|
||||||
"integrity": "sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg==",
|
"integrity": "sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.22.5",
|
"@babel/helper-plugin-utils": "^7.22.5",
|
||||||
|
@ -2127,9 +2127,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/traverse": {
|
"node_modules/@babel/traverse": {
|
||||||
"version": "7.23.0",
|
"version": "7.23.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
|
||||||
"integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==",
|
"integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.22.13",
|
"@babel/code-frame": "^7.22.13",
|
||||||
|
@ -11285,13 +11285,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/babel-plugin-polyfill-corejs2": {
|
"node_modules/babel-plugin-polyfill-corejs2": {
|
||||||
"version": "0.4.5",
|
"version": "0.4.6",
|
||||||
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz",
|
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz",
|
||||||
"integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==",
|
"integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/compat-data": "^7.22.6",
|
"@babel/compat-data": "^7.22.6",
|
||||||
"@babel/helper-define-polyfill-provider": "^0.4.2",
|
"@babel/helper-define-polyfill-provider": "^0.4.3",
|
||||||
"semver": "^6.3.1"
|
"semver": "^6.3.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
@ -11299,25 +11299,25 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/babel-plugin-polyfill-corejs3": {
|
"node_modules/babel-plugin-polyfill-corejs3": {
|
||||||
"version": "0.8.3",
|
"version": "0.8.5",
|
||||||
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz",
|
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz",
|
||||||
"integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==",
|
"integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-define-polyfill-provider": "^0.4.2",
|
"@babel/helper-define-polyfill-provider": "^0.4.3",
|
||||||
"core-js-compat": "^3.31.0"
|
"core-js-compat": "^3.32.2"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
|
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/babel-plugin-polyfill-regenerator": {
|
"node_modules/babel-plugin-polyfill-regenerator": {
|
||||||
"version": "0.5.2",
|
"version": "0.5.3",
|
||||||
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz",
|
||||||
"integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==",
|
"integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-define-polyfill-provider": "^0.4.2"
|
"@babel/helper-define-polyfill-provider": "^0.4.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
|
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
|
||||||
|
|
|
@ -61,14 +61,14 @@
|
||||||
"yaml": "^2.3.2"
|
"yaml": "^2.3.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.23.0",
|
"@babel/core": "^7.23.2",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
||||||
"@babel/plugin-proposal-decorators": "^7.23.0",
|
"@babel/plugin-proposal-decorators": "^7.23.2",
|
||||||
"@babel/plugin-transform-private-methods": "^7.22.5",
|
"@babel/plugin-transform-private-methods": "^7.22.5",
|
||||||
"@babel/plugin-transform-private-property-in-object": "^7.22.11",
|
"@babel/plugin-transform-private-property-in-object": "^7.22.11",
|
||||||
"@babel/plugin-transform-runtime": "^7.22.15",
|
"@babel/plugin-transform-runtime": "^7.23.2",
|
||||||
"@babel/preset-env": "^7.22.20",
|
"@babel/preset-env": "^7.23.2",
|
||||||
"@babel/preset-typescript": "^7.23.0",
|
"@babel/preset-typescript": "^7.23.2",
|
||||||
"@hcaptcha/types": "^1.0.3",
|
"@hcaptcha/types": "^1.0.3",
|
||||||
"@jackfranklin/rollup-plugin-markdown": "^0.4.0",
|
"@jackfranklin/rollup-plugin-markdown": "^0.4.0",
|
||||||
"@jeysal/storybook-addon-css-user-preferences": "^0.2.0",
|
"@jeysal/storybook-addon-css-user-preferences": "^0.2.0",
|
||||||
|
|
|
@ -114,7 +114,7 @@ export class ApplicationCheckAccessForm extends Form<{ forUser: number }> {
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderInlineForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<ak-form-element-horizontal
|
return html`<ak-form-element-horizontal
|
||||||
label=${msg("User")}
|
label=${msg("User")}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
import { MessageLevel } from "@goauthentik/common/messages";
|
||||||
|
import {
|
||||||
|
ShowHintController,
|
||||||
|
ShowHintControllerHost,
|
||||||
|
} from "@goauthentik/components/ak-hint/ShowHintController";
|
||||||
|
import "@goauthentik/components/ak-hint/ak-hint";
|
||||||
|
import "@goauthentik/components/ak-hint/ak-hint-body";
|
||||||
|
import { AKElement } from "@goauthentik/elements/Base";
|
||||||
|
import "@goauthentik/elements/buttons/ActionButton/ak-action-button";
|
||||||
|
import { showMessage } from "@goauthentik/elements/messages/MessageContainer";
|
||||||
|
|
||||||
|
import { html, nothing } from "lit";
|
||||||
|
import { customElement, property, state } from "lit/decorators.js";
|
||||||
|
|
||||||
|
import PFPage from "@patternfly/patternfly/components/Page/page.css";
|
||||||
|
|
||||||
|
@customElement("ak-application-wizard-hint")
|
||||||
|
export class AkApplicationWizardHint extends AKElement implements ShowHintControllerHost {
|
||||||
|
static get styles() {
|
||||||
|
return [PFPage];
|
||||||
|
}
|
||||||
|
|
||||||
|
@property({ type: Boolean, attribute: "show-hint" })
|
||||||
|
forceHint: boolean = false;
|
||||||
|
|
||||||
|
@state()
|
||||||
|
showHint: boolean = true;
|
||||||
|
|
||||||
|
showHintController: ShowHintController;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.showHintController = new ShowHintController(
|
||||||
|
this,
|
||||||
|
"202310-application-wizard-announcement",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
renderHint() {
|
||||||
|
return html` <section class="pf-c-page__main-section pf-m-no-padding-mobile">
|
||||||
|
<ak-hint>
|
||||||
|
<ak-hint-body>
|
||||||
|
<p>
|
||||||
|
Authentik has a new Application Wizard that can configure both an
|
||||||
|
application and its authentication provider at the same time.
|
||||||
|
<a href="(link to docs)">Learn more about the wizard here.</a>
|
||||||
|
</p>
|
||||||
|
<ak-action-button
|
||||||
|
class="pf-m-secondary"
|
||||||
|
.apiRequest=${() => {
|
||||||
|
showMessage({
|
||||||
|
message: "This would have shown the wizard",
|
||||||
|
level: MessageLevel.success,
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>Create with Wizard</ak-action-button
|
||||||
|
></ak-hint-body
|
||||||
|
>
|
||||||
|
${this.showHintController.render()}
|
||||||
|
</ak-hint>
|
||||||
|
</section>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return this.showHint || this.forceHint ? this.renderHint() : nothing;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AkApplicationWizardHint;
|
|
@ -121,6 +121,7 @@ export class ApplicationWizardCommitApplication extends BasePanel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
decodeErrors(body: Record<string, any>) {
|
decodeErrors(body: Record<string, any>) {
|
||||||
const spaceify = (src: Record<string, string>) =>
|
const spaceify = (src: Record<string, string>) =>
|
||||||
Object.values(src).map((msg) => `\u00a0\u00a0\u00a0\u00a0${msg}`);
|
Object.values(src).map((msg) => `\u00a0\u00a0\u00a0\u00a0${msg}`);
|
||||||
|
@ -151,10 +152,14 @@ export class ApplicationWizardCommitApplication extends BasePanel {
|
||||||
this.dispatchWizardUpdate({ status: "submitted" });
|
this.dispatchWizardUpdate({ status: "submitted" });
|
||||||
this.commitState = successState;
|
this.commitState = successState;
|
||||||
})
|
})
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
.catch((resolution: any) => {
|
.catch((resolution: any) => {
|
||||||
resolution.response.json().then((body: Record<string, any>) => {
|
resolution.response.json().then(
|
||||||
this.errors = this.decodeErrors(body);
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
});
|
(body: Record<string, any>) => {
|
||||||
|
this.errors = this.decodeErrors(body);
|
||||||
|
},
|
||||||
|
);
|
||||||
this.commitState = errorState;
|
this.commitState = errorState;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,8 +68,7 @@ export class BlueprintForm extends ModelForm<BlueprintInstance, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -193,7 +192,6 @@ export class BlueprintForm extends ModelForm<BlueprintInstance, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ export class CertificateKeyPairForm extends Form<CertificateGenerationRequest> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
renderInlineForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<ak-form-element-horizontal
|
return html`<ak-form-element-horizontal
|
||||||
label=${msg("Common Name")}
|
label=${msg("Common Name")}
|
||||||
name="commonName"
|
name="commonName"
|
||||||
|
|
|
@ -40,8 +40,7 @@ export class CertificateKeyPairForm extends ModelForm<CertificateKeyPair, string
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} name="name" ?required=${true}>
|
||||||
<ak-form-element-horizontal label=${msg("Name")} name="name" ?required=${true}>
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -69,7 +68,6 @@ export class CertificateKeyPairForm extends ModelForm<CertificateKeyPair, string
|
||||||
"Optional Private Key. If this is set, you can use this keypair for encryption.",
|
"Optional Private Key. If this is set, you can use this keypair for encryption.",
|
||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,13 +46,12 @@ export class EnterpriseLicenseForm extends ModelForm<License, string> {
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html`
|
||||||
<ak-form-element-horizontal label=${msg("Install ID")}>
|
<ak-form-element-horizontal label=${msg("Install ID")}>
|
||||||
<input class="pf-c-form-control" readonly type="text" value="${ifDefined(this.installID)}" />
|
<input class="pf-c-form-control" readonly type="text" value="${ifDefined(this.installID)}" />
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal name="key" ?writeOnly=${this.instance !== undefined} label=${msg("License key")}>
|
<ak-form-element-horizontal name="key" ?writeOnly=${this.instance !== undefined} label=${msg("License key")}>
|
||||||
<textarea class="pf-c-form-control"></textarea>
|
<textarea class="pf-c-form-control"></textarea>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,8 +58,7 @@ export class RuleForm extends ModelForm<NotificationRule, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -141,7 +140,6 @@ export class RuleForm extends ModelForm<NotificationRule, string> {
|
||||||
.value=${this.instance?.severity}
|
.value=${this.instance?.severity}
|
||||||
>
|
>
|
||||||
</ak-radio>
|
</ak-radio>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,8 +68,7 @@ export class TransportForm extends ModelForm<NotificationTransport, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -169,7 +168,6 @@ export class TransportForm extends ModelForm<NotificationTransport, string> {
|
||||||
"Only send notification once, for example when sending a webhook into a chat channel.",
|
"Only send notification once, for example when sending a webhook into a chat channel.",
|
||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,8 +78,7 @@ export class FlowForm extends ModelForm<Flow, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -400,7 +399,6 @@ export class FlowForm extends ModelForm<Flow, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>`}
|
</ak-form-element-horizontal>`}
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ export class FlowImportForm extends Form<Flow> {
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderInlineForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<ak-form-element-horizontal label=${msg("Flow")} name="flow">
|
return html`<ak-form-element-horizontal label=${msg("Flow")} name="flow">
|
||||||
<input type="file" value="" class="pf-c-form-control" />
|
<input type="file" value="" class="pf-c-form-control" />
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
|
|
|
@ -2,6 +2,7 @@ import "@goauthentik/admin/flows/BoundStagesList";
|
||||||
import "@goauthentik/admin/flows/FlowDiagram";
|
import "@goauthentik/admin/flows/FlowDiagram";
|
||||||
import "@goauthentik/admin/flows/FlowForm";
|
import "@goauthentik/admin/flows/FlowForm";
|
||||||
import "@goauthentik/admin/policies/BoundPoliciesList";
|
import "@goauthentik/admin/policies/BoundPoliciesList";
|
||||||
|
import { DesignationToLabel } from "@goauthentik/app/admin/flows/utils";
|
||||||
import { AndNext, DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
import { AndNext, DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
||||||
import "@goauthentik/components/events/ObjectChangelog";
|
import "@goauthentik/components/events/ObjectChangelog";
|
||||||
import { AKElement } from "@goauthentik/elements/Base";
|
import { AKElement } from "@goauthentik/elements/Base";
|
||||||
|
@ -70,13 +71,43 @@ export class FlowViewPage extends AKElement {
|
||||||
<div
|
<div
|
||||||
class="pf-c-card pf-l-grid__item pf-m-12-col pf-m-2-col-on-xl pf-m-2-col-on-2xl"
|
class="pf-c-card pf-l-grid__item pf-m-12-col pf-m-2-col-on-xl pf-m-2-col-on-2xl"
|
||||||
>
|
>
|
||||||
<div class="pf-c-card__title">${msg("Related actions")}</div>
|
<div class="pf-c-card__title">${msg("Flow Info")}</div>
|
||||||
<div class="pf-c-card__body">
|
<div class="pf-c-card__body">
|
||||||
<dl class="pf-c-description-list">
|
<dl class="pf-c-description-list">
|
||||||
<div class="pf-c-description-list__group">
|
<div class="pf-c-description-list__group">
|
||||||
<dt class="pf-c-description-list__term">
|
<dt class="pf-c-description-list__term">
|
||||||
<span class="pf-c-description-list__text"
|
<span class="pf-c-description-list__text"
|
||||||
>${msg("Edit")}</span
|
>${msg("Name")}</span
|
||||||
|
>
|
||||||
|
</dt>
|
||||||
|
<dd class="pf-c-description-list__description">
|
||||||
|
<div class="pf-c-description-list__text">
|
||||||
|
${this.flow.name}
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt class="pf-c-description-list__term">
|
||||||
|
<span class="pf-c-description-list__text"
|
||||||
|
>${msg("Slug")}</span
|
||||||
|
>
|
||||||
|
</dt>
|
||||||
|
<dd class="pf-c-description-list__description">
|
||||||
|
<div class="pf-c-description-list__text">
|
||||||
|
<code>${this.flow.slug}</code>
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt class="pf-c-description-list__term">
|
||||||
|
<span class="pf-c-description-list__text"
|
||||||
|
>${msg("Designation")}</span
|
||||||
|
>
|
||||||
|
</dt>
|
||||||
|
<dd class="pf-c-description-list__description">
|
||||||
|
<div class="pf-c-description-list__text">
|
||||||
|
${DesignationToLabel(this.flow.designation)}
|
||||||
|
</div>
|
||||||
|
</dd>
|
||||||
|
<dt class="pf-c-description-list__term">
|
||||||
|
<span class="pf-c-description-list__text"
|
||||||
|
>${msg("Related actions")}</span
|
||||||
>
|
>
|
||||||
</dt>
|
</dt>
|
||||||
<dd class="pf-c-description-list__description">
|
<dd class="pf-c-description-list__description">
|
||||||
|
|
|
@ -92,8 +92,7 @@ export class StageBindingForm extends ModelForm<FlowStageBinding, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` ${this.renderTarget()}
|
||||||
${this.renderTarget()}
|
|
||||||
<ak-form-element-horizontal label=${msg("Stage")} ?required=${true} name="stage">
|
<ak-form-element-horizontal label=${msg("Stage")} ?required=${true} name="stage">
|
||||||
<ak-search-select
|
<ak-search-select
|
||||||
.fetchObjects=${async (query?: string): Promise<Stage[]> => {
|
.fetchObjects=${async (query?: string): Promise<Stage[]> => {
|
||||||
|
@ -224,7 +223,6 @@ export class StageBindingForm extends ModelForm<FlowStageBinding, string> {
|
||||||
.value=${this.instance?.policyEngineMode}
|
.value=${this.instance?.policyEngineMode}
|
||||||
>
|
>
|
||||||
</ak-radio>
|
</ak-radio>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,8 +58,7 @@ export class GroupForm extends ModelForm<Group, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -126,7 +125,6 @@ export class GroupForm extends ModelForm<Group, string> {
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
${msg("Set custom attributes using YAML or JSON.")}
|
${msg("Set custom attributes using YAML or JSON.")}
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ export class RelatedGroupAdd extends Form<{ groups: string[] }> {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderInlineForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<ak-form-element-horizontal label=${msg("Groups to add")} name="groups">
|
return html`<ak-form-element-horizontal label=${msg("Groups to add")} name="groups">
|
||||||
<div class="pf-c-input-group">
|
<div class="pf-c-input-group">
|
||||||
<ak-user-group-select-table
|
<ak-user-group-select-table
|
||||||
|
|
|
@ -99,8 +99,7 @@ export class OutpostForm extends ModelForm<Outpost, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -226,7 +225,6 @@ export class OutpostForm extends ModelForm<Outpost, string> {
|
||||||
>${msg("Documentation")}</a
|
>${msg("Documentation")}</a
|
||||||
>
|
>
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,8 +42,7 @@ export class ServiceConnectionDockerForm extends ModelForm<DockerServiceConnecti
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -112,7 +111,6 @@ export class ServiceConnectionDockerForm extends ModelForm<DockerServiceConnecti
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
${msg("When connecting via SSH, this keypair is used for authentication.")}
|
${msg("When connecting via SSH, this keypair is used for authentication.")}
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,8 +45,7 @@ export class ServiceConnectionKubernetesForm extends ModelForm<
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -100,7 +99,6 @@ export class ServiceConnectionKubernetesForm extends ModelForm<
|
||||||
>${msg("Verify Kubernetes API SSL Certificate")}</span
|
>${msg("Verify Kubernetes API SSL Certificate")}</span
|
||||||
>
|
>
|
||||||
</label>
|
</label>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -133,8 +133,7 @@ export class PolicyBindingForm extends ModelForm<PolicyBinding, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <div class="pf-c-card pf-m-selectable pf-m-selected">
|
||||||
<div class="pf-c-card pf-m-selectable pf-m-selected">
|
|
||||||
<div class="pf-c-card__body">${this.renderModeSelector()}</div>
|
<div class="pf-c-card__body">${this.renderModeSelector()}</div>
|
||||||
<div class="pf-c-card__footer">
|
<div class="pf-c-card__footer">
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
|
@ -318,7 +317,6 @@ export class PolicyBindingForm extends ModelForm<PolicyBinding, string> {
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
${msg("Result used when policy execution fails.")}
|
${msg("Result used when policy execution fails.")}
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,7 +115,7 @@ export class PolicyTestForm extends Form<PolicyTestRequest> {
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderInlineForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<ak-form-element-horizontal label=${msg("User")} ?required=${true} name="user">
|
return html`<ak-form-element-horizontal label=${msg("User")} ?required=${true} name="user">
|
||||||
<ak-search-select
|
<ak-search-select
|
||||||
.fetchObjects=${async (query?: string): Promise<User[]> => {
|
.fetchObjects=${async (query?: string): Promise<User[]> => {
|
||||||
|
|
|
@ -41,8 +41,7 @@ export class DummyPolicyForm extends ModelForm<DummyPolicy, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"A policy used for testing. Always returns the same result as specified below after waiting a random duration.",
|
"A policy used for testing. Always returns the same result as specified below after waiting a random duration.",
|
||||||
)}
|
)}
|
||||||
|
@ -123,7 +122,6 @@ export class DummyPolicyForm extends ModelForm<DummyPolicy, string> {
|
||||||
/>
|
/>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,8 +53,7 @@ export class EventMatcherPolicyForm extends ModelForm<EventMatcherPolicy, string
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Matches an event against a set of criteria. If any of the configured values match, the policy passes.",
|
"Matches an event against a set of criteria. If any of the configured values match, the policy passes.",
|
||||||
)}
|
)}
|
||||||
|
@ -187,7 +186,6 @@ export class EventMatcherPolicyForm extends ModelForm<EventMatcherPolicy, string
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,7 @@ export class PasswordExpiryPolicyForm extends ModelForm<PasswordExpiryPolicy, st
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Checks if the request's user's password has been changed in the last x days, and denys based on settings.",
|
"Checks if the request's user's password has been changed in the last x days, and denys based on settings.",
|
||||||
)}
|
)}
|
||||||
|
@ -110,7 +109,6 @@ export class PasswordExpiryPolicyForm extends ModelForm<PasswordExpiryPolicy, st
|
||||||
</label>
|
</label>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,8 +43,7 @@ export class ExpressionPolicyForm extends ModelForm<ExpressionPolicy, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Executes the python snippet to determine whether to allow or deny a request.",
|
"Executes the python snippet to determine whether to allow or deny a request.",
|
||||||
)}
|
)}
|
||||||
|
@ -101,7 +100,6 @@ export class ExpressionPolicyForm extends ModelForm<ExpressionPolicy, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,8 +229,7 @@ export class PasswordPolicyForm extends ModelForm<PasswordPolicy, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Checks the value from the policy request against several rules, mostly used to ensure password strength.",
|
"Checks the value from the policy request against several rules, mostly used to ensure password strength.",
|
||||||
)}
|
)}
|
||||||
|
@ -348,7 +347,6 @@ export class PasswordPolicyForm extends ModelForm<PasswordPolicy, string> {
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
${this.showStatic ? this.renderStaticRules() : html``}
|
${this.showStatic ? this.renderStaticRules() : html``}
|
||||||
${this.showHIBP ? this.renderHIBP() : html``}
|
${this.showHIBP ? this.renderHIBP() : html``}
|
||||||
${this.showZxcvbn ? this.renderZxcvbn() : html``}
|
${this.showZxcvbn ? this.renderZxcvbn() : html``}`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,7 @@ export class ReputationPolicyForm extends ModelForm<ReputationPolicy, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg("Allows/denys requests based on the users and/or the IPs reputation.")}
|
${msg("Allows/denys requests based on the users and/or the IPs reputation.")}
|
||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
|
@ -131,7 +130,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
/>
|
/>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,7 @@ export class PropertyMappingLDAPForm extends ModelForm<LDAPPropertyMapping, stri
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -81,7 +80,6 @@ export class PropertyMappingLDAPForm extends ModelForm<LDAPPropertyMapping, stri
|
||||||
${msg("See documentation for a list of all variables.")}
|
${msg("See documentation for a list of all variables.")}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,7 @@ export class PropertyMappingNotification extends ModelForm<NotificationWebhookMa
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -66,7 +65,6 @@ export class PropertyMappingNotification extends ModelForm<NotificationWebhookMa
|
||||||
${msg("See documentation for a list of all variables.")}
|
${msg("See documentation for a list of all variables.")}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,7 @@ export class PropertyMappingSAMLForm extends ModelForm<SAMLPropertyMapping, stri
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -93,7 +92,6 @@ export class PropertyMappingSAMLForm extends ModelForm<SAMLPropertyMapping, stri
|
||||||
${msg("See documentation for a list of all variables.")}
|
${msg("See documentation for a list of all variables.")}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,7 @@ export class PropertyMappingSCIMForm extends ModelForm<SCIMMapping, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -66,7 +65,6 @@ export class PropertyMappingSCIMForm extends ModelForm<SCIMMapping, string> {
|
||||||
${msg("See documentation for a list of all variables.")}
|
${msg("See documentation for a list of all variables.")}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,7 @@ export class PropertyMappingScopeForm extends ModelForm<ScopeMapping, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -93,7 +92,6 @@ export class PropertyMappingScopeForm extends ModelForm<ScopeMapping, string> {
|
||||||
${msg("See documentation for a list of all variables.")}
|
${msg("See documentation for a list of all variables.")}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,7 +118,7 @@ export class PolicyTestForm extends Form<PolicyTestRequest> {
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderInlineForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<ak-form-element-horizontal label=${msg("User")} ?required=${true} name="user">
|
return html`<ak-form-element-horizontal label=${msg("User")} ?required=${true} name="user">
|
||||||
<ak-search-select
|
<ak-search-select
|
||||||
.fetchObjects=${async (query?: string): Promise<User[]> => {
|
.fetchObjects=${async (query?: string): Promise<User[]> => {
|
||||||
|
|
|
@ -60,8 +60,7 @@ export class LDAPProviderFormPage extends ModelForm<LDAPProvider, number> {
|
||||||
// weird-- we're looking up Authentication flows, but we're storing them in the Authorization
|
// weird-- we're looking up Authentication flows, but we're storing them in the Authorization
|
||||||
// field of the target Provider.
|
// field of the target Provider.
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -266,7 +265,6 @@ export class LDAPProviderFormPage extends ModelForm<LDAPProvider, number> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,8 +167,7 @@ export class OAuth2ProviderFormPage extends ModelForm<OAuth2Provider, number> {
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
const provider = this.instance;
|
const provider = this.instance;
|
||||||
|
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-text-input
|
||||||
<ak-text-input
|
|
||||||
name="name"
|
name="name"
|
||||||
label=${msg("Name")}
|
label=${msg("Name")}
|
||||||
value=${ifDefined(provider?.name)}
|
value=${ifDefined(provider?.name)}
|
||||||
|
@ -383,7 +382,6 @@ export class OAuth2ProviderFormPage extends ModelForm<OAuth2Provider, number> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -266,8 +266,7 @@ export class ProxyProviderFormPage extends ModelForm<ProxyProvider, number> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -457,7 +456,6 @@ ${this.instance?.skipPathRegex}</textarea
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,8 +49,7 @@ export class RadiusProviderFormPage extends ModelForm<RadiusProvider, number> {
|
||||||
// weird-- we're looking up Authentication flows, but we're storing them in the Authorization
|
// weird-- we're looking up Authentication flows, but we're storing them in the Authorization
|
||||||
// field of the target Provider.
|
// field of the target Provider.
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -108,7 +107,6 @@ export class RadiusProviderFormPage extends ModelForm<RadiusProvider, number> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,8 +66,7 @@ export class SAMLProviderFormPage extends ModelForm<SAMLProvider, number> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -400,7 +399,6 @@ export class SAMLProviderFormPage extends ModelForm<SAMLProvider, number> {
|
||||||
</ak-radio>
|
</ak-radio>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ export class SAMLProviderImportForm extends Form<SAMLProvider> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
renderInlineForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
return html`<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<input type="text" class="pf-c-form-control" required />
|
<input type="text" class="pf-c-form-control" required />
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
|
|
|
@ -61,8 +61,7 @@ export class SCIMProviderFormPage extends ModelForm<SCIMProvider, number> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -226,7 +225,6 @@ export class SCIMProviderFormPage extends ModelForm<SCIMProvider, number> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,8 +63,7 @@ export class LDAPSourceForm extends ModelForm<LDAPSource, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -468,7 +467,6 @@ export class LDAPSourceForm extends ModelForm<LDAPSource, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -231,8 +231,7 @@ export class OAuthSourceForm extends ModelForm<OAuthSource, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -436,7 +435,6 @@ export class OAuthSourceForm extends ModelForm<OAuthSource, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,8 +178,7 @@ export class PlexSourceForm extends ModelForm<PlexSource, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -362,7 +361,6 @@ export class PlexSourceForm extends ModelForm<PlexSource, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,8 +83,7 @@ export class SAMLSourceForm extends ModelForm<SAMLSource, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -507,7 +506,6 @@ export class SAMLSourceForm extends ModelForm<SAMLSource, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,8 +50,7 @@ export class AuthenticatorDuoStageForm extends ModelForm<AuthenticatorDuoStage,
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Stage used to configure a duo-based authenticator. This stage should be used for configuration flows.",
|
"Stage used to configure a duo-based authenticator. This stage should be used for configuration flows.",
|
||||||
)}
|
)}
|
||||||
|
@ -189,7 +188,6 @@ export class AuthenticatorDuoStageForm extends ModelForm<AuthenticatorDuoStage,
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,10 +42,10 @@ export class DuoDeviceImportForm extends ModelForm<AuthenticatorDuoStage, string
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html` <form class="pf-c-form pf-m-horizontal">
|
return html` ${this.instance?.adminIntegrationKey !== ""
|
||||||
${this.instance?.adminIntegrationKey !== "" ? this.renderFormAutomatic() : html``}
|
? this.renderFormAutomatic()
|
||||||
${this.renderFormManual()}
|
: html``}
|
||||||
</form>`;
|
${this.renderFormManual()}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderFormManual(): TemplateResult {
|
renderFormManual(): TemplateResult {
|
||||||
|
|
|
@ -207,8 +207,9 @@ export class AuthenticatorSMSStageForm extends ModelForm<AuthenticatorSMSStage,
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span> ${msg("Stage used to configure an SMS-based TOTP authenticator.")} </span>
|
${msg("Stage used to configure an SMS-based TOTP authenticator.")}
|
||||||
|
</span>
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
|
@ -341,7 +342,6 @@ export class AuthenticatorSMSStageForm extends ModelForm<AuthenticatorSMSStage,
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,8 +48,7 @@ export class AuthenticatorStaticStageForm extends ModelForm<AuthenticatorStaticS
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Stage used to configure a static authenticator (i.e. static tokens). This stage should be used for configuration flows.",
|
"Stage used to configure a static authenticator (i.e. static tokens). This stage should be used for configuration flows.",
|
||||||
)}
|
)}
|
||||||
|
@ -156,7 +155,6 @@ export class AuthenticatorStaticStageForm extends ModelForm<AuthenticatorStaticS
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,8 +50,7 @@ export class AuthenticatorTOTPStageForm extends ModelForm<AuthenticatorTOTPStage
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Stage used to configure a TOTP authenticator (i.e. Authy/Google Authenticator).",
|
"Stage used to configure a TOTP authenticator (i.e. Authy/Google Authenticator).",
|
||||||
)}
|
)}
|
||||||
|
@ -146,7 +145,6 @@ export class AuthenticatorTOTPStageForm extends ModelForm<AuthenticatorTOTPStage
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,8 +71,7 @@ export class AuthenticatorValidateStageForm extends ModelForm<AuthenticatorValid
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Stage used to validate any authenticator. This stage should be used during authentication or authorization flows.",
|
"Stage used to validate any authenticator. This stage should be used during authentication or authorization flows.",
|
||||||
)}
|
)}
|
||||||
|
@ -254,7 +253,6 @@ export class AuthenticatorValidateStageForm extends ModelForm<AuthenticatorValid
|
||||||
`
|
`
|
||||||
: html``}
|
: html``}
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,10 +55,9 @@ export class AuthenticateWebAuthnStageForm extends ModelForm<AuthenticateWebAuth
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Stage used to configure a WebAutnn authenticator (i.e. Yubikey, FaceID/Windows Hello).",
|
"Stage used to configure a WebAuthn authenticator (i.e. Yubikey, FaceID/Windows Hello).",
|
||||||
)}
|
)}
|
||||||
</span>
|
</span>
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
|
@ -214,7 +213,6 @@ export class AuthenticateWebAuthnStageForm extends ModelForm<AuthenticateWebAuth
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,8 +40,7 @@ export class CaptchaStageForm extends ModelForm<CaptchaStage, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"This stage checks the user's current session against the Google reCaptcha (or compatible) service.",
|
"This stage checks the user's current session against the Google reCaptcha (or compatible) service.",
|
||||||
)}
|
)}
|
||||||
|
@ -133,7 +132,6 @@ export class CaptchaStageForm extends ModelForm<CaptchaStage, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,8 +49,7 @@ export class ConsentStageForm extends ModelForm<ConsentStage, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Prompt for the user's consent. The consent can either be permanent or expire in a defined amount of time.",
|
"Prompt for the user's consent. The consent can either be permanent or expire in a defined amount of time.",
|
||||||
)}
|
)}
|
||||||
|
@ -120,7 +119,6 @@ export class ConsentStageForm extends ModelForm<ConsentStage, string> {
|
||||||
<ak-utils-time-delta-help></ak-utils-time-delta-help>
|
<ak-utils-time-delta-help></ak-utils-time-delta-help>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,8 +39,7 @@ export class DenyStageForm extends ModelForm<DenyStage, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Statically deny the flow. To use this stage effectively, disable *Evaluate when flow is planned* on the respective binding.",
|
"Statically deny the flow. To use this stage effectively, disable *Evaluate when flow is planned* on the respective binding.",
|
||||||
)}
|
)}
|
||||||
|
@ -52,7 +51,6 @@ export class DenyStageForm extends ModelForm<DenyStage, string> {
|
||||||
class="pf-c-form-control"
|
class="pf-c-form-control"
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,8 +40,7 @@ export class DummyStageForm extends ModelForm<DummyStage, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Dummy stage used for testing. Shows a simple continue button and always passes.",
|
"Dummy stage used for testing. Shows a simple continue button and always passes.",
|
||||||
)}
|
)}
|
||||||
|
@ -68,7 +67,6 @@ export class DummyStageForm extends ModelForm<DummyStage, string> {
|
||||||
</span>
|
</span>
|
||||||
<span class="pf-c-switch__label">${msg("Throw error?")}</span>
|
<span class="pf-c-switch__label">${msg("Throw error?")}</span>
|
||||||
</label>
|
</label>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,8 +147,7 @@ export class EmailStageForm extends ModelForm<EmailStage, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Verify the user's email address by sending them a one-time-link. Can also be used for recovery to verify the user's authenticity.",
|
"Verify the user's email address by sending them a one-time-link. Can also be used for recovery to verify the user's authenticity.",
|
||||||
)}
|
)}
|
||||||
|
@ -256,7 +255,6 @@ export class EmailStageForm extends ModelForm<EmailStage, string> {
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>
|
||||||
${this.renderConnectionSettings()}
|
${this.renderConnectionSettings()}`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,8 +68,7 @@ export class IdentificationStageForm extends ModelForm<IdentificationStage, stri
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg("Let the user identify themselves with their username or Email address.")}
|
${msg("Let the user identify themselves with their username or Email address.")}
|
||||||
</span>
|
</span>
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
|
@ -299,7 +298,6 @@ export class IdentificationStageForm extends ModelForm<IdentificationStage, stri
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,8 +43,7 @@ export class InvitationForm extends ModelForm<Invitation, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal
|
||||||
<ak-form-element-horizontal
|
|
||||||
?slugMode=${true}
|
?slugMode=${true}
|
||||||
label=${msg("Name")}
|
label=${msg("Name")}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
|
@ -107,7 +106,6 @@ export class InvitationForm extends ModelForm<Invitation, string> {
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
${msg("When enabled, the invitation will be deleted after usage.")}
|
${msg("When enabled, the invitation will be deleted after usage.")}
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,8 +40,7 @@ export class InvitationStageForm extends ModelForm<InvitationStage, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg("This stage can be included in enrollment flows to accept invitations.")}
|
${msg("This stage can be included in enrollment flows to accept invitations.")}
|
||||||
</span>
|
</span>
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
|
@ -81,7 +80,6 @@ export class InvitationStageForm extends ModelForm<InvitationStage, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,8 +62,9 @@ export class PasswordStageForm extends ModelForm<PasswordStage, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span> ${msg("Validate the user's password against the selected backend(s).")} </span>
|
${msg("Validate the user's password against the selected backend(s).")}
|
||||||
|
</span>
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
|
@ -180,7 +181,6 @@ export class PasswordStageForm extends ModelForm<PasswordStage, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -283,8 +283,7 @@ export class PromptForm extends ModelForm<Prompt, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderEditForm(): TemplateResult {
|
renderEditForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
|
@ -454,7 +453,6 @@ export class PromptForm extends ModelForm<Prompt, string> {
|
||||||
class="pf-c-form-control"
|
class="pf-c-form-control"
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,8 +60,7 @@ export class PromptStageForm extends ModelForm<PromptStage, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Show arbitrary input fields to the user, for example during enrollment. Data is saved in the flow context under the 'prompt_data' variable.",
|
"Show arbitrary input fields to the user, for example during enrollment. Data is saved in the flow context under the 'prompt_data' variable.",
|
||||||
)}
|
)}
|
||||||
|
@ -146,7 +145,6 @@ export class PromptStageForm extends ModelForm<PromptStage, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,8 +39,7 @@ export class UserDeleteStageForm extends ModelForm<UserDeleteStage, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
"Delete the currently pending user. CAUTION, this stage does not ask for confirmation. Use a consent stage to ensure the user is aware of their actions.",
|
"Delete the currently pending user. CAUTION, this stage does not ask for confirmation. Use a consent stage to ensure the user is aware of their actions.",
|
||||||
)}
|
)}
|
||||||
|
@ -52,7 +51,6 @@ export class UserDeleteStageForm extends ModelForm<UserDeleteStage, string> {
|
||||||
class="pf-c-form-control"
|
class="pf-c-form-control"
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,8 +42,7 @@ export class UserLoginStageForm extends ModelForm<UserLoginStage, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>${msg("Log the currently pending user in.")}</span>
|
||||||
<span>${msg("Log the currently pending user in.")}</span>
|
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
|
@ -125,7 +124,6 @@ export class UserLoginStageForm extends ModelForm<UserLoginStage, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,8 +39,7 @@ export class UserLogoutStageForm extends ModelForm<UserLogoutStage, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>${msg("Remove the user from the current session.")}</span>
|
||||||
<span>${msg("Remove the user from the current session.")}</span>
|
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
|
@ -48,7 +47,6 @@ export class UserLogoutStageForm extends ModelForm<UserLogoutStage, string> {
|
||||||
class="pf-c-form-control"
|
class="pf-c-form-control"
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,8 +44,7 @@ export class UserWriteStageForm extends ModelForm<UserWriteStage, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <span>
|
||||||
<span>
|
|
||||||
${msg(
|
${msg(
|
||||||
`Write any data from the flow's context's 'prompt_data' to the currently pending user. If no user
|
`Write any data from the flow's context's 'prompt_data' to the currently pending user. If no user
|
||||||
is pending, a new user is created, and data is written to them.`,
|
is pending, a new user is created, and data is written to them.`,
|
||||||
|
@ -161,7 +160,6 @@ export class UserWriteStageForm extends ModelForm<UserWriteStage, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,8 +46,11 @@ export class TenantForm extends ModelForm<Tenant, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal
|
||||||
<ak-form-element-horizontal label=${msg("Domain")} ?required=${true} name="domain">
|
label=${msg("Domain")}
|
||||||
|
?required=${true}
|
||||||
|
name="domain"
|
||||||
|
>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${first(this.instance?.domain, window.location.host)}"
|
value="${first(this.instance?.domain, window.location.host)}"
|
||||||
|
@ -275,7 +278,6 @@ export class TenantForm extends ModelForm<Tenant, string> {
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,8 +58,7 @@ export class TokenForm extends ModelForm<Token, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal
|
||||||
<ak-form-element-horizontal
|
|
||||||
label=${msg("Identifier")}
|
label=${msg("Identifier")}
|
||||||
name="identifier"
|
name="identifier"
|
||||||
?required=${true}
|
?required=${true}
|
||||||
|
@ -151,7 +150,6 @@ export class TokenForm extends ModelForm<Token, string> {
|
||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
${this.showExpiry ? this.renderExpiry() : html``}
|
${this.showExpiry ? this.renderExpiry() : html``}`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ export class RelatedUserAdd extends Form<{ users: number[] }> {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderInlineForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`${this.group?.isSuperuser ? html`` : html``}
|
return html`${this.group?.isSuperuser ? html`` : html``}
|
||||||
<ak-form-element-horizontal label=${msg("Users to add")} name="users">
|
<ak-form-element-horizontal label=${msg("Users to add")} name="users">
|
||||||
<div class="pf-c-input-group">
|
<div class="pf-c-input-group">
|
||||||
|
|
|
@ -34,7 +34,7 @@ export class ServiceAccountForm extends Form<UserServiceAccountRequest> {
|
||||||
this.result = undefined;
|
this.result = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderInlineForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<ak-form-element-horizontal
|
return html`<ak-form-element-horizontal
|
||||||
label=${msg("Username")}
|
label=${msg("Username")}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
|
@ -118,10 +118,10 @@ export class ServiceAccountForm extends Form<UserServiceAccountRequest> {
|
||||||
</form>`;
|
</form>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderFormWrapper(): TemplateResult {
|
||||||
if (this.result) {
|
if (this.result) {
|
||||||
return this.renderResponseForm();
|
return this.renderResponseForm();
|
||||||
}
|
}
|
||||||
return super.renderForm();
|
return super.renderFormWrapper();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,8 +64,11 @@ export class UserForm extends ModelForm<User, number> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal
|
||||||
<ak-form-element-horizontal label=${msg("Username")} ?required=${true} name="username">
|
label=${msg("Username")}
|
||||||
|
?required=${true}
|
||||||
|
name="username"
|
||||||
|
>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value="${ifDefined(this.instance?.username)}"
|
value="${ifDefined(this.instance?.username)}"
|
||||||
|
@ -165,7 +168,6 @@ export class UserForm extends ModelForm<User, number> {
|
||||||
<p class="pf-c-form__helper-text">
|
<p class="pf-c-form__helper-text">
|
||||||
${msg("Set custom attributes using YAML or JSON.")}
|
${msg("Set custom attributes using YAML or JSON.")}
|
||||||
</p>
|
</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ export class UserPasswordForm extends Form<UserPasswordSetRequest> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
renderInlineForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<ak-form-element-horizontal
|
return html`<ak-form-element-horizontal
|
||||||
label=${msg("Password")}
|
label=${msg("Password")}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
|
|
|
@ -31,7 +31,7 @@ export class UserResetEmailForm extends Form<CoreUsersRecoveryEmailRetrieveReque
|
||||||
return new CoreApi(DEFAULT_CONFIG).coreUsersRecoveryEmailRetrieve(data);
|
return new CoreApi(DEFAULT_CONFIG).coreUsersRecoveryEmailRetrieve(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderInlineForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<ak-form-element-horizontal
|
return html`<ak-form-element-horizontal
|
||||||
label=${msg("Email stage")}
|
label=${msg("Email stage")}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
|
|
|
@ -22,3 +22,5 @@ export const EVENT_THEME_CHANGE = "ak-theme-change";
|
||||||
|
|
||||||
export const WS_MSG_TYPE_MESSAGE = "message";
|
export const WS_MSG_TYPE_MESSAGE = "message";
|
||||||
export const WS_MSG_TYPE_REFRESH = "refresh";
|
export const WS_MSG_TYPE_REFRESH = "refresh";
|
||||||
|
|
||||||
|
export const LOCALSTORAGE_AUTHENTIK_KEY = "authentik-local-settings";
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
import { LOCALSTORAGE_AUTHENTIK_KEY } from "@goauthentik/common/constants";
|
||||||
|
|
||||||
|
import { msg } from "@lit/localize";
|
||||||
|
import { LitElement, ReactiveController, ReactiveControllerHost, html } from "lit";
|
||||||
|
|
||||||
|
type ReactiveLitElement = LitElement & ReactiveControllerHost;
|
||||||
|
|
||||||
|
export interface ShowHintControllerHost extends ReactiveLitElement {
|
||||||
|
showHint: boolean;
|
||||||
|
|
||||||
|
showHintController: ShowHintController;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getCurrentStorageValue = (): Record<string, unknown> => {
|
||||||
|
try {
|
||||||
|
return JSON.parse(window?.localStorage.getItem(LOCALSTORAGE_AUTHENTIK_KEY) ?? "{}");
|
||||||
|
} catch (_err: unknown) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export class ShowHintController implements ReactiveController {
|
||||||
|
host: ShowHintControllerHost;
|
||||||
|
|
||||||
|
hintToken: string;
|
||||||
|
|
||||||
|
constructor(host: ShowHintControllerHost, hintToken: string) {
|
||||||
|
(this.host = host).addController(this);
|
||||||
|
this.hintToken = hintToken;
|
||||||
|
this.hideTheHint = this.hideTheHint.bind(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
hideTheHint() {
|
||||||
|
window?.localStorage.setItem(
|
||||||
|
LOCALSTORAGE_AUTHENTIK_KEY,
|
||||||
|
JSON.stringify({
|
||||||
|
...getCurrentStorageValue(),
|
||||||
|
[this.hintToken]: false,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
this.host.showHint = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
hostConnected() {
|
||||||
|
const localStores = getCurrentStorageValue();
|
||||||
|
if (!(this.hintToken in localStores)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Note that we only do this IF the field exists and is defined. `undefined` means "do the
|
||||||
|
// default thing of showing the hint."
|
||||||
|
this.host.showHint = localStores[this.hintToken] as boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html`<ak-hint-footer
|
||||||
|
><div style="text-align: right">
|
||||||
|
<input type="checkbox" @input=${this.hideTheHint} />${msg(
|
||||||
|
"Don't show this message again.",
|
||||||
|
)}
|
||||||
|
</div></ak-hint-footer
|
||||||
|
>`;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
import { AKElement } from "@goauthentik/app/elements/Base";
|
||||||
|
|
||||||
|
import { css, html } from "lit";
|
||||||
|
import { customElement } from "lit/decorators.js";
|
||||||
|
|
||||||
|
const style = css`
|
||||||
|
div {
|
||||||
|
display: inline-grid;
|
||||||
|
grid-row: 1;
|
||||||
|
grid-column: 2;
|
||||||
|
grid-auto-flow: column;
|
||||||
|
margin-left: var(--ak-hint__actions--MarginLeft);
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
::slotted(ak-hint-body) {
|
||||||
|
grid-column: 1;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
@customElement("ak-hint-actions")
|
||||||
|
export class AkHintActions extends AKElement {
|
||||||
|
static get styles() {
|
||||||
|
return [style];
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html`<div part="ak-hint-actions"><slot></slot></div>`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AkHintActions;
|
|
@ -0,0 +1,24 @@
|
||||||
|
import { AKElement } from "@goauthentik/app/elements/Base";
|
||||||
|
|
||||||
|
import { css, html } from "lit";
|
||||||
|
import { customElement } from "lit/decorators.js";
|
||||||
|
|
||||||
|
const style = css`
|
||||||
|
div {
|
||||||
|
grid-column: 1 / -1;
|
||||||
|
font-size: var(--ak-hint__body--FontSize);
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
@customElement("ak-hint-body")
|
||||||
|
export class AkHintBody extends AKElement {
|
||||||
|
static get styles() {
|
||||||
|
return [style];
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html`<div part="ak-hint-body"><slot></slot></div>`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AkHintBody;
|
|
@ -0,0 +1,26 @@
|
||||||
|
import { AKElement } from "@goauthentik/app/elements/Base";
|
||||||
|
|
||||||
|
import { css, html } from "lit";
|
||||||
|
import { customElement } from "lit/decorators.js";
|
||||||
|
|
||||||
|
const style = css`
|
||||||
|
#host {
|
||||||
|
grid-column: 1 / -1;
|
||||||
|
}
|
||||||
|
::slotted(div#host > *:not(:last-child)) {
|
||||||
|
margin-right: var(--ak-hint__footer--child--MarginRight);
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
@customElement("ak-hint-footer")
|
||||||
|
export class AkHintFooter extends AKElement {
|
||||||
|
static get styles() {
|
||||||
|
return [style];
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html`<div id="host" part="ak-hint-footer"><slot></slot></div>`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AkHintFooter;
|
|
@ -0,0 +1,23 @@
|
||||||
|
import { AKElement } from "@goauthentik/app/elements/Base";
|
||||||
|
|
||||||
|
import { css, html } from "lit";
|
||||||
|
import { customElement } from "lit/decorators.js";
|
||||||
|
|
||||||
|
const style = css`
|
||||||
|
#host {
|
||||||
|
font-size: var(--ak-hint__title--FontSize);
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
@customElement("ak-hint-title")
|
||||||
|
export class AkHintTitle extends AKElement {
|
||||||
|
static get styles() {
|
||||||
|
return [style];
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html`<div id="host" part="ak-hint-title"><slot></slot></div>`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AkHintTitle;
|
|
@ -0,0 +1,137 @@
|
||||||
|
import { MessageLevel } from "@goauthentik/common/messages";
|
||||||
|
import "@goauthentik/elements/buttons/ActionButton/ak-action-button";
|
||||||
|
import { showMessage } from "@goauthentik/elements/messages/MessageContainer";
|
||||||
|
import { Meta } from "@storybook/web-components";
|
||||||
|
|
||||||
|
import { TemplateResult, html } from "lit";
|
||||||
|
|
||||||
|
import "../ak-radio-input";
|
||||||
|
import "./ak-hint";
|
||||||
|
import AkHint from "./ak-hint";
|
||||||
|
import "./ak-hint-body";
|
||||||
|
import "./ak-hint-title";
|
||||||
|
|
||||||
|
const metadata: Meta<AkHint> = {
|
||||||
|
title: "Components / Patternfly Hint",
|
||||||
|
component: "ak-hint",
|
||||||
|
parameters: {
|
||||||
|
docs: {
|
||||||
|
description: {
|
||||||
|
component: "A stylized hint box",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default metadata;
|
||||||
|
|
||||||
|
const container = (testItem: TemplateResult) =>
|
||||||
|
html` <div style="background: #fff; padding: 2em">
|
||||||
|
<style>
|
||||||
|
li {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
color: black;
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
--ak-hint--Color: black !important;
|
||||||
|
}
|
||||||
|
ak-hint-title::part(ak-hint-title),
|
||||||
|
ak-hint-footer::part(ak-hint-footer),
|
||||||
|
slotted::(*) {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
${testItem}
|
||||||
|
|
||||||
|
<ul id="radio-message-pad" style="margin-top: 1em"></ul>
|
||||||
|
</div>`;
|
||||||
|
|
||||||
|
export const Default = () => {
|
||||||
|
return container(
|
||||||
|
html` <section class="pf-c-page__main-section pf-m-no-padding-mobile">
|
||||||
|
<ak-hint>
|
||||||
|
<ak-hint-body>
|
||||||
|
<p style="padding-bottom: 1rem;">
|
||||||
|
Authentik has a new Application Wizard that can configure both an
|
||||||
|
application and its authentication provider at the same time.
|
||||||
|
<a href="(link to docs)">Learn more about the wizard here.</a>
|
||||||
|
</p>
|
||||||
|
<ak-action-button
|
||||||
|
class="pf-m-secondary"
|
||||||
|
.apiRequest=${() => {
|
||||||
|
showMessage({
|
||||||
|
message: "This would have shown the wizard",
|
||||||
|
level: MessageLevel.success,
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>Create with Wizard</ak-action-button
|
||||||
|
></ak-hint-body
|
||||||
|
>
|
||||||
|
</ak-hint>
|
||||||
|
</section>`,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const WithTitle = () => {
|
||||||
|
return container(
|
||||||
|
html` <section class="pf-c-page__main-section pf-m-no-padding-mobile">
|
||||||
|
<ak-hint>
|
||||||
|
<ak-hint-title>New Application Wizard</ak-hint-title>
|
||||||
|
<ak-hint-body>
|
||||||
|
<p style="padding-bottom: 1rem;">
|
||||||
|
Authentik has a new Application Wizard that can configure both an
|
||||||
|
application and its authentication provider at the same time.
|
||||||
|
<a href="(link to docs)">Learn more about the wizard here.</a>
|
||||||
|
</p>
|
||||||
|
<ak-action-button
|
||||||
|
class="pf-m-secondary"
|
||||||
|
.apiRequest=${() => {
|
||||||
|
showMessage({
|
||||||
|
message: "This would have shown the wizard",
|
||||||
|
level: MessageLevel.success,
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>Create with Wizard</ak-action-button
|
||||||
|
></ak-hint-body
|
||||||
|
>
|
||||||
|
</ak-hint>
|
||||||
|
</section>`,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const WithTitleAndFooter = () => {
|
||||||
|
return container(
|
||||||
|
html` <section class="pf-c-page__main-section pf-m-no-padding-mobile">
|
||||||
|
<ak-hint>
|
||||||
|
<ak-hint-title>New Application Wizard</ak-hint-title>
|
||||||
|
<ak-hint-body>
|
||||||
|
<p style="padding-bottom: 1rem;">
|
||||||
|
Authentik has a new Application Wizard that can configure both an
|
||||||
|
application and its authentication provider at the same time.
|
||||||
|
<a href="(link to docs)">Learn more about the wizard here.</a>
|
||||||
|
</p>
|
||||||
|
<ak-action-button
|
||||||
|
class="pf-m-secondary"
|
||||||
|
.apiRequest=${() => {
|
||||||
|
showMessage({
|
||||||
|
message: "This would have shown the wizard",
|
||||||
|
level: MessageLevel.success,
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>Create with Wizard</ak-action-button
|
||||||
|
></ak-hint-body
|
||||||
|
>
|
||||||
|
<ak-hint-footer
|
||||||
|
><div style="text-align: right">
|
||||||
|
<input type="checkbox" /> Don't show this message again.
|
||||||
|
</div></ak-hint-footer
|
||||||
|
>
|
||||||
|
</ak-hint>
|
||||||
|
</section>`,
|
||||||
|
);
|
||||||
|
};
|
|
@ -0,0 +1,72 @@
|
||||||
|
import { AKElement } from "@goauthentik/app/elements/Base";
|
||||||
|
|
||||||
|
import { css, html } from "lit";
|
||||||
|
import { customElement } from "lit/decorators.js";
|
||||||
|
|
||||||
|
const styles = css`
|
||||||
|
:host {
|
||||||
|
--ak-hint--GridRowGap: var(--pf-global--spacer--md);
|
||||||
|
--ak-hint--PaddingTop: var(--pf-global--spacer--md);
|
||||||
|
--ak-hint--PaddingRight: var(--pf-global--spacer--lg);
|
||||||
|
--ak-hint--PaddingBottom: var(--pf-global--spacer--md);
|
||||||
|
--ak-hint--PaddingLeft: var(--pf-global--spacer--lg);
|
||||||
|
--ak-hint--BackgroundColor: var(--pf-global--palette--blue-50);
|
||||||
|
--ak-hint--BorderColor: var(--pf-global--palette--blue-100);
|
||||||
|
--ak-hint--BorderWidth: var(--pf-global--BorderWidth--sm);
|
||||||
|
--ak-hint--BoxShadow: var(--pf-global--BoxShadow--sm);
|
||||||
|
--ak-hint--Color: var(--pf-global--Color--100);
|
||||||
|
|
||||||
|
/* Hint Title */
|
||||||
|
--ak-hint__title--FontSize: var(--pf-global--FontSize--lg);
|
||||||
|
|
||||||
|
/* Hint Body */
|
||||||
|
--ak-hint__body--FontSize: var(--pf-global--FontSize--md);
|
||||||
|
|
||||||
|
/* Hint Footer */
|
||||||
|
--ak-hint__footer--child--MarginRight: var(--pf-global--spacer--md);
|
||||||
|
|
||||||
|
/* Hint Actions */
|
||||||
|
--ak-hint__actions--MarginLeft: var(--pf-global--spacer--2xl);
|
||||||
|
--ak-hint__actions--c-dropdown--MarginTop: calc(
|
||||||
|
var(--pf-global--spacer--form-element) * -1
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
:host([theme="dark"]) {
|
||||||
|
--ak-hint--BackgroundColor: var(--ak-dark-background-darker);
|
||||||
|
--ak-hint--BorderColor: var(--ak-dark-background-lighter);
|
||||||
|
--ak-hint--Color: var(--ak-dark-foreground);
|
||||||
|
}
|
||||||
|
|
||||||
|
div#host {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: var(--ak-hint--GridRowGap);
|
||||||
|
background-color: var(--ak-hint--BackgroundColor);
|
||||||
|
color: var(--ak-hint--Color);
|
||||||
|
border: var(--ak-hint--BorderWidth) solid var(--ak-hint--BorderColor);
|
||||||
|
box-shadow: var(--ak-hint--BoxShadow);
|
||||||
|
padding: var(--ak-hint--PaddingTop) var(--ak-hint--PaddingRight)
|
||||||
|
var(--ak-hint--PaddingBottom) var(--ak-hint--PaddingLeft);
|
||||||
|
}
|
||||||
|
|
||||||
|
::slotted(ak-hint-title),
|
||||||
|
::slotted(ak-hint-body) {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr auto;
|
||||||
|
grid-row-gap: var(--ak-hint--GridRowGap);
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
@customElement("ak-hint")
|
||||||
|
export class AkHint extends AKElement {
|
||||||
|
static get styles() {
|
||||||
|
return [styles];
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html`<div part="ak-hint" id="host"><slot></slot></div>`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AkHint;
|
|
@ -36,13 +36,13 @@ export interface KeyUnknown {
|
||||||
*
|
*
|
||||||
* The base form element for interacting with user inputs.
|
* The base form element for interacting with user inputs.
|
||||||
*
|
*
|
||||||
* All forms either[1] inherit from this class and implement the `renderInlineForm()` method to
|
* All forms either[1] inherit from this class and implement the `renderForm()` method to
|
||||||
* produce the actual form, or include the form in-line as a slotted element. Bizarrely, this form
|
* produce the actual form, or include the form in-line as a slotted element. Bizarrely, this form
|
||||||
* will not render at all if it's not actually in the viewport?[2]
|
* will not render at all if it's not actually in the viewport?[2]
|
||||||
*
|
*
|
||||||
* @element ak-form
|
* @element ak-form
|
||||||
*
|
*
|
||||||
* @slot - Where the form goes if `renderInlineForm()` returns undefined.
|
* @slot - Where the form goes if `renderForm()` returns undefined.
|
||||||
* @fires eventname - description
|
* @fires eventname - description
|
||||||
*
|
*
|
||||||
* @csspart partname - description
|
* @csspart partname - description
|
||||||
|
@ -52,7 +52,7 @@ export interface KeyUnknown {
|
||||||
*
|
*
|
||||||
* 1. Specialization: Separate this component into three different classes:
|
* 1. Specialization: Separate this component into three different classes:
|
||||||
* - The base class
|
* - The base class
|
||||||
* - The "use `renderInlineForm` class
|
* - The "use `renderForm` class
|
||||||
* - The slotted class.
|
* - The slotted class.
|
||||||
* 2. There is already specialization-by-type throughout all of our code.
|
* 2. There is already specialization-by-type throughout all of our code.
|
||||||
* Consider refactoring serializeForm() so that the conversions are on
|
* Consider refactoring serializeForm() so that the conversions are on
|
||||||
|
@ -343,21 +343,22 @@ export abstract class Form<T> extends AKElement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderFormWrapper(): TemplateResult {
|
||||||
const inline = this.renderInlineForm();
|
const inline = this.renderForm();
|
||||||
if (inline) {
|
if (inline) {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal" @submit=${this.submit}>
|
return html`<form
|
||||||
|
class="pf-c-form pf-m-horizontal"
|
||||||
|
@submit=${(ev: Event) => {
|
||||||
|
ev.preventDefault();
|
||||||
|
}}
|
||||||
|
>
|
||||||
${inline}
|
${inline}
|
||||||
</form>`;
|
</form>`;
|
||||||
}
|
}
|
||||||
return html`<slot></slot>`;
|
return html`<slot></slot>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
renderForm(): TemplateResult | undefined {
|
||||||
* Inline form render callback when inheriting this class, should be overwritten
|
|
||||||
* instead of `this.renderForm`
|
|
||||||
*/
|
|
||||||
renderInlineForm(): TemplateResult | undefined {
|
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,7 +379,7 @@ export abstract class Form<T> extends AKElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderVisible(): TemplateResult {
|
renderVisible(): TemplateResult {
|
||||||
return html` ${this.renderNonFieldErrors()} ${this.renderForm()}`;
|
return html` ${this.renderNonFieldErrors()} ${this.renderFormWrapper()}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
render(): TemplateResult {
|
render(): TemplateResult {
|
||||||
|
|
|
@ -64,15 +64,13 @@ export class MFADeviceForm extends ModelForm<Device, number> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
||||||
<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
|
<input
|
||||||
<input
|
type="text"
|
||||||
type="text"
|
value="${ifDefined(this.instance?.name)}"
|
||||||
value="${ifDefined(this.instance?.name)}"
|
class="pf-c-form-control"
|
||||||
class="pf-c-form-control"
|
required
|
||||||
required
|
/>
|
||||||
/>
|
</ak-form-element-horizontal>`;
|
||||||
</ak-form-element-horizontal>
|
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,8 +43,7 @@ export class UserTokenForm extends ModelForm<Token, string> {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html` <ak-form-element-horizontal
|
||||||
<ak-form-element-horizontal
|
|
||||||
label=${msg("Identifier")}
|
label=${msg("Identifier")}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="identifier"
|
name="identifier"
|
||||||
|
@ -62,7 +61,6 @@ export class UserTokenForm extends ModelForm<Token, string> {
|
||||||
value="${ifDefined(this.instance?.description)}"
|
value="${ifDefined(this.instance?.description)}"
|
||||||
class="pf-c-form-control"
|
class="pf-c-form-control"
|
||||||
/>
|
/>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>`;
|
||||||
</form>`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
211
web/xliff/de.xlf
211
web/xliff/de.xlf
|
@ -1404,10 +1404,6 @@
|
||||||
<source>Slug</source>
|
<source>Slug</source>
|
||||||
<target>Slug</target>
|
<target>Slug</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="seb8407fa6607c683">
|
|
||||||
<source>Internal application name, used in URLs.</source>
|
|
||||||
<target>Interner Applikationsname, wird in URLs verwendet.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sdae55084f6cb2662">
|
<trans-unit id="sdae55084f6cb2662">
|
||||||
<source>Optionally enter a group name. Applications with identical groups are shown grouped together.</source>
|
<source>Optionally enter a group name. Applications with identical groups are shown grouped together.</source>
|
||||||
<target>Geben Sie optional einen Gruppennamen ein. Anwendungen in gleicher Gruppe werden gruppiert angezeigt.</target>
|
<target>Geben Sie optional einen Gruppennamen ein. Anwendungen in gleicher Gruppe werden gruppiert angezeigt.</target>
|
||||||
|
@ -1419,9 +1415,6 @@
|
||||||
<trans-unit id="s350a616ff5e145ec">
|
<trans-unit id="s350a616ff5e145ec">
|
||||||
<source>Select a provider that this application should use.</source>
|
<source>Select a provider that this application should use.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="scd5dff009d1fd847">
|
|
||||||
<source>Backchannel providers</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s4c6534a118f52fdd">
|
<trans-unit id="s4c6534a118f52fdd">
|
||||||
<source>Select backchannel providers which augment the functionality of the main provider.</source>
|
<source>Select backchannel providers which augment the functionality of the main provider.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
@ -1712,32 +1705,9 @@
|
||||||
<source>Run sync again</source>
|
<source>Run sync again</source>
|
||||||
<target>Synchronisation erneut ausführen</target>
|
<target>Synchronisation erneut ausführen</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sf6a518045ea398f7">
|
|
||||||
<source>Application details</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s51b0102a7d31d0bf">
|
|
||||||
<source>Create application</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sdae3a34cfb38c10f">
|
|
||||||
<source>Additional UI settings</source>
|
|
||||||
<target>Weitere UI-Einstellungen</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s233d106d13420dd2">
|
|
||||||
<source>OAuth2/OIDC</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sc2cedfb22488ccb2">
|
<trans-unit id="sc2cedfb22488ccb2">
|
||||||
<source>Modern applications, APIs and Single-page applications.</source>
|
<source>Modern applications, APIs and Single-page applications.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s1d93562422eeac10">
|
|
||||||
<source>SAML</source>
|
|
||||||
<target>SAML</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s5923f8a2226a414c">
|
|
||||||
<source>XML-based SSO standard. Use this if your application only supports SAML.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s22f7a7ec3bc2c118">
|
|
||||||
<source>Legacy applications which don't natively support SSO.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sc3259eb55cf91e8c">
|
<trans-unit id="sc3259eb55cf91e8c">
|
||||||
<source>LDAP</source>
|
<source>LDAP</source>
|
||||||
<target>LDAP</target>
|
<target>LDAP</target>
|
||||||
|
@ -1745,108 +1715,9 @@
|
||||||
<trans-unit id="sffd5481034a1bd41">
|
<trans-unit id="sffd5481034a1bd41">
|
||||||
<source>Provide an LDAP interface for applications and users to authenticate against.</source>
|
<source>Provide an LDAP interface for applications and users to authenticate against.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s3cf89cb47fdde7e9">
|
|
||||||
<source>Link</source>
|
|
||||||
<target>Link</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s7ccc013f41f0a2c2">
|
|
||||||
<source>Authentication method</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sd45fc6453f617152">
|
|
||||||
<source>LDAP details</source>
|
|
||||||
<target>LDAP-Details</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="scf72690719b7a8a1">
|
|
||||||
<source>Create service account</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sbda06adbba493976">
|
|
||||||
<source>Create provider</source>
|
|
||||||
<target>Anbieter erstellen</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s12d0cb01d9f6f3b3">
|
|
||||||
<source>Application Link</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s54a13196915fd76c">
|
|
||||||
<source>URL which will be opened when a user clicks on the application.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sa34866db5e891cc6">
|
|
||||||
<source>Method details</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="saf840955862a8cd0">
|
|
||||||
<source>This configuration can be used to authenticate to authentik with other APIs other otherwise programmatically.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sb2f3a45baaa52dfd">
|
|
||||||
<source>By default, all service accounts can authenticate as this application, as long as they have a valid token of the type app-password.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="se0df976add086ec3">
|
|
||||||
<source>Web application</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s042fb9b0f9acc21f">
|
|
||||||
<source>Applications which handle the authentication server-side (for example, Python, Go, Rust, Java, PHP)</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sdf4bd51375026222">
|
|
||||||
<source>Single-page applications</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s7fa3c3306b77187d">
|
|
||||||
<source>Single-page applications which handle authentication in the browser (for example, Javascript, Angular, React, Vue)</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s3db92162f63a12b4">
|
|
||||||
<source>Native application</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s2f43274a59b0d384">
|
|
||||||
<source>Applications which redirect users to a non-web callback (for example, Android, iOS)</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sfa5f0019a09be6a7">
|
|
||||||
<source>API</source>
|
|
||||||
<target>API</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s4d53cad956dfc4e4">
|
|
||||||
<source>Authentication without user interaction, or machine-to-machine authentication.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s134083b4613bcf87">
|
|
||||||
<source>Application type</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s649e7d74f27635f8">
|
|
||||||
<source>Flow used when users access this application.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s9c1422a7e3d5c619">
|
|
||||||
<source>Proxy details</source>
|
|
||||||
<target>Proxy-Details</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s7714fdf13df8b682">
|
|
||||||
<source>External domain</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sf5a280bdcc775c49">
|
|
||||||
<source>External domain you will be accessing the domain from.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sb11e750b3de9bb72">
|
|
||||||
<source>Import SAML Metadata</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s0955bd1d1b1dc710">
|
|
||||||
<source>Import the metadata document of the applicaation you want to configure.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s0be509fcae72af45">
|
|
||||||
<source>Manual configuration</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s485b90ede24fdb19">
|
|
||||||
<source>Manually configure SAML</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="se7d73f906d358a46">
|
|
||||||
<source>SAML details</source>
|
|
||||||
<target>SAML-Details</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s982a7cdc93aa6fbe">
|
|
||||||
<source>URL that authentik will redirect back to after successful authentication.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sc9e75f44b775aa52">
|
|
||||||
<source>Import SAML metadata</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s0c9670f429e74283">
|
<trans-unit id="s0c9670f429e74283">
|
||||||
<source>New application</source>
|
<source>New application</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s8e1d308c09d1b400">
|
|
||||||
<source>Create a new application.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s6ba50bb0842ba1e2">
|
<trans-unit id="s6ba50bb0842ba1e2">
|
||||||
<source>Applications</source>
|
<source>Applications</source>
|
||||||
<target>Anwendungen</target>
|
<target>Anwendungen</target>
|
||||||
|
@ -4021,10 +3892,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<source>When multiple stages are selected, the user can choose which one they want to enroll.</source>
|
<source>When multiple stages are selected, the user can choose which one they want to enroll.</source>
|
||||||
<target>Wenn mehrere Stufen ausgewählt sind, kann der Benutzer wählen, welche er registrieren möchte.</target>
|
<target>Wenn mehrere Stufen ausgewählt sind, kann der Benutzer wählen, welche er registrieren möchte.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s9a823993c07e5d64">
|
|
||||||
<source>Stage used to configure a WebAutnn authenticator (i.e. Yubikey, FaceID/Windows Hello).</source>
|
|
||||||
<target>Phase zum Konfigurieren eines WebAutnn-Authentifikators (z. B. Yubikey, FaceID/Windows Hello).</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s34b23ebbac9f6ab9">
|
<trans-unit id="s34b23ebbac9f6ab9">
|
||||||
<source>User verification</source>
|
<source>User verification</source>
|
||||||
<target>Benutzerüberprüfung</target>
|
<target>Benutzerüberprüfung</target>
|
||||||
|
@ -5930,6 +5797,84 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s6827a456c9dfc6ee">
|
<trans-unit id="s6827a456c9dfc6ee">
|
||||||
<source>When using IDP-initiated logins, the relay state will be set to this value.</source>
|
<source>When using IDP-initiated logins, the relay state will be set to this value.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s01794c0ee3629c1b">
|
||||||
|
<source>Flow Info</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s24bce955914b1f0a">
|
||||||
|
<source>Stage used to configure a WebAuthn authenticator (i.e. Yubikey, FaceID/Windows Hello).</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s1cffe58249b04669">
|
||||||
|
<source>Internal application name used in URLs.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sb3d4f79d9d8b71e5">
|
||||||
|
<source>Submit</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se2b29e6cfe59414c">
|
||||||
|
<source>UI Settings</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sf45734291c57c606">
|
||||||
|
<source>OAuth2/OpenID</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s836148f721d8913b">
|
||||||
|
<source>Transparent Reverse Proxy</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s945a6b94361ee45b">
|
||||||
|
<source>For transparent reverse proxies with required authentication</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s60e79e1793e6bd56">
|
||||||
|
<source>Forward Auth Single Application</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sadf073913458acbd">
|
||||||
|
<source>For nginx's auth_request or traefix's forwardAuth</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s4425a1002597151e">
|
||||||
|
<source>Forward Auth Domain Level</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se770e9498b3bacf6">
|
||||||
|
<source>For nginx's auth_request or traefix's forwardAuth per root domain</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s40830ec037f34626">
|
||||||
|
<source>Configure SAML provider manually</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s154eea2a61d44655">
|
||||||
|
<source>RADIUS Configuration</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sea9fc40dfd1d18b1">
|
||||||
|
<source>Configure RADIUS provider manually</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s5a8f04c6ef292743">
|
||||||
|
<source>SCIM configuration</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sa1b0052ae095b9b3">
|
||||||
|
<source>Configure SCIM provider manually</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s15831fa50a116545">
|
||||||
|
<source>Saving Application...</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s823abdb61543a826">
|
||||||
|
<source>Authentik was unable to save this application:</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s848288f8c2265aad">
|
||||||
|
<source>Your application has been saved</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sf60f1e5b76897c93">
|
||||||
|
<source>In the Application:</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s7ce65cf482b7bff0">
|
||||||
|
<source>In the Provider:</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67d858051b34c38b">
|
||||||
|
<source>Method's display Name.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="h10ef80d434185070">
|
||||||
|
<source>Use this provider with nginx's <x id="0" equiv-text="<code>"/>auth_request<x id="1" equiv-text="</code>"/> or traefik's
|
||||||
|
<x id="2" equiv-text="<code>"/>forwardAuth<x id="3" equiv-text="</code>"/>. Each application/domain needs its own provider.
|
||||||
|
Additionally, on each domain, <x id="4" equiv-text="<code>"/>/outpost.goauthentik.io<x id="5" equiv-text="</code>"/> must be
|
||||||
|
routed to the outpost (when using a managed outpost, this is done for you).</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s71c5d51d5a357dbd">
|
||||||
|
<source>Don't show this message again.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
242
web/xliff/en.xlf
242
web/xliff/en.xlf
|
@ -1475,10 +1475,6 @@
|
||||||
<source>Slug</source>
|
<source>Slug</source>
|
||||||
<target>Slug</target>
|
<target>Slug</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="seb8407fa6607c683">
|
|
||||||
<source>Internal application name, used in URLs.</source>
|
|
||||||
<target>Internal application name, used in URLs.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sdae55084f6cb2662">
|
<trans-unit id="sdae55084f6cb2662">
|
||||||
<source>Optionally enter a group name. Applications with identical groups are shown grouped together.</source>
|
<source>Optionally enter a group name. Applications with identical groups are shown grouped together.</source>
|
||||||
<target>Optionally enter a group name. Applications with identical groups are shown grouped together.</target>
|
<target>Optionally enter a group name. Applications with identical groups are shown grouped together.</target>
|
||||||
|
@ -1491,10 +1487,6 @@
|
||||||
<source>Select a provider that this application should use.</source>
|
<source>Select a provider that this application should use.</source>
|
||||||
<target>Select a provider that this application should use.</target>
|
<target>Select a provider that this application should use.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="scd5dff009d1fd847">
|
|
||||||
<source>Backchannel providers</source>
|
|
||||||
<target>Backchannel providers</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s4c6534a118f52fdd">
|
<trans-unit id="s4c6534a118f52fdd">
|
||||||
<source>Select backchannel providers which augment the functionality of the main provider.</source>
|
<source>Select backchannel providers which augment the functionality of the main provider.</source>
|
||||||
<target>Select backchannel providers which augment the functionality of the main provider.</target>
|
<target>Select backchannel providers which augment the functionality of the main provider.</target>
|
||||||
|
@ -1807,38 +1799,10 @@
|
||||||
<source>Run sync again</source>
|
<source>Run sync again</source>
|
||||||
<target>Run sync again</target>
|
<target>Run sync again</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sf6a518045ea398f7">
|
|
||||||
<source>Application details</source>
|
|
||||||
<target>Application details</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s51b0102a7d31d0bf">
|
|
||||||
<source>Create application</source>
|
|
||||||
<target>Create application</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sdae3a34cfb38c10f">
|
|
||||||
<source>Additional UI settings</source>
|
|
||||||
<target>Additional UI settings</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s233d106d13420dd2">
|
|
||||||
<source>OAuth2/OIDC</source>
|
|
||||||
<target>OAuth2/OIDC</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sc2cedfb22488ccb2">
|
<trans-unit id="sc2cedfb22488ccb2">
|
||||||
<source>Modern applications, APIs and Single-page applications.</source>
|
<source>Modern applications, APIs and Single-page applications.</source>
|
||||||
<target>Modern applications, APIs and Single-page applications.</target>
|
<target>Modern applications, APIs and Single-page applications.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s1d93562422eeac10">
|
|
||||||
<source>SAML</source>
|
|
||||||
<target>SAML</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s5923f8a2226a414c">
|
|
||||||
<source>XML-based SSO standard. Use this if your application only supports SAML.</source>
|
|
||||||
<target>XML-based SSO standard. Use this if your application only supports SAML.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s22f7a7ec3bc2c118">
|
|
||||||
<source>Legacy applications which don't natively support SSO.</source>
|
|
||||||
<target>Legacy applications which don't natively support SSO.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sc3259eb55cf91e8c">
|
<trans-unit id="sc3259eb55cf91e8c">
|
||||||
<source>LDAP</source>
|
<source>LDAP</source>
|
||||||
<target>LDAP</target>
|
<target>LDAP</target>
|
||||||
|
@ -1847,134 +1811,10 @@
|
||||||
<source>Provide an LDAP interface for applications and users to authenticate against.</source>
|
<source>Provide an LDAP interface for applications and users to authenticate against.</source>
|
||||||
<target>Provide an LDAP interface for applications and users to authenticate against.</target>
|
<target>Provide an LDAP interface for applications and users to authenticate against.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s3cf89cb47fdde7e9">
|
|
||||||
<source>Link</source>
|
|
||||||
<target>Link</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s7ccc013f41f0a2c2">
|
|
||||||
<source>Authentication method</source>
|
|
||||||
<target>Authentication method</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sd45fc6453f617152">
|
|
||||||
<source>LDAP details</source>
|
|
||||||
<target>LDAP details</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="scf72690719b7a8a1">
|
|
||||||
<source>Create service account</source>
|
|
||||||
<target>Create service account</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sbda06adbba493976">
|
|
||||||
<source>Create provider</source>
|
|
||||||
<target>Create provider</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s12d0cb01d9f6f3b3">
|
|
||||||
<source>Application Link</source>
|
|
||||||
<target>Application Link</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s54a13196915fd76c">
|
|
||||||
<source>URL which will be opened when a user clicks on the application.</source>
|
|
||||||
<target>URL which will be opened when a user clicks on the application.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sa34866db5e891cc6">
|
|
||||||
<source>Method details</source>
|
|
||||||
<target>Method details</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="saf840955862a8cd0">
|
|
||||||
<source>This configuration can be used to authenticate to authentik with other APIs other otherwise programmatically.</source>
|
|
||||||
<target>This configuration can be used to authenticate to authentik with other APIs other otherwise programmatically.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sb2f3a45baaa52dfd">
|
|
||||||
<source>By default, all service accounts can authenticate as this application, as long as they have a valid token of the type app-password.</source>
|
|
||||||
<target>By default, all service accounts can authenticate as this application, as long as they have a valid token of the type app-password.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="se0df976add086ec3">
|
|
||||||
<source>Web application</source>
|
|
||||||
<target>Web application</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s042fb9b0f9acc21f">
|
|
||||||
<source>Applications which handle the authentication server-side (for example, Python, Go, Rust, Java, PHP)</source>
|
|
||||||
<target>Applications which handle the authentication server-side (for example, Python, Go, Rust, Java, PHP)</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sdf4bd51375026222">
|
|
||||||
<source>Single-page applications</source>
|
|
||||||
<target>Single-page applications</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s7fa3c3306b77187d">
|
|
||||||
<source>Single-page applications which handle authentication in the browser (for example, Javascript, Angular, React, Vue)</source>
|
|
||||||
<target>Single-page applications which handle authentication in the browser (for example, Javascript, Angular, React, Vue)</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s3db92162f63a12b4">
|
|
||||||
<source>Native application</source>
|
|
||||||
<target>Native application</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s2f43274a59b0d384">
|
|
||||||
<source>Applications which redirect users to a non-web callback (for example, Android, iOS)</source>
|
|
||||||
<target>Applications which redirect users to a non-web callback (for example, Android, iOS)</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sfa5f0019a09be6a7">
|
|
||||||
<source>API</source>
|
|
||||||
<target>API</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s4d53cad956dfc4e4">
|
|
||||||
<source>Authentication without user interaction, or machine-to-machine authentication.</source>
|
|
||||||
<target>Authentication without user interaction, or machine-to-machine authentication.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s134083b4613bcf87">
|
|
||||||
<source>Application type</source>
|
|
||||||
<target>Application type</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s649e7d74f27635f8">
|
|
||||||
<source>Flow used when users access this application.</source>
|
|
||||||
<target>Flow used when users access this application.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s9c1422a7e3d5c619">
|
|
||||||
<source>Proxy details</source>
|
|
||||||
<target>Proxy details</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s7714fdf13df8b682">
|
|
||||||
<source>External domain</source>
|
|
||||||
<target>External domain</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sf5a280bdcc775c49">
|
|
||||||
<source>External domain you will be accessing the domain from.</source>
|
|
||||||
<target>External domain you will be accessing the domain from.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sb11e750b3de9bb72">
|
|
||||||
<source>Import SAML Metadata</source>
|
|
||||||
<target>Import SAML Metadata</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s0955bd1d1b1dc710">
|
|
||||||
<source>Import the metadata document of the applicaation you want to configure.</source>
|
|
||||||
<target>Import the metadata document of the applicaation you want to configure.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s0be509fcae72af45">
|
|
||||||
<source>Manual configuration</source>
|
|
||||||
<target>Manual configuration</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s485b90ede24fdb19">
|
|
||||||
<source>Manually configure SAML</source>
|
|
||||||
<target>Manually configure SAML</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="se7d73f906d358a46">
|
|
||||||
<source>SAML details</source>
|
|
||||||
<target>SAML details</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s982a7cdc93aa6fbe">
|
|
||||||
<source>URL that authentik will redirect back to after successful authentication.</source>
|
|
||||||
<target>URL that authentik will redirect back to after successful authentication.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sc9e75f44b775aa52">
|
|
||||||
<source>Import SAML metadata</source>
|
|
||||||
<target>Import SAML metadata</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s0c9670f429e74283">
|
<trans-unit id="s0c9670f429e74283">
|
||||||
<source>New application</source>
|
<source>New application</source>
|
||||||
<target>New application</target>
|
<target>New application</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s8e1d308c09d1b400">
|
|
||||||
<source>Create a new application.</source>
|
|
||||||
<target>Create a new application.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s6ba50bb0842ba1e2">
|
<trans-unit id="s6ba50bb0842ba1e2">
|
||||||
<source>Applications</source>
|
<source>Applications</source>
|
||||||
<target>Applications</target>
|
<target>Applications</target>
|
||||||
|
@ -4245,10 +4085,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<source>When multiple stages are selected, the user can choose which one they want to enroll.</source>
|
<source>When multiple stages are selected, the user can choose which one they want to enroll.</source>
|
||||||
<target>When multiple stages are selected, the user can choose which one they want to enroll.</target>
|
<target>When multiple stages are selected, the user can choose which one they want to enroll.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s9a823993c07e5d64">
|
|
||||||
<source>Stage used to configure a WebAutnn authenticator (i.e. Yubikey, FaceID/Windows Hello).</source>
|
|
||||||
<target>Stage used to configure a WebAutnn authenticator (i.e. Yubikey, FaceID/Windows Hello).</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s34b23ebbac9f6ab9">
|
<trans-unit id="s34b23ebbac9f6ab9">
|
||||||
<source>User verification</source>
|
<source>User verification</source>
|
||||||
<target>User verification</target>
|
<target>User verification</target>
|
||||||
|
@ -6244,6 +6080,84 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s6827a456c9dfc6ee">
|
<trans-unit id="s6827a456c9dfc6ee">
|
||||||
<source>When using IDP-initiated logins, the relay state will be set to this value.</source>
|
<source>When using IDP-initiated logins, the relay state will be set to this value.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s01794c0ee3629c1b">
|
||||||
|
<source>Flow Info</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s24bce955914b1f0a">
|
||||||
|
<source>Stage used to configure a WebAuthn authenticator (i.e. Yubikey, FaceID/Windows Hello).</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s1cffe58249b04669">
|
||||||
|
<source>Internal application name used in URLs.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sb3d4f79d9d8b71e5">
|
||||||
|
<source>Submit</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se2b29e6cfe59414c">
|
||||||
|
<source>UI Settings</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sf45734291c57c606">
|
||||||
|
<source>OAuth2/OpenID</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s836148f721d8913b">
|
||||||
|
<source>Transparent Reverse Proxy</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s945a6b94361ee45b">
|
||||||
|
<source>For transparent reverse proxies with required authentication</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s60e79e1793e6bd56">
|
||||||
|
<source>Forward Auth Single Application</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sadf073913458acbd">
|
||||||
|
<source>For nginx's auth_request or traefix's forwardAuth</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s4425a1002597151e">
|
||||||
|
<source>Forward Auth Domain Level</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se770e9498b3bacf6">
|
||||||
|
<source>For nginx's auth_request or traefix's forwardAuth per root domain</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s40830ec037f34626">
|
||||||
|
<source>Configure SAML provider manually</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s154eea2a61d44655">
|
||||||
|
<source>RADIUS Configuration</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sea9fc40dfd1d18b1">
|
||||||
|
<source>Configure RADIUS provider manually</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s5a8f04c6ef292743">
|
||||||
|
<source>SCIM configuration</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sa1b0052ae095b9b3">
|
||||||
|
<source>Configure SCIM provider manually</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s15831fa50a116545">
|
||||||
|
<source>Saving Application...</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s823abdb61543a826">
|
||||||
|
<source>Authentik was unable to save this application:</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s848288f8c2265aad">
|
||||||
|
<source>Your application has been saved</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sf60f1e5b76897c93">
|
||||||
|
<source>In the Application:</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s7ce65cf482b7bff0">
|
||||||
|
<source>In the Provider:</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67d858051b34c38b">
|
||||||
|
<source>Method's display Name.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="h10ef80d434185070">
|
||||||
|
<source>Use this provider with nginx's <x id="0" equiv-text="<code>"/>auth_request<x id="1" equiv-text="</code>"/> or traefik's
|
||||||
|
<x id="2" equiv-text="<code>"/>forwardAuth<x id="3" equiv-text="</code>"/>. Each application/domain needs its own provider.
|
||||||
|
Additionally, on each domain, <x id="4" equiv-text="<code>"/>/outpost.goauthentik.io<x id="5" equiv-text="</code>"/> must be
|
||||||
|
routed to the outpost (when using a managed outpost, this is done for you).</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s71c5d51d5a357dbd">
|
||||||
|
<source>Don't show this message again.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
204
web/xliff/es.xlf
204
web/xliff/es.xlf
|
@ -1378,10 +1378,6 @@
|
||||||
<source>Slug</source>
|
<source>Slug</source>
|
||||||
<target>babosa</target>
|
<target>babosa</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="seb8407fa6607c683">
|
|
||||||
<source>Internal application name, used in URLs.</source>
|
|
||||||
<target>Nombre de la aplicación interna, utilizado en las URL.</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sdae55084f6cb2662">
|
<trans-unit id="sdae55084f6cb2662">
|
||||||
<source>Optionally enter a group name. Applications with identical groups are shown grouped together.</source>
|
<source>Optionally enter a group name. Applications with identical groups are shown grouped together.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
@ -1392,9 +1388,6 @@
|
||||||
<trans-unit id="s350a616ff5e145ec">
|
<trans-unit id="s350a616ff5e145ec">
|
||||||
<source>Select a provider that this application should use.</source>
|
<source>Select a provider that this application should use.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="scd5dff009d1fd847">
|
|
||||||
<source>Backchannel providers</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s4c6534a118f52fdd">
|
<trans-unit id="s4c6534a118f52fdd">
|
||||||
<source>Select backchannel providers which augment the functionality of the main provider.</source>
|
<source>Select backchannel providers which augment the functionality of the main provider.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
@ -1684,30 +1677,9 @@
|
||||||
<source>Run sync again</source>
|
<source>Run sync again</source>
|
||||||
<target>Vuelve a ejecutar la sincronización</target>
|
<target>Vuelve a ejecutar la sincronización</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sf6a518045ea398f7">
|
|
||||||
<source>Application details</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s51b0102a7d31d0bf">
|
|
||||||
<source>Create application</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sdae3a34cfb38c10f">
|
|
||||||
<source>Additional UI settings</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s233d106d13420dd2">
|
|
||||||
<source>OAuth2/OIDC</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sc2cedfb22488ccb2">
|
<trans-unit id="sc2cedfb22488ccb2">
|
||||||
<source>Modern applications, APIs and Single-page applications.</source>
|
<source>Modern applications, APIs and Single-page applications.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s1d93562422eeac10">
|
|
||||||
<source>SAML</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s5923f8a2226a414c">
|
|
||||||
<source>XML-based SSO standard. Use this if your application only supports SAML.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s22f7a7ec3bc2c118">
|
|
||||||
<source>Legacy applications which don't natively support SSO.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sc3259eb55cf91e8c">
|
<trans-unit id="sc3259eb55cf91e8c">
|
||||||
<source>LDAP</source>
|
<source>LDAP</source>
|
||||||
<target>LDAP</target>
|
<target>LDAP</target>
|
||||||
|
@ -1715,103 +1687,9 @@
|
||||||
<trans-unit id="sffd5481034a1bd41">
|
<trans-unit id="sffd5481034a1bd41">
|
||||||
<source>Provide an LDAP interface for applications and users to authenticate against.</source>
|
<source>Provide an LDAP interface for applications and users to authenticate against.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s3cf89cb47fdde7e9">
|
|
||||||
<source>Link</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s7ccc013f41f0a2c2">
|
|
||||||
<source>Authentication method</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sd45fc6453f617152">
|
|
||||||
<source>LDAP details</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="scf72690719b7a8a1">
|
|
||||||
<source>Create service account</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sbda06adbba493976">
|
|
||||||
<source>Create provider</source>
|
|
||||||
<target>Crear proveedor</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s12d0cb01d9f6f3b3">
|
|
||||||
<source>Application Link</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s54a13196915fd76c">
|
|
||||||
<source>URL which will be opened when a user clicks on the application.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sa34866db5e891cc6">
|
|
||||||
<source>Method details</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="saf840955862a8cd0">
|
|
||||||
<source>This configuration can be used to authenticate to authentik with other APIs other otherwise programmatically.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sb2f3a45baaa52dfd">
|
|
||||||
<source>By default, all service accounts can authenticate as this application, as long as they have a valid token of the type app-password.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="se0df976add086ec3">
|
|
||||||
<source>Web application</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s042fb9b0f9acc21f">
|
|
||||||
<source>Applications which handle the authentication server-side (for example, Python, Go, Rust, Java, PHP)</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sdf4bd51375026222">
|
|
||||||
<source>Single-page applications</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s7fa3c3306b77187d">
|
|
||||||
<source>Single-page applications which handle authentication in the browser (for example, Javascript, Angular, React, Vue)</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s3db92162f63a12b4">
|
|
||||||
<source>Native application</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s2f43274a59b0d384">
|
|
||||||
<source>Applications which redirect users to a non-web callback (for example, Android, iOS)</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sfa5f0019a09be6a7">
|
|
||||||
<source>API</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s4d53cad956dfc4e4">
|
|
||||||
<source>Authentication without user interaction, or machine-to-machine authentication.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s134083b4613bcf87">
|
|
||||||
<source>Application type</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s649e7d74f27635f8">
|
|
||||||
<source>Flow used when users access this application.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s9c1422a7e3d5c619">
|
|
||||||
<source>Proxy details</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s7714fdf13df8b682">
|
|
||||||
<source>External domain</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sf5a280bdcc775c49">
|
|
||||||
<source>External domain you will be accessing the domain from.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sb11e750b3de9bb72">
|
|
||||||
<source>Import SAML Metadata</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s0955bd1d1b1dc710">
|
|
||||||
<source>Import the metadata document of the applicaation you want to configure.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s0be509fcae72af45">
|
|
||||||
<source>Manual configuration</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s485b90ede24fdb19">
|
|
||||||
<source>Manually configure SAML</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="se7d73f906d358a46">
|
|
||||||
<source>SAML details</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s982a7cdc93aa6fbe">
|
|
||||||
<source>URL that authentik will redirect back to after successful authentication.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="sc9e75f44b775aa52">
|
|
||||||
<source>Import SAML metadata</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s0c9670f429e74283">
|
<trans-unit id="s0c9670f429e74283">
|
||||||
<source>New application</source>
|
<source>New application</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s8e1d308c09d1b400">
|
|
||||||
<source>Create a new application.</source>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s6ba50bb0842ba1e2">
|
<trans-unit id="s6ba50bb0842ba1e2">
|
||||||
<source>Applications</source>
|
<source>Applications</source>
|
||||||
<target>Aplicaciones</target>
|
<target>Aplicaciones</target>
|
||||||
|
@ -3948,10 +3826,6 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
<trans-unit id="s7e5af9c6ba6f5cc6">
|
<trans-unit id="s7e5af9c6ba6f5cc6">
|
||||||
<source>When multiple stages are selected, the user can choose which one they want to enroll.</source>
|
<source>When multiple stages are selected, the user can choose which one they want to enroll.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s9a823993c07e5d64">
|
|
||||||
<source>Stage used to configure a WebAutnn authenticator (i.e. Yubikey, FaceID/Windows Hello).</source>
|
|
||||||
<target>Etapa utilizada para configurar un autenticador WebAutnn (es decir, Yubikey, FaceID/Windows Hello).</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s34b23ebbac9f6ab9">
|
<trans-unit id="s34b23ebbac9f6ab9">
|
||||||
<source>User verification</source>
|
<source>User verification</source>
|
||||||
<target>Verificación del usuario</target>
|
<target>Verificación del usuario</target>
|
||||||
|
@ -5838,6 +5712,84 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s6827a456c9dfc6ee">
|
<trans-unit id="s6827a456c9dfc6ee">
|
||||||
<source>When using IDP-initiated logins, the relay state will be set to this value.</source>
|
<source>When using IDP-initiated logins, the relay state will be set to this value.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s01794c0ee3629c1b">
|
||||||
|
<source>Flow Info</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s24bce955914b1f0a">
|
||||||
|
<source>Stage used to configure a WebAuthn authenticator (i.e. Yubikey, FaceID/Windows Hello).</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s1cffe58249b04669">
|
||||||
|
<source>Internal application name used in URLs.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sb3d4f79d9d8b71e5">
|
||||||
|
<source>Submit</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se2b29e6cfe59414c">
|
||||||
|
<source>UI Settings</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sf45734291c57c606">
|
||||||
|
<source>OAuth2/OpenID</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s836148f721d8913b">
|
||||||
|
<source>Transparent Reverse Proxy</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s945a6b94361ee45b">
|
||||||
|
<source>For transparent reverse proxies with required authentication</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s60e79e1793e6bd56">
|
||||||
|
<source>Forward Auth Single Application</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sadf073913458acbd">
|
||||||
|
<source>For nginx's auth_request or traefix's forwardAuth</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s4425a1002597151e">
|
||||||
|
<source>Forward Auth Domain Level</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se770e9498b3bacf6">
|
||||||
|
<source>For nginx's auth_request or traefix's forwardAuth per root domain</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s40830ec037f34626">
|
||||||
|
<source>Configure SAML provider manually</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s154eea2a61d44655">
|
||||||
|
<source>RADIUS Configuration</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sea9fc40dfd1d18b1">
|
||||||
|
<source>Configure RADIUS provider manually</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s5a8f04c6ef292743">
|
||||||
|
<source>SCIM configuration</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sa1b0052ae095b9b3">
|
||||||
|
<source>Configure SCIM provider manually</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s15831fa50a116545">
|
||||||
|
<source>Saving Application...</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s823abdb61543a826">
|
||||||
|
<source>Authentik was unable to save this application:</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s848288f8c2265aad">
|
||||||
|
<source>Your application has been saved</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sf60f1e5b76897c93">
|
||||||
|
<source>In the Application:</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s7ce65cf482b7bff0">
|
||||||
|
<source>In the Provider:</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67d858051b34c38b">
|
||||||
|
<source>Method's display Name.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="h10ef80d434185070">
|
||||||
|
<source>Use this provider with nginx's <x id="0" equiv-text="<code>"/>auth_request<x id="1" equiv-text="</code>"/> or traefik's
|
||||||
|
<x id="2" equiv-text="<code>"/>forwardAuth<x id="3" equiv-text="</code>"/>. Each application/domain needs its own provider.
|
||||||
|
Additionally, on each domain, <x id="4" equiv-text="<code>"/>/outpost.goauthentik.io<x id="5" equiv-text="</code>"/> must be
|
||||||
|
routed to the outpost (when using a managed outpost, this is done for you).</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s71c5d51d5a357dbd">
|
||||||
|
<source>Don't show this message again.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue