Compare commits
50 Commits
version/20
...
version-20
Author | SHA1 | Date | |
---|---|---|---|
fd7a7a6e64 | |||
15c34c6f1f | |||
0ab8f4eed7 | |||
070714abe4 | |||
810c04bacf | |||
b624bf1cb7 | |||
f56a4b00ce | |||
6ec0411930 | |||
fb59969bce | |||
eec9c46533 | |||
a3afd47850 | |||
8ffae4505f | |||
0cc83c23c4 | |||
514c48a986 | |||
fdb8fb4b4c | |||
d8a68407f9 | |||
417156d659 | |||
9d58407e25 | |||
f4441c9fcf | |||
0e9762072a | |||
0cfffa28ad | |||
1ad4c8fc29 | |||
dd2facdc57 | |||
549dfa4c3a | |||
7f8ae24e8d | |||
d05aeb91f2 | |||
ab25216c1f | |||
fb5eb7b868 | |||
bda218f7fc | |||
198c940a80 | |||
c900411d5a | |||
1adc6948b4 | |||
e87236b285 | |||
846b63a17b | |||
48fb3c98ff | |||
b488a6fec9 | |||
f014bd5f30 | |||
03dd079e8c | |||
1281e842d1 | |||
f7601d9571 | |||
4d9c9160e7 | |||
ad1f913e54 | |||
3da0233c40 | |||
ff788edd9b | |||
aea0958f3f | |||
1f9e9f9ca0 | |||
98ffec87c0 | |||
b52d5dccac | |||
e96a4fa181 | |||
c53b0830c4 |
@ -1,5 +1,5 @@
|
|||||||
[bumpversion]
|
[bumpversion]
|
||||||
current_version = 2022.8.1
|
current_version = 2022.8.2
|
||||||
tag = True
|
tag = True
|
||||||
commit = True
|
commit = True
|
||||||
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)
|
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)
|
||||||
|
4
.github/workflows/ci-main.yml
vendored
4
.github/workflows/ci-main.yml
vendored
@ -139,7 +139,7 @@ jobs:
|
|||||||
working-directory: web
|
working-directory: web
|
||||||
run: |
|
run: |
|
||||||
npm ci
|
npm ci
|
||||||
make -C .. gen-client-web
|
make -C .. gen-client-ts
|
||||||
npm run build
|
npm run build
|
||||||
- name: run e2e
|
- name: run e2e
|
||||||
run: |
|
run: |
|
||||||
@ -173,7 +173,7 @@ jobs:
|
|||||||
working-directory: web/
|
working-directory: web/
|
||||||
run: |
|
run: |
|
||||||
npm ci
|
npm ci
|
||||||
make -C .. gen-client-web
|
make -C .. gen-client-ts
|
||||||
npm run build
|
npm run build
|
||||||
- name: run e2e
|
- name: run e2e
|
||||||
run: |
|
run: |
|
||||||
|
8
.github/workflows/ci-web.yml
vendored
8
.github/workflows/ci-web.yml
vendored
@ -23,7 +23,7 @@ jobs:
|
|||||||
- working-directory: web/
|
- working-directory: web/
|
||||||
run: npm ci
|
run: npm ci
|
||||||
- name: Generate API
|
- name: Generate API
|
||||||
run: make gen-client-web
|
run: make gen-client-ts
|
||||||
- name: Eslint
|
- name: Eslint
|
||||||
working-directory: web/
|
working-directory: web/
|
||||||
run: npm run lint
|
run: npm run lint
|
||||||
@ -39,7 +39,7 @@ jobs:
|
|||||||
- working-directory: web/
|
- working-directory: web/
|
||||||
run: npm ci
|
run: npm ci
|
||||||
- name: Generate API
|
- name: Generate API
|
||||||
run: make gen-client-web
|
run: make gen-client-ts
|
||||||
- name: prettier
|
- name: prettier
|
||||||
working-directory: web/
|
working-directory: web/
|
||||||
run: npm run prettier-check
|
run: npm run prettier-check
|
||||||
@ -60,7 +60,7 @@ jobs:
|
|||||||
cd node_modules/@goauthentik
|
cd node_modules/@goauthentik
|
||||||
ln -s ../../src/ web
|
ln -s ../../src/ web
|
||||||
- name: Generate API
|
- name: Generate API
|
||||||
run: make gen-client-web
|
run: make gen-client-ts
|
||||||
- name: lit-analyse
|
- name: lit-analyse
|
||||||
working-directory: web/
|
working-directory: web/
|
||||||
run: npm run lit-analyse
|
run: npm run lit-analyse
|
||||||
@ -86,7 +86,7 @@ jobs:
|
|||||||
- working-directory: web/
|
- working-directory: web/
|
||||||
run: npm ci
|
run: npm ci
|
||||||
- name: Generate API
|
- name: Generate API
|
||||||
run: make gen-client-web
|
run: make gen-client-ts
|
||||||
- name: build
|
- name: build
|
||||||
working-directory: web/
|
working-directory: web/
|
||||||
run: npm run build
|
run: npm run build
|
||||||
|
3
.github/workflows/release-publish.yml
vendored
3
.github/workflows/release-publish.yml
vendored
@ -138,7 +138,7 @@ jobs:
|
|||||||
docker-compose pull -q
|
docker-compose pull -q
|
||||||
docker-compose up --no-start
|
docker-compose up --no-start
|
||||||
docker-compose start postgresql redis
|
docker-compose start postgresql redis
|
||||||
docker-compose run -u root server test
|
docker-compose run -u root server test-all
|
||||||
sentry-release:
|
sentry-release:
|
||||||
needs:
|
needs:
|
||||||
- build-server
|
- build-server
|
||||||
@ -157,6 +157,7 @@ jobs:
|
|||||||
docker cp ${container}:web/ .
|
docker cp ${container}:web/ .
|
||||||
- name: Create a Sentry.io release
|
- name: Create a Sentry.io release
|
||||||
uses: getsentry/action-release@v1
|
uses: getsentry/action-release@v1
|
||||||
|
continue-on-error: true
|
||||||
if: ${{ github.event_name == 'release' }}
|
if: ${{ github.event_name == 'release' }}
|
||||||
env:
|
env:
|
||||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||||
|
2
.github/workflows/web-api-publish.yml
vendored
2
.github/workflows/web-api-publish.yml
vendored
@ -16,7 +16,7 @@ jobs:
|
|||||||
node-version: '16'
|
node-version: '16'
|
||||||
registry-url: 'https://registry.npmjs.org'
|
registry-url: 'https://registry.npmjs.org'
|
||||||
- name: Generate API Client
|
- name: Generate API Client
|
||||||
run: make gen-client-web
|
run: make gen-client-ts
|
||||||
- name: Publish package
|
- name: Publish package
|
||||||
working-directory: gen-ts-api/
|
working-directory: gen-ts-api/
|
||||||
run: |
|
run: |
|
||||||
|
34
Makefile
34
Makefile
@ -49,24 +49,44 @@ lint:
|
|||||||
bandit -r authentik tests lifecycle -x node_modules
|
bandit -r authentik tests lifecycle -x node_modules
|
||||||
golangci-lint run -v
|
golangci-lint run -v
|
||||||
|
|
||||||
|
migrate:
|
||||||
|
python -m lifecycle.migrate
|
||||||
|
|
||||||
|
run:
|
||||||
|
go run -v cmd/server/main.go
|
||||||
|
|
||||||
i18n-extract: i18n-extract-core web-extract
|
i18n-extract: i18n-extract-core web-extract
|
||||||
|
|
||||||
i18n-extract-core:
|
i18n-extract-core:
|
||||||
ak makemessages --ignore web --ignore internal --ignore web --ignore web-api --ignore website -l en
|
ak makemessages --ignore web --ignore internal --ignore web --ignore web-api --ignore website -l en
|
||||||
|
|
||||||
|
#########################
|
||||||
|
## API Schema
|
||||||
|
#########################
|
||||||
|
|
||||||
gen-build:
|
gen-build:
|
||||||
AUTHENTIK_DEBUG=true ak make_blueprint_schema > blueprints/schema.json
|
AUTHENTIK_DEBUG=true ak make_blueprint_schema > blueprints/schema.json
|
||||||
AUTHENTIK_DEBUG=true ak spectacular --file schema.yml
|
AUTHENTIK_DEBUG=true ak spectacular --file schema.yml
|
||||||
|
|
||||||
|
gen-diff:
|
||||||
|
git show $(shell git tag -l | tail -n 1):schema.yml > old_schema.yml
|
||||||
|
docker run \
|
||||||
|
--rm -v ${PWD}:/local \
|
||||||
|
--user ${UID}:${GID} \
|
||||||
|
docker.io/openapitools/openapi-diff:2.0.1 \
|
||||||
|
--markdown /local/diff.md \
|
||||||
|
/local/old_schema.yml /local/schema.yml
|
||||||
|
rm old_schema.yml
|
||||||
|
|
||||||
gen-clean:
|
gen-clean:
|
||||||
rm -rf web/api/src/
|
rm -rf web/api/src/
|
||||||
rm -rf api/
|
rm -rf api/
|
||||||
|
|
||||||
gen-client-web:
|
gen-client-ts:
|
||||||
docker run \
|
docker run \
|
||||||
--rm -v ${PWD}:/local \
|
--rm -v ${PWD}:/local \
|
||||||
--user ${UID}:${GID} \
|
--user ${UID}:${GID} \
|
||||||
openapitools/openapi-generator-cli:v6.0.0 generate \
|
docker.io/openapitools/openapi-generator-cli:v6.0.0 generate \
|
||||||
-i /local/schema.yml \
|
-i /local/schema.yml \
|
||||||
-g typescript-fetch \
|
-g typescript-fetch \
|
||||||
-o /local/gen-ts-api \
|
-o /local/gen-ts-api \
|
||||||
@ -84,7 +104,7 @@ gen-client-go:
|
|||||||
docker run \
|
docker run \
|
||||||
--rm -v ${PWD}:/local \
|
--rm -v ${PWD}:/local \
|
||||||
--user ${UID}:${GID} \
|
--user ${UID}:${GID} \
|
||||||
openapitools/openapi-generator-cli:v6.0.0 generate \
|
docker.io/openapitools/openapi-generator-cli:v6.0.0 generate \
|
||||||
-i /local/schema.yml \
|
-i /local/schema.yml \
|
||||||
-g go \
|
-g go \
|
||||||
-o /local/gen-go-api \
|
-o /local/gen-go-api \
|
||||||
@ -95,13 +115,7 @@ gen-client-go:
|
|||||||
gen-dev-config:
|
gen-dev-config:
|
||||||
python -m scripts.generate_config
|
python -m scripts.generate_config
|
||||||
|
|
||||||
gen: gen-build gen-clean gen-client-web
|
gen: gen-build gen-clean gen-client-ts
|
||||||
|
|
||||||
migrate:
|
|
||||||
python -m lifecycle.migrate
|
|
||||||
|
|
||||||
run:
|
|
||||||
go run -v cmd/server/main.go
|
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
## Web
|
## Web
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
from os import environ
|
from os import environ
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
__version__ = "2022.8.1"
|
__version__ = "2022.8.2"
|
||||||
ENV_GIT_HASH_KEY = "GIT_BUILD_HASH"
|
ENV_GIT_HASH_KEY = "GIT_BUILD_HASH"
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,13 +18,13 @@ class AppSerializer(PassiveSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class AppsViewSet(ViewSet):
|
class AppsViewSet(ViewSet):
|
||||||
"""Read-only view set list all installed apps"""
|
"""Read-only view list all installed apps"""
|
||||||
|
|
||||||
permission_classes = [IsAdminUser]
|
permission_classes = [IsAdminUser]
|
||||||
|
|
||||||
@extend_schema(responses={200: AppSerializer(many=True)})
|
@extend_schema(responses={200: AppSerializer(many=True)})
|
||||||
def list(self, request: Request) -> Response:
|
def list(self, request: Request) -> Response:
|
||||||
"""List current messages and pass into Serializer"""
|
"""Read-only view list all installed apps"""
|
||||||
data = []
|
data = []
|
||||||
for app in sorted(get_apps(), key=lambda app: app.name):
|
for app in sorted(get_apps(), key=lambda app: app.name):
|
||||||
data.append({"name": app.name, "label": app.verbose_name})
|
data.append({"name": app.name, "label": app.verbose_name})
|
||||||
|
@ -60,8 +60,28 @@ def postprocess_schema_responses(result, generator, **kwargs): # noqa: W0613
|
|||||||
|
|
||||||
for path in result["paths"].values():
|
for path in result["paths"].values():
|
||||||
for method in path.values():
|
for method in path.values():
|
||||||
method["responses"].setdefault("400", validation_error.ref)
|
method["responses"].setdefault(
|
||||||
method["responses"].setdefault("403", generic_error.ref)
|
"400",
|
||||||
|
{
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": validation_error.ref,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"description": "",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
method["responses"].setdefault(
|
||||||
|
"403",
|
||||||
|
{
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": generic_error.ref,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"description": "",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
result["components"] = generator.registry.build(spectacular_settings.APPEND_COMPONENTS)
|
result["components"] = generator.registry.build(spectacular_settings.APPEND_COMPONENTS)
|
||||||
|
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
"""Serializer mixin for managed models"""
|
"""Serializer mixin for managed models"""
|
||||||
from dataclasses import asdict
|
|
||||||
|
|
||||||
from drf_spectacular.utils import extend_schema, inline_serializer
|
from drf_spectacular.utils import extend_schema, inline_serializer
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
|
from rest_framework.exceptions import ValidationError
|
||||||
from rest_framework.fields import CharField, DateTimeField, JSONField
|
from rest_framework.fields import CharField, DateTimeField, JSONField
|
||||||
from rest_framework.permissions import IsAdminUser
|
from rest_framework.permissions import IsAdminUser
|
||||||
from rest_framework.request import Request
|
from rest_framework.request import Request
|
||||||
@ -11,11 +10,10 @@ from rest_framework.serializers import ListSerializer, ModelSerializer
|
|||||||
from rest_framework.viewsets import ModelViewSet
|
from rest_framework.viewsets import ModelViewSet
|
||||||
|
|
||||||
from authentik.api.decorators import permission_required
|
from authentik.api.decorators import permission_required
|
||||||
from authentik.blueprints.models import BlueprintInstance
|
from authentik.blueprints.models import BlueprintInstance, BlueprintRetrievalFailed
|
||||||
from authentik.blueprints.v1.tasks import BlueprintFile, apply_blueprint, blueprints_find
|
from authentik.blueprints.v1.tasks import apply_blueprint, blueprints_find_dict
|
||||||
from authentik.core.api.used_by import UsedByMixin
|
from authentik.core.api.used_by import UsedByMixin
|
||||||
from authentik.core.api.utils import PassiveSerializer
|
from authentik.core.api.utils import PassiveSerializer
|
||||||
from authentik.events.utils import sanitize_dict
|
|
||||||
|
|
||||||
|
|
||||||
class ManagedSerializer:
|
class ManagedSerializer:
|
||||||
@ -34,6 +32,14 @@ class MetadataSerializer(PassiveSerializer):
|
|||||||
class BlueprintInstanceSerializer(ModelSerializer):
|
class BlueprintInstanceSerializer(ModelSerializer):
|
||||||
"""Info about a single blueprint instance file"""
|
"""Info about a single blueprint instance file"""
|
||||||
|
|
||||||
|
def validate_path(self, path: str) -> str:
|
||||||
|
"""Ensure the path specified is retrievable"""
|
||||||
|
try:
|
||||||
|
BlueprintInstance(path=path).retrieve()
|
||||||
|
except BlueprintRetrievalFailed as exc:
|
||||||
|
raise ValidationError(exc) from exc
|
||||||
|
return path
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
||||||
model = BlueprintInstance
|
model = BlueprintInstance
|
||||||
@ -85,8 +91,8 @@ class BlueprintInstanceViewSet(UsedByMixin, ModelViewSet):
|
|||||||
@action(detail=False, pagination_class=None, filter_backends=[])
|
@action(detail=False, pagination_class=None, filter_backends=[])
|
||||||
def available(self, request: Request) -> Response:
|
def available(self, request: Request) -> Response:
|
||||||
"""Get blueprints"""
|
"""Get blueprints"""
|
||||||
files: list[BlueprintFile] = blueprints_find.delay().get()
|
files: list[dict] = blueprints_find_dict.delay().get()
|
||||||
return Response([sanitize_dict(asdict(file)) for file in files])
|
return Response(files)
|
||||||
|
|
||||||
@permission_required("authentik_blueprints.view_blueprintinstance")
|
@permission_required("authentik_blueprints.view_blueprintinstance")
|
||||||
@extend_schema(
|
@extend_schema(
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
from django.core.management.base import BaseCommand, no_translations
|
from django.core.management.base import BaseCommand, no_translations
|
||||||
from structlog.stdlib import get_logger
|
from structlog.stdlib import get_logger
|
||||||
|
|
||||||
|
from authentik.blueprints.models import BlueprintInstance
|
||||||
from authentik.blueprints.v1.importer import Importer
|
from authentik.blueprints.v1.importer import Importer
|
||||||
|
|
||||||
LOGGER = get_logger()
|
LOGGER = get_logger()
|
||||||
@ -14,14 +15,14 @@ class Command(BaseCommand):
|
|||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
"""Apply all blueprints in order, abort when one fails to import"""
|
"""Apply all blueprints in order, abort when one fails to import"""
|
||||||
for blueprint_path in options.get("blueprints", []):
|
for blueprint_path in options.get("blueprints", []):
|
||||||
with open(blueprint_path, "r", encoding="utf8") as blueprint_file:
|
content = BlueprintInstance(path=blueprint_path).retrieve()
|
||||||
importer = Importer(blueprint_file.read())
|
importer = Importer(content)
|
||||||
valid, logs = importer.validate()
|
valid, logs = importer.validate()
|
||||||
if not valid:
|
if not valid:
|
||||||
for log in logs:
|
for log in logs:
|
||||||
LOGGER.debug(**log)
|
LOGGER.debug(**log)
|
||||||
raise ValueError("blueprint invalid")
|
raise ValueError("blueprint invalid")
|
||||||
importer.apply()
|
importer.apply()
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
def add_arguments(self, parser):
|
||||||
parser.add_argument("blueprints", nargs="+", type=str)
|
parser.add_argument("blueprints", nargs="+", type=str)
|
||||||
|
17
authentik/blueprints/management/commands/export_blueprint.py
Normal file
17
authentik/blueprints/management/commands/export_blueprint.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
"""Export blueprint of current authentik install"""
|
||||||
|
from django.core.management.base import BaseCommand, no_translations
|
||||||
|
from structlog.stdlib import get_logger
|
||||||
|
|
||||||
|
from authentik.blueprints.v1.exporter import Exporter
|
||||||
|
|
||||||
|
LOGGER = get_logger()
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
"""Export blueprint of current authentik install"""
|
||||||
|
|
||||||
|
@no_translations
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
"""Export blueprint of current authentik install"""
|
||||||
|
exporter = Exporter()
|
||||||
|
self.stdout.write(exporter.export_to_string())
|
@ -7,6 +7,7 @@ from django.core.management.base import BaseCommand, no_translations
|
|||||||
from structlog.stdlib import get_logger
|
from structlog.stdlib import get_logger
|
||||||
|
|
||||||
from authentik.blueprints.v1.importer import is_model_allowed
|
from authentik.blueprints.v1.importer import is_model_allowed
|
||||||
|
from authentik.lib.models import SerializerModel
|
||||||
|
|
||||||
LOGGER = get_logger()
|
LOGGER = get_logger()
|
||||||
|
|
||||||
@ -31,5 +32,7 @@ class Command(BaseCommand):
|
|||||||
for model in apps.get_models():
|
for model in apps.get_models():
|
||||||
if not is_model_allowed(model):
|
if not is_model_allowed(model):
|
||||||
continue
|
continue
|
||||||
|
if SerializerModel not in model.__mro__:
|
||||||
|
continue
|
||||||
model_names.append(f"{model._meta.app_label}.{model._meta.model_name}")
|
model_names.append(f"{model._meta.app_label}.{model._meta.model_name}")
|
||||||
self.schema["properties"]["entries"]["items"]["properties"]["model"]["enum"] = model_names
|
self.schema["properties"]["entries"]["items"]["properties"]["model"]["enum"] = model_names
|
||||||
|
@ -113,7 +113,8 @@ class Migration(migrations.Migration):
|
|||||||
("error", "Error"),
|
("error", "Error"),
|
||||||
("orphaned", "Orphaned"),
|
("orphaned", "Orphaned"),
|
||||||
("unknown", "Unknown"),
|
("unknown", "Unknown"),
|
||||||
]
|
],
|
||||||
|
default="unknown",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("enabled", models.BooleanField(default=True)),
|
("enabled", models.BooleanField(default=True)),
|
||||||
|
@ -1,12 +1,23 @@
|
|||||||
"""Managed Object models"""
|
"""Managed Object models"""
|
||||||
|
from pathlib import Path
|
||||||
|
from urllib.parse import urlparse
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
from django.contrib.postgres.fields import ArrayField
|
from django.contrib.postgres.fields import ArrayField
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
from requests import RequestException
|
||||||
from rest_framework.serializers import Serializer
|
from rest_framework.serializers import Serializer
|
||||||
|
|
||||||
|
from authentik.lib.config import CONFIG
|
||||||
from authentik.lib.models import CreatedUpdatedModel, SerializerModel
|
from authentik.lib.models import CreatedUpdatedModel, SerializerModel
|
||||||
|
from authentik.lib.sentry import SentryIgnoredException
|
||||||
|
from authentik.lib.utils.http import get_http_session
|
||||||
|
|
||||||
|
|
||||||
|
class BlueprintRetrievalFailed(SentryIgnoredException):
|
||||||
|
"""Error raised when we're unable to fetch the blueprint contents, whether it be HTTP files
|
||||||
|
not being accessible or local files not being readable"""
|
||||||
|
|
||||||
|
|
||||||
class ManagedModel(models.Model):
|
class ManagedModel(models.Model):
|
||||||
@ -54,10 +65,25 @@ class BlueprintInstance(SerializerModel, ManagedModel, CreatedUpdatedModel):
|
|||||||
context = models.JSONField(default=dict)
|
context = models.JSONField(default=dict)
|
||||||
last_applied = models.DateTimeField(auto_now=True)
|
last_applied = models.DateTimeField(auto_now=True)
|
||||||
last_applied_hash = models.TextField()
|
last_applied_hash = models.TextField()
|
||||||
status = models.TextField(choices=BlueprintInstanceStatus.choices)
|
status = models.TextField(
|
||||||
|
choices=BlueprintInstanceStatus.choices, default=BlueprintInstanceStatus.UNKNOWN
|
||||||
|
)
|
||||||
enabled = models.BooleanField(default=True)
|
enabled = models.BooleanField(default=True)
|
||||||
managed_models = ArrayField(models.TextField(), default=list)
|
managed_models = ArrayField(models.TextField(), default=list)
|
||||||
|
|
||||||
|
def retrieve(self) -> str:
|
||||||
|
"""Retrieve blueprint contents"""
|
||||||
|
if urlparse(self.path).scheme != "":
|
||||||
|
try:
|
||||||
|
res = get_http_session().get(self.path, timeout=3, allow_redirects=True)
|
||||||
|
res.raise_for_status()
|
||||||
|
return res.text
|
||||||
|
except RequestException as exc:
|
||||||
|
raise BlueprintRetrievalFailed(exc) from exc
|
||||||
|
path = Path(CONFIG.y("blueprints_dir")).joinpath(Path(self.path))
|
||||||
|
with path.open("r", encoding="utf-8") as _file:
|
||||||
|
return _file.read()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def serializer(self) -> Serializer:
|
def serializer(self) -> Serializer:
|
||||||
from authentik.blueprints.api import BlueprintInstanceSerializer
|
from authentik.blueprints.api import BlueprintInstanceSerializer
|
||||||
|
@ -6,6 +6,7 @@ from typing import Callable
|
|||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
|
|
||||||
from authentik.blueprints.manager import ManagedAppConfig
|
from authentik.blueprints.manager import ManagedAppConfig
|
||||||
|
from authentik.blueprints.models import BlueprintInstance
|
||||||
from authentik.lib.config import CONFIG
|
from authentik.lib.config import CONFIG
|
||||||
|
|
||||||
|
|
||||||
@ -19,11 +20,9 @@ def apply_blueprint(*files: str):
|
|||||||
|
|
||||||
@wraps(func)
|
@wraps(func)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
base_path = Path(CONFIG.y("blueprints_dir"))
|
|
||||||
for file in files:
|
for file in files:
|
||||||
full_path = Path(base_path, file)
|
content = BlueprintInstance(path=file).retrieve()
|
||||||
with full_path.open("r", encoding="utf-8") as _file:
|
Importer(content).apply()
|
||||||
Importer(_file.read()).apply()
|
|
||||||
return func(*args, **kwargs)
|
return func(*args, **kwargs)
|
||||||
|
|
||||||
return wrapper
|
return wrapper
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
"""test packaged blueprints"""
|
"""test packaged blueprints"""
|
||||||
from glob import glob
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Callable
|
from typing import Callable
|
||||||
|
|
||||||
from django.test import TransactionTestCase
|
from django.test import TransactionTestCase
|
||||||
from django.utils.text import slugify
|
|
||||||
|
|
||||||
|
from authentik.blueprints.models import BlueprintInstance
|
||||||
from authentik.blueprints.tests import apply_blueprint
|
from authentik.blueprints.tests import apply_blueprint
|
||||||
from authentik.blueprints.v1.importer import Importer
|
from authentik.blueprints.v1.importer import Importer
|
||||||
from authentik.tenants.models import Tenant
|
from authentik.tenants.models import Tenant
|
||||||
|
|
||||||
|
|
||||||
class TestBundled(TransactionTestCase):
|
class TestPackaged(TransactionTestCase):
|
||||||
"""Empty class, test methods are added dynamically"""
|
"""Empty class, test methods are added dynamically"""
|
||||||
|
|
||||||
@apply_blueprint("default/90-default-tenant.yaml")
|
@apply_blueprint("default/90-default-tenant.yaml")
|
||||||
@ -20,18 +19,18 @@ class TestBundled(TransactionTestCase):
|
|||||||
self.assertTrue(Tenant.objects.filter(domain="authentik-default").exists())
|
self.assertTrue(Tenant.objects.filter(domain="authentik-default").exists())
|
||||||
|
|
||||||
|
|
||||||
def blueprint_tester(file_name: str) -> Callable:
|
def blueprint_tester(file_name: Path) -> Callable:
|
||||||
"""This is used instead of subTest for better visibility"""
|
"""This is used instead of subTest for better visibility"""
|
||||||
|
|
||||||
def tester(self: TestBundled):
|
def tester(self: TestPackaged):
|
||||||
with open(file_name, "r", encoding="utf8") as flow_yaml:
|
base = Path("blueprints/")
|
||||||
importer = Importer(flow_yaml.read())
|
rel_path = Path(file_name).relative_to(base)
|
||||||
|
importer = Importer(BlueprintInstance(path=str(rel_path)).retrieve())
|
||||||
self.assertTrue(importer.validate()[0])
|
self.assertTrue(importer.validate()[0])
|
||||||
self.assertTrue(importer.apply())
|
self.assertTrue(importer.apply())
|
||||||
|
|
||||||
return tester
|
return tester
|
||||||
|
|
||||||
|
|
||||||
for flow_file in glob("blueprints/**/*.yaml", recursive=True):
|
for blueprint_file in Path("blueprints/").glob("**/*.yaml"):
|
||||||
method_name = slugify(Path(flow_file).stem).replace("-", "_").replace(".", "_")
|
setattr(TestPackaged, f"test_blueprint_{blueprint_file}", blueprint_tester(blueprint_file))
|
||||||
setattr(TestBundled, f"test_flow_{method_name}", blueprint_tester(flow_file))
|
|
@ -1,7 +1,7 @@
|
|||||||
"""Test blueprints v1"""
|
"""Test blueprints v1"""
|
||||||
from django.test import TransactionTestCase
|
from django.test import TransactionTestCase
|
||||||
|
|
||||||
from authentik.blueprints.v1.exporter import Exporter
|
from authentik.blueprints.v1.exporter import FlowExporter
|
||||||
from authentik.blueprints.v1.importer import Importer, transaction_rollback
|
from authentik.blueprints.v1.importer import Importer, transaction_rollback
|
||||||
from authentik.flows.models import Flow, FlowDesignation, FlowStageBinding
|
from authentik.flows.models import Flow, FlowDesignation, FlowStageBinding
|
||||||
from authentik.lib.generators import generate_id
|
from authentik.lib.generators import generate_id
|
||||||
@ -70,7 +70,7 @@ class TestBlueprintsV1(TransactionTestCase):
|
|||||||
order=0,
|
order=0,
|
||||||
)
|
)
|
||||||
|
|
||||||
exporter = Exporter(flow)
|
exporter = FlowExporter(flow)
|
||||||
export = exporter.export()
|
export = exporter.export()
|
||||||
self.assertEqual(len(export.entries), 3)
|
self.assertEqual(len(export.entries), 3)
|
||||||
export_yaml = exporter.export_to_string()
|
export_yaml = exporter.export_to_string()
|
||||||
@ -126,7 +126,7 @@ class TestBlueprintsV1(TransactionTestCase):
|
|||||||
fsb = FlowStageBinding.objects.create(target=flow, stage=user_login, order=0)
|
fsb = FlowStageBinding.objects.create(target=flow, stage=user_login, order=0)
|
||||||
PolicyBinding.objects.create(policy=flow_policy, target=fsb, order=0)
|
PolicyBinding.objects.create(policy=flow_policy, target=fsb, order=0)
|
||||||
|
|
||||||
exporter = Exporter(flow)
|
exporter = FlowExporter(flow)
|
||||||
export_yaml = exporter.export_to_string()
|
export_yaml = exporter.export_to_string()
|
||||||
|
|
||||||
importer = Importer(export_yaml)
|
importer = Importer(export_yaml)
|
||||||
@ -169,7 +169,7 @@ class TestBlueprintsV1(TransactionTestCase):
|
|||||||
|
|
||||||
FlowStageBinding.objects.create(target=flow, stage=first_stage, order=0)
|
FlowStageBinding.objects.create(target=flow, stage=first_stage, order=0)
|
||||||
|
|
||||||
exporter = Exporter(flow)
|
exporter = FlowExporter(flow)
|
||||||
export_yaml = exporter.export_to_string()
|
export_yaml = exporter.export_to_string()
|
||||||
|
|
||||||
importer = Importer(export_yaml)
|
importer = Importer(export_yaml)
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
"""Test blueprints v1 tasks"""
|
"""Test blueprints v1 tasks"""
|
||||||
|
from hashlib import sha512
|
||||||
from tempfile import NamedTemporaryFile, mkdtemp
|
from tempfile import NamedTemporaryFile, mkdtemp
|
||||||
|
|
||||||
from django.test import TransactionTestCase
|
from django.test import TransactionTestCase
|
||||||
@ -36,25 +37,32 @@ class TestBlueprintsV1Tasks(TransactionTestCase):
|
|||||||
@CONFIG.patch("blueprints_dir", TMP)
|
@CONFIG.patch("blueprints_dir", TMP)
|
||||||
def test_valid(self):
|
def test_valid(self):
|
||||||
"""Test valid file"""
|
"""Test valid file"""
|
||||||
|
blueprint_id = generate_id()
|
||||||
with NamedTemporaryFile(mode="w+", suffix=".yaml", dir=TMP) as file:
|
with NamedTemporaryFile(mode="w+", suffix=".yaml", dir=TMP) as file:
|
||||||
file.write(
|
file.write(
|
||||||
dump(
|
dump(
|
||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"entries": [],
|
"entries": [],
|
||||||
|
"metadata": {
|
||||||
|
"name": blueprint_id,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
file.seek(0)
|
||||||
|
file_hash = sha512(file.read().encode()).hexdigest()
|
||||||
file.flush()
|
file.flush()
|
||||||
blueprints_discover() # pylint: disable=no-value-for-parameter
|
blueprints_discover() # pylint: disable=no-value-for-parameter
|
||||||
|
instance = BlueprintInstance.objects.filter(name=blueprint_id).first()
|
||||||
|
self.assertEqual(instance.last_applied_hash, file_hash)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
BlueprintInstance.objects.first().last_applied_hash,
|
instance.metadata,
|
||||||
(
|
{
|
||||||
"e52bb445b03cd36057258dc9f0ce0fbed8278498ee1470e45315293e5f026d1b"
|
"name": blueprint_id,
|
||||||
"d1f9b3526871c0003f5c07be5c3316d9d4a08444bd8fed1b3f03294e51e44522"
|
"labels": {},
|
||||||
),
|
},
|
||||||
)
|
)
|
||||||
self.assertEqual(BlueprintInstance.objects.first().metadata, {})
|
|
||||||
|
|
||||||
@CONFIG.patch("blueprints_dir", TMP)
|
@CONFIG.patch("blueprints_dir", TMP)
|
||||||
def test_valid_updated(self):
|
def test_valid_updated(self):
|
||||||
|
@ -27,16 +27,23 @@ def get_attrs(obj: SerializerModel) -> dict[str, Any]:
|
|||||||
continue
|
continue
|
||||||
if _field.read_only:
|
if _field.read_only:
|
||||||
data.pop(field_name, None)
|
data.pop(field_name, None)
|
||||||
if _field.default == data.get(field_name, None):
|
if _field.get_initial() == data.get(field_name, None):
|
||||||
data.pop(field_name, None)
|
data.pop(field_name, None)
|
||||||
if field_name.endswith("_set"):
|
if field_name.endswith("_set"):
|
||||||
data.pop(field_name, None)
|
data.pop(field_name, None)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class BlueprintEntryState:
|
||||||
|
"""State of a single instance"""
|
||||||
|
|
||||||
|
instance: Optional[Model] = None
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class BlueprintEntry:
|
class BlueprintEntry:
|
||||||
"""Single entry of a bundle"""
|
"""Single entry of a blueprint"""
|
||||||
|
|
||||||
identifiers: dict[str, Any]
|
identifiers: dict[str, Any]
|
||||||
model: str
|
model: str
|
||||||
@ -45,11 +52,11 @@ class BlueprintEntry:
|
|||||||
# pylint: disable=invalid-name
|
# pylint: disable=invalid-name
|
||||||
id: Optional[str] = None
|
id: Optional[str] = None
|
||||||
|
|
||||||
_instance: Optional[Model] = None
|
_state: BlueprintEntryState = field(default_factory=BlueprintEntryState)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_model(model: SerializerModel, *extra_identifier_names: str) -> "BlueprintEntry":
|
def from_model(model: SerializerModel, *extra_identifier_names: str) -> "BlueprintEntry":
|
||||||
"""Convert a SerializerModel instance to a Bundle Entry"""
|
"""Convert a SerializerModel instance to a blueprint Entry"""
|
||||||
identifiers = {
|
identifiers = {
|
||||||
"pk": model.pk,
|
"pk": model.pk,
|
||||||
}
|
}
|
||||||
@ -123,15 +130,15 @@ class KeyOf(YAMLTag):
|
|||||||
|
|
||||||
def resolve(self, entry: BlueprintEntry, blueprint: Blueprint) -> Any:
|
def resolve(self, entry: BlueprintEntry, blueprint: Blueprint) -> Any:
|
||||||
for _entry in blueprint.entries:
|
for _entry in blueprint.entries:
|
||||||
if _entry.id == self.id_from and _entry._instance:
|
if _entry.id == self.id_from and _entry._state.instance:
|
||||||
# Special handling for PolicyBindingModels, as they'll have a different PK
|
# Special handling for PolicyBindingModels, as they'll have a different PK
|
||||||
# which is used when creating policy bindings
|
# which is used when creating policy bindings
|
||||||
if (
|
if (
|
||||||
isinstance(_entry._instance, PolicyBindingModel)
|
isinstance(_entry._state.instance, PolicyBindingModel)
|
||||||
and entry.model.lower() == "authentik_policies.policybinding"
|
and entry.model.lower() == "authentik_policies.policybinding"
|
||||||
):
|
):
|
||||||
return _entry._instance.pbm_uuid
|
return _entry._state.instance.pbm_uuid
|
||||||
return _entry._instance.pk
|
return _entry._state.instance.pk
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
f"KeyOf: failed to find entry with `id` of `{self.id_from}` and a model instance"
|
f"KeyOf: failed to find entry with `id` of `{self.id_from}` and a model instance"
|
||||||
)
|
)
|
||||||
@ -176,8 +183,6 @@ class Format(YAMLTag):
|
|||||||
|
|
||||||
def resolve(self, entry: BlueprintEntry, blueprint: Blueprint) -> Any:
|
def resolve(self, entry: BlueprintEntry, blueprint: Blueprint) -> Any:
|
||||||
try:
|
try:
|
||||||
print(self.format_string)
|
|
||||||
print(self.args)
|
|
||||||
return self.format_string % tuple(self.args)
|
return self.format_string % tuple(self.args)
|
||||||
except TypeError as exc:
|
except TypeError as exc:
|
||||||
raise EntryInvalidError(exc)
|
raise EntryInvalidError(exc)
|
||||||
@ -225,7 +230,13 @@ class BlueprintDumper(SafeDumper):
|
|||||||
|
|
||||||
def represent(self, data) -> None:
|
def represent(self, data) -> None:
|
||||||
if is_dataclass(data):
|
if is_dataclass(data):
|
||||||
data = asdict(data)
|
|
||||||
|
def factory(items):
|
||||||
|
final_dict = dict(items)
|
||||||
|
final_dict.pop("_state", None)
|
||||||
|
return final_dict
|
||||||
|
|
||||||
|
data = asdict(data, dict_factory=factory)
|
||||||
return super().represent(data)
|
return super().represent(data)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,12 +1,23 @@
|
|||||||
"""Flow exporter"""
|
"""Blueprint exporter"""
|
||||||
from typing import Iterator
|
from typing import Iterator
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
|
from django.apps import apps
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
from django.utils.timezone import now
|
||||||
|
from django.utils.translation import gettext as _
|
||||||
from yaml import dump
|
from yaml import dump
|
||||||
|
|
||||||
from authentik.blueprints.v1.common import Blueprint, BlueprintDumper, BlueprintEntry
|
from authentik.blueprints.v1.common import (
|
||||||
|
Blueprint,
|
||||||
|
BlueprintDumper,
|
||||||
|
BlueprintEntry,
|
||||||
|
BlueprintMetadata,
|
||||||
|
)
|
||||||
|
from authentik.blueprints.v1.importer import is_model_allowed
|
||||||
|
from authentik.blueprints.v1.labels import LABEL_AUTHENTIK_GENERATED
|
||||||
from authentik.flows.models import Flow, FlowStageBinding, Stage
|
from authentik.flows.models import Flow, FlowStageBinding, Stage
|
||||||
|
from authentik.lib.models import SerializerModel
|
||||||
from authentik.policies.models import Policy, PolicyBinding
|
from authentik.policies.models import Policy, PolicyBinding
|
||||||
from authentik.stages.prompt.models import PromptStage
|
from authentik.stages.prompt.models import PromptStage
|
||||||
|
|
||||||
@ -14,6 +25,48 @@ from authentik.stages.prompt.models import PromptStage
|
|||||||
class Exporter:
|
class Exporter:
|
||||||
"""Export flow with attached stages into yaml"""
|
"""Export flow with attached stages into yaml"""
|
||||||
|
|
||||||
|
excluded_models = []
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.excluded_models = []
|
||||||
|
|
||||||
|
def get_entries(self) -> Iterator[BlueprintEntry]:
|
||||||
|
"""Get blueprint entries"""
|
||||||
|
for model in apps.get_models():
|
||||||
|
if not is_model_allowed(model):
|
||||||
|
continue
|
||||||
|
if model in self.excluded_models:
|
||||||
|
continue
|
||||||
|
if SerializerModel not in model.__mro__:
|
||||||
|
continue
|
||||||
|
for obj in model.objects.all():
|
||||||
|
yield BlueprintEntry.from_model(obj)
|
||||||
|
|
||||||
|
def _pre_export(self, blueprint: Blueprint):
|
||||||
|
"""Hook to run anything pre-export"""
|
||||||
|
|
||||||
|
def export(self) -> Blueprint:
|
||||||
|
"""Create a list of all objects and create a blueprint"""
|
||||||
|
blueprint = Blueprint()
|
||||||
|
self._pre_export(blueprint)
|
||||||
|
blueprint.metadata = BlueprintMetadata(
|
||||||
|
name=_("authentik Export - %(date)s" % {"date": str(now())}),
|
||||||
|
labels={
|
||||||
|
LABEL_AUTHENTIK_GENERATED: "true",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
blueprint.entries = list(self.get_entries())
|
||||||
|
return blueprint
|
||||||
|
|
||||||
|
def export_to_string(self) -> str:
|
||||||
|
"""Call export and convert it to yaml"""
|
||||||
|
blueprint = self.export()
|
||||||
|
return dump(blueprint, Dumper=BlueprintDumper)
|
||||||
|
|
||||||
|
|
||||||
|
class FlowExporter(Exporter):
|
||||||
|
"""Exporter customised to only return objects related to `flow`"""
|
||||||
|
|
||||||
flow: Flow
|
flow: Flow
|
||||||
with_policies: bool
|
with_policies: bool
|
||||||
with_stage_prompts: bool
|
with_stage_prompts: bool
|
||||||
@ -21,11 +74,14 @@ class Exporter:
|
|||||||
pbm_uuids: list[UUID]
|
pbm_uuids: list[UUID]
|
||||||
|
|
||||||
def __init__(self, flow: Flow):
|
def __init__(self, flow: Flow):
|
||||||
|
super().__init__()
|
||||||
self.flow = flow
|
self.flow = flow
|
||||||
self.with_policies = True
|
self.with_policies = True
|
||||||
self.with_stage_prompts = True
|
self.with_stage_prompts = True
|
||||||
|
|
||||||
def _prepare_pbm(self):
|
def _pre_export(self, blueprint: Blueprint):
|
||||||
|
if not self.with_policies:
|
||||||
|
return
|
||||||
self.pbm_uuids = [self.flow.pbm_uuid]
|
self.pbm_uuids = [self.flow.pbm_uuid]
|
||||||
self.pbm_uuids += FlowStageBinding.objects.filter(target=self.flow).values_list(
|
self.pbm_uuids += FlowStageBinding.objects.filter(target=self.flow).values_list(
|
||||||
"pbm_uuid", flat=True
|
"pbm_uuid", flat=True
|
||||||
@ -70,23 +126,15 @@ class Exporter:
|
|||||||
for prompt in stage.fields.all():
|
for prompt in stage.fields.all():
|
||||||
yield BlueprintEntry.from_model(prompt)
|
yield BlueprintEntry.from_model(prompt)
|
||||||
|
|
||||||
def export(self) -> Blueprint:
|
def get_entries(self) -> Iterator[BlueprintEntry]:
|
||||||
"""Create a list of all objects including the flow"""
|
entries = []
|
||||||
if self.with_policies:
|
entries.append(BlueprintEntry.from_model(self.flow, "slug"))
|
||||||
self._prepare_pbm()
|
|
||||||
bundle = Blueprint()
|
|
||||||
bundle.entries.append(BlueprintEntry.from_model(self.flow, "slug"))
|
|
||||||
if self.with_stage_prompts:
|
if self.with_stage_prompts:
|
||||||
bundle.entries.extend(self.walk_stage_prompts())
|
entries.extend(self.walk_stage_prompts())
|
||||||
if self.with_policies:
|
if self.with_policies:
|
||||||
bundle.entries.extend(self.walk_policies())
|
entries.extend(self.walk_policies())
|
||||||
bundle.entries.extend(self.walk_stages())
|
entries.extend(self.walk_stages())
|
||||||
bundle.entries.extend(self.walk_stage_bindings())
|
entries.extend(self.walk_stage_bindings())
|
||||||
if self.with_policies:
|
if self.with_policies:
|
||||||
bundle.entries.extend(self.walk_policy_bindings())
|
entries.extend(self.walk_policy_bindings())
|
||||||
return bundle
|
return entries
|
||||||
|
|
||||||
def export_to_string(self) -> str:
|
|
||||||
"""Call export and convert it to yaml"""
|
|
||||||
bundle = self.export()
|
|
||||||
return dump(bundle, Dumper=BlueprintDumper)
|
|
||||||
|
@ -21,6 +21,7 @@ from yaml import load
|
|||||||
from authentik.blueprints.v1.common import (
|
from authentik.blueprints.v1.common import (
|
||||||
Blueprint,
|
Blueprint,
|
||||||
BlueprintEntry,
|
BlueprintEntry,
|
||||||
|
BlueprintEntryState,
|
||||||
BlueprintLoader,
|
BlueprintLoader,
|
||||||
EntryInvalidError,
|
EntryInvalidError,
|
||||||
)
|
)
|
||||||
@ -220,7 +221,7 @@ class Importer:
|
|||||||
model = serializer.save()
|
model = serializer.save()
|
||||||
if "pk" in entry.identifiers:
|
if "pk" in entry.identifiers:
|
||||||
self.__pk_map[entry.identifiers["pk"]] = model.pk
|
self.__pk_map[entry.identifiers["pk"]] = model.pk
|
||||||
entry._instance = model
|
entry._state = BlueprintEntryState(model)
|
||||||
self.logger.debug("updated model", model=model, pk=model.pk)
|
self.logger.debug("updated model", model=model, pk=model.pk)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -230,7 +231,7 @@ class Importer:
|
|||||||
self.logger.debug("Starting blueprint import validation")
|
self.logger.debug("Starting blueprint import validation")
|
||||||
orig_import = deepcopy(self.__import)
|
orig_import = deepcopy(self.__import)
|
||||||
if self.__import.version != 1:
|
if self.__import.version != 1:
|
||||||
self.logger.warning("Invalid bundle version")
|
self.logger.warning("Invalid blueprint version")
|
||||||
return False, []
|
return False, []
|
||||||
with (
|
with (
|
||||||
transaction_rollback(),
|
transaction_rollback(),
|
||||||
|
@ -2,3 +2,4 @@
|
|||||||
|
|
||||||
LABEL_AUTHENTIK_SYSTEM = "blueprints.goauthentik.io/system"
|
LABEL_AUTHENTIK_SYSTEM = "blueprints.goauthentik.io/system"
|
||||||
LABEL_AUTHENTIK_INSTANTIATE = "blueprints.goauthentik.io/instantiate"
|
LABEL_AUTHENTIK_INSTANTIATE = "blueprints.goauthentik.io/instantiate"
|
||||||
|
LABEL_AUTHENTIK_GENERATED = "blueprints.goauthentik.io/generated"
|
||||||
|
@ -8,10 +8,15 @@ from dacite import from_dict
|
|||||||
from django.db import DatabaseError, InternalError, ProgrammingError
|
from django.db import DatabaseError, InternalError, ProgrammingError
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
from structlog.stdlib import get_logger
|
||||||
from yaml import load
|
from yaml import load
|
||||||
from yaml.error import YAMLError
|
from yaml.error import YAMLError
|
||||||
|
|
||||||
from authentik.blueprints.models import BlueprintInstance, BlueprintInstanceStatus
|
from authentik.blueprints.models import (
|
||||||
|
BlueprintInstance,
|
||||||
|
BlueprintInstanceStatus,
|
||||||
|
BlueprintRetrievalFailed,
|
||||||
|
)
|
||||||
from authentik.blueprints.v1.common import BlueprintLoader, BlueprintMetadata
|
from authentik.blueprints.v1.common import BlueprintLoader, BlueprintMetadata
|
||||||
from authentik.blueprints.v1.importer import Importer
|
from authentik.blueprints.v1.importer import Importer
|
||||||
from authentik.blueprints.v1.labels import LABEL_AUTHENTIK_INSTANTIATE
|
from authentik.blueprints.v1.labels import LABEL_AUTHENTIK_INSTANTIATE
|
||||||
@ -21,9 +26,12 @@ from authentik.events.monitored_tasks import (
|
|||||||
TaskResultStatus,
|
TaskResultStatus,
|
||||||
prefill_task,
|
prefill_task,
|
||||||
)
|
)
|
||||||
|
from authentik.events.utils import sanitize_dict
|
||||||
from authentik.lib.config import CONFIG
|
from authentik.lib.config import CONFIG
|
||||||
from authentik.root.celery import CELERY_APP
|
from authentik.root.celery import CELERY_APP
|
||||||
|
|
||||||
|
LOGGER = get_logger()
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class BlueprintFile:
|
class BlueprintFile:
|
||||||
@ -39,27 +47,43 @@ class BlueprintFile:
|
|||||||
@CELERY_APP.task(
|
@CELERY_APP.task(
|
||||||
throws=(DatabaseError, ProgrammingError, InternalError),
|
throws=(DatabaseError, ProgrammingError, InternalError),
|
||||||
)
|
)
|
||||||
|
def blueprints_find_dict():
|
||||||
|
"""Find blueprints as `blueprints_find` does, but return a safe dict"""
|
||||||
|
blueprints = []
|
||||||
|
for blueprint in blueprints_find():
|
||||||
|
blueprints.append(sanitize_dict(asdict(blueprint)))
|
||||||
|
return blueprints
|
||||||
|
|
||||||
|
|
||||||
def blueprints_find():
|
def blueprints_find():
|
||||||
"""Find blueprints and return valid ones"""
|
"""Find blueprints and return valid ones"""
|
||||||
blueprints = []
|
blueprints = []
|
||||||
root = Path(CONFIG.y("blueprints_dir"))
|
root = Path(CONFIG.y("blueprints_dir"))
|
||||||
for file in root.glob("**/*.yaml"):
|
for file in root.glob("**/*.yaml"):
|
||||||
path = Path(file)
|
path = Path(file)
|
||||||
|
LOGGER.debug("found blueprint", path=str(path))
|
||||||
with open(path, "r", encoding="utf-8") as blueprint_file:
|
with open(path, "r", encoding="utf-8") as blueprint_file:
|
||||||
try:
|
try:
|
||||||
raw_blueprint = load(blueprint_file.read(), BlueprintLoader)
|
raw_blueprint = load(blueprint_file.read(), BlueprintLoader)
|
||||||
except YAMLError:
|
except YAMLError as exc:
|
||||||
raw_blueprint = None
|
raw_blueprint = None
|
||||||
|
LOGGER.warning("failed to parse blueprint", exc=exc, path=str(path))
|
||||||
if not raw_blueprint:
|
if not raw_blueprint:
|
||||||
continue
|
continue
|
||||||
metadata = raw_blueprint.get("metadata", None)
|
metadata = raw_blueprint.get("metadata", None)
|
||||||
version = raw_blueprint.get("version", 1)
|
version = raw_blueprint.get("version", 1)
|
||||||
if version != 1:
|
if version != 1:
|
||||||
|
LOGGER.warning("invalid blueprint version", version=version, path=str(path))
|
||||||
continue
|
continue
|
||||||
file_hash = sha512(path.read_bytes()).hexdigest()
|
file_hash = sha512(path.read_bytes()).hexdigest()
|
||||||
blueprint = BlueprintFile(path.relative_to(root), version, file_hash, path.stat().st_mtime)
|
blueprint = BlueprintFile(path.relative_to(root), version, file_hash, path.stat().st_mtime)
|
||||||
blueprint.meta = from_dict(BlueprintMetadata, metadata) if metadata else None
|
blueprint.meta = from_dict(BlueprintMetadata, metadata) if metadata else None
|
||||||
blueprints.append(blueprint)
|
blueprints.append(blueprint)
|
||||||
|
LOGGER.info(
|
||||||
|
"parsed & loaded blueprint",
|
||||||
|
hash=file_hash,
|
||||||
|
path=str(path),
|
||||||
|
)
|
||||||
return blueprints
|
return blueprints
|
||||||
|
|
||||||
|
|
||||||
@ -118,10 +142,9 @@ def apply_blueprint(self: MonitoredTask, instance_pk: str):
|
|||||||
instance: BlueprintInstance = BlueprintInstance.objects.filter(pk=instance_pk).first()
|
instance: BlueprintInstance = BlueprintInstance.objects.filter(pk=instance_pk).first()
|
||||||
if not instance or not instance.enabled:
|
if not instance or not instance.enabled:
|
||||||
return
|
return
|
||||||
full_path = Path(CONFIG.y("blueprints_dir")).joinpath(Path(instance.path))
|
blueprint_content = instance.retrieve()
|
||||||
file_hash = sha512(full_path.read_bytes()).hexdigest()
|
file_hash = sha512(blueprint_content.encode()).hexdigest()
|
||||||
with open(full_path, "r", encoding="utf-8") as blueprint_file:
|
importer = Importer(blueprint_content, instance.context)
|
||||||
importer = Importer(blueprint_file.read(), instance.context)
|
|
||||||
valid, logs = importer.validate()
|
valid, logs = importer.validate()
|
||||||
if not valid:
|
if not valid:
|
||||||
instance.status = BlueprintInstanceStatus.ERROR
|
instance.status = BlueprintInstanceStatus.ERROR
|
||||||
@ -139,7 +162,13 @@ def apply_blueprint(self: MonitoredTask, instance_pk: str):
|
|||||||
instance.last_applied = now()
|
instance.last_applied = now()
|
||||||
instance.save()
|
instance.save()
|
||||||
self.set_status(TaskResult(TaskResultStatus.SUCCESSFUL))
|
self.set_status(TaskResult(TaskResultStatus.SUCCESSFUL))
|
||||||
except (DatabaseError, ProgrammingError, InternalError, IOError) as exc:
|
except (
|
||||||
|
DatabaseError,
|
||||||
|
ProgrammingError,
|
||||||
|
InternalError,
|
||||||
|
IOError,
|
||||||
|
BlueprintRetrievalFailed,
|
||||||
|
) as exc:
|
||||||
instance.status = BlueprintInstanceStatus.ERROR
|
instance.status = BlueprintInstanceStatus.ERROR
|
||||||
instance.save()
|
instance.save()
|
||||||
self.set_status(TaskResult(TaskResultStatus.ERROR).with_error(exc))
|
self.set_status(TaskResult(TaskResultStatus.ERROR).with_error(exc))
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
<script>
|
<script>
|
||||||
window.authentik = {};
|
window.authentik = {};
|
||||||
window.authentik.locale = "{{ tenant.default_locale }}";
|
window.authentik.locale = "{{ tenant.default_locale }}";
|
||||||
window.authentik.config = JSON.parse('{{ config_json|safe }}');
|
window.authentik.config = JSON.parse('{{ config_json|escapejs }}');
|
||||||
window.authentik.tenant = JSON.parse('{{ tenant_json|safe }}');
|
window.authentik.tenant = JSON.parse('{{ tenant_json|escapejs }}');
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
<script>
|
<script>
|
||||||
window.authentik = {};
|
window.authentik = {};
|
||||||
window.authentik.locale = "{{ tenant.default_locale }}";
|
window.authentik.locale = "{{ tenant.default_locale }}";
|
||||||
window.authentik.config = JSON.parse( '{{ config_json|safe }}');
|
window.authentik.config = JSON.parse('{{ config_json|escapejs }}');
|
||||||
window.authentik.tenant = JSON.parse('{{ tenant_json|safe }}');
|
window.authentik.tenant = JSON.parse('{{ tenant_json|escapejs }}');
|
||||||
window.authentik.flow = {
|
window.authentik.flow = {
|
||||||
"layout": "{{ flow.layout }}",
|
"layout": "{{ flow.layout }}",
|
||||||
};
|
};
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
<script>
|
<script>
|
||||||
window.authentik = {};
|
window.authentik = {};
|
||||||
window.authentik.locale = "{{ tenant.default_locale }}";
|
window.authentik.locale = "{{ tenant.default_locale }}";
|
||||||
window.authentik.config = JSON.parse('{{ config_json|safe }}');
|
window.authentik.config = JSON.parse('{{ config_json|escapejs }}');
|
||||||
window.authentik.tenant = JSON.parse('{{ tenant_json|safe }}');
|
window.authentik.tenant = JSON.parse('{{ tenant_json|escapejs }}');
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
@ -23,21 +23,31 @@ from authentik.policies.types import PolicyRequest
|
|||||||
ALLOWED_SPECIAL_KEYS = re.compile("passing", flags=re.I)
|
ALLOWED_SPECIAL_KEYS = re.compile("passing", flags=re.I)
|
||||||
|
|
||||||
|
|
||||||
|
def cleanse_item(key: str, value: Any) -> Any:
|
||||||
|
"""Cleanse a single item"""
|
||||||
|
if isinstance(value, dict):
|
||||||
|
return cleanse_dict(value)
|
||||||
|
if isinstance(value, list):
|
||||||
|
for idx, item in enumerate(value):
|
||||||
|
value[idx] = cleanse_item(key, item)
|
||||||
|
return value
|
||||||
|
try:
|
||||||
|
if SafeExceptionReporterFilter.hidden_settings.search(
|
||||||
|
key
|
||||||
|
) and not ALLOWED_SPECIAL_KEYS.search(key):
|
||||||
|
return SafeExceptionReporterFilter.cleansed_substitute
|
||||||
|
except TypeError: # pragma: no cover
|
||||||
|
return value
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
def cleanse_dict(source: dict[Any, Any]) -> dict[Any, Any]:
|
def cleanse_dict(source: dict[Any, Any]) -> dict[Any, Any]:
|
||||||
"""Cleanse a dictionary, recursively"""
|
"""Cleanse a dictionary, recursively"""
|
||||||
final_dict = {}
|
final_dict = {}
|
||||||
for key, value in source.items():
|
for key, value in source.items():
|
||||||
try:
|
new_value = cleanse_item(key, value)
|
||||||
if SafeExceptionReporterFilter.hidden_settings.search(
|
if new_value is not ...:
|
||||||
key
|
final_dict[key] = new_value
|
||||||
) and not ALLOWED_SPECIAL_KEYS.search(key):
|
|
||||||
final_dict[key] = SafeExceptionReporterFilter.cleansed_substitute
|
|
||||||
else:
|
|
||||||
final_dict[key] = value
|
|
||||||
except TypeError: # pragma: no cover
|
|
||||||
final_dict[key] = value
|
|
||||||
if isinstance(value, dict):
|
|
||||||
final_dict[key] = cleanse_dict(value)
|
|
||||||
return final_dict
|
return final_dict
|
||||||
|
|
||||||
|
|
||||||
@ -70,6 +80,45 @@ def get_user(user: User, original_user: Optional[User] = None) -> dict[str, Any]
|
|||||||
return user_data
|
return user_data
|
||||||
|
|
||||||
|
|
||||||
|
# pylint: disable=too-many-return-statements
|
||||||
|
def sanitize_item(value: Any) -> Any:
|
||||||
|
"""Sanitize a single item, ensure it is JSON parsable"""
|
||||||
|
if is_dataclass(value):
|
||||||
|
# Because asdict calls `copy.deepcopy(obj)` on everything that's not tuple/dict,
|
||||||
|
# and deepcopy doesn't work with HttpRequests (neither django nor rest_framework).
|
||||||
|
# Currently, the only dataclass that actually holds an http request is a PolicyRequest
|
||||||
|
if isinstance(value, PolicyRequest):
|
||||||
|
value.http_request = None
|
||||||
|
value = asdict(value)
|
||||||
|
if isinstance(value, dict):
|
||||||
|
return sanitize_dict(value)
|
||||||
|
if isinstance(value, list):
|
||||||
|
new_values = []
|
||||||
|
for item in value:
|
||||||
|
new_value = sanitize_item(item)
|
||||||
|
if new_value:
|
||||||
|
new_values.append(new_value)
|
||||||
|
return new_values
|
||||||
|
if isinstance(value, (User, AnonymousUser)):
|
||||||
|
return sanitize_dict(get_user(value))
|
||||||
|
if isinstance(value, models.Model):
|
||||||
|
return sanitize_dict(model_to_dict(value))
|
||||||
|
if isinstance(value, UUID):
|
||||||
|
return value.hex
|
||||||
|
if isinstance(value, (HttpRequest, WSGIRequest)):
|
||||||
|
return ...
|
||||||
|
if isinstance(value, City):
|
||||||
|
return GEOIP_READER.city_to_dict(value)
|
||||||
|
if isinstance(value, Path):
|
||||||
|
return str(value)
|
||||||
|
if isinstance(value, type):
|
||||||
|
return {
|
||||||
|
"type": value.__name__,
|
||||||
|
"module": value.__module__,
|
||||||
|
}
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
def sanitize_dict(source: dict[Any, Any]) -> dict[Any, Any]:
|
def sanitize_dict(source: dict[Any, Any]) -> dict[Any, Any]:
|
||||||
"""clean source of all Models that would interfere with the JSONField.
|
"""clean source of all Models that would interfere with the JSONField.
|
||||||
Models are replaced with a dictionary of {
|
Models are replaced with a dictionary of {
|
||||||
@ -79,32 +128,7 @@ def sanitize_dict(source: dict[Any, Any]) -> dict[Any, Any]:
|
|||||||
}"""
|
}"""
|
||||||
final_dict = {}
|
final_dict = {}
|
||||||
for key, value in source.items():
|
for key, value in source.items():
|
||||||
if is_dataclass(value):
|
new_value = sanitize_item(value)
|
||||||
# Because asdict calls `copy.deepcopy(obj)` on everything that's not tuple/dict,
|
if new_value is not ...:
|
||||||
# and deepcopy doesn't work with HttpRequests (neither django nor rest_framework).
|
final_dict[key] = new_value
|
||||||
# Currently, the only dataclass that actually holds an http request is a PolicyRequest
|
|
||||||
if isinstance(value, PolicyRequest):
|
|
||||||
value.http_request = None
|
|
||||||
value = asdict(value)
|
|
||||||
if isinstance(value, dict):
|
|
||||||
final_dict[key] = sanitize_dict(value)
|
|
||||||
elif isinstance(value, (User, AnonymousUser)):
|
|
||||||
final_dict[key] = sanitize_dict(get_user(value))
|
|
||||||
elif isinstance(value, models.Model):
|
|
||||||
final_dict[key] = sanitize_dict(model_to_dict(value))
|
|
||||||
elif isinstance(value, UUID):
|
|
||||||
final_dict[key] = value.hex
|
|
||||||
elif isinstance(value, (HttpRequest, WSGIRequest)):
|
|
||||||
continue
|
|
||||||
elif isinstance(value, City):
|
|
||||||
final_dict[key] = GEOIP_READER.city_to_dict(value)
|
|
||||||
elif isinstance(value, Path):
|
|
||||||
final_dict[key] = str(value)
|
|
||||||
elif isinstance(value, type):
|
|
||||||
final_dict[key] = {
|
|
||||||
"type": value.__name__,
|
|
||||||
"module": value.__module__,
|
|
||||||
}
|
|
||||||
else:
|
|
||||||
final_dict[key] = value
|
|
||||||
return final_dict
|
return final_dict
|
||||||
|
@ -20,7 +20,7 @@ from rest_framework.viewsets import ModelViewSet
|
|||||||
from structlog.stdlib import get_logger
|
from structlog.stdlib import get_logger
|
||||||
|
|
||||||
from authentik.api.decorators import permission_required
|
from authentik.api.decorators import permission_required
|
||||||
from authentik.blueprints.v1.exporter import Exporter
|
from authentik.blueprints.v1.exporter import FlowExporter
|
||||||
from authentik.blueprints.v1.importer import Importer
|
from authentik.blueprints.v1.importer import Importer
|
||||||
from authentik.core.api.used_by import UsedByMixin
|
from authentik.core.api.used_by import UsedByMixin
|
||||||
from authentik.core.api.utils import (
|
from authentik.core.api.utils import (
|
||||||
@ -198,7 +198,7 @@ class FlowViewSet(UsedByMixin, ModelViewSet):
|
|||||||
def export(self, request: Request, slug: str) -> Response:
|
def export(self, request: Request, slug: str) -> Response:
|
||||||
"""Export flow to .yaml file"""
|
"""Export flow to .yaml file"""
|
||||||
flow = self.get_object()
|
flow = self.get_object()
|
||||||
exporter = Exporter(flow)
|
exporter = FlowExporter(flow)
|
||||||
response = HttpResponse(content=exporter.export_to_string())
|
response = HttpResponse(content=exporter.export_to_string())
|
||||||
response["Content-Disposition"] = f'attachment; filename="{flow.slug}.yaml"'
|
response["Content-Disposition"] = f'attachment; filename="{flow.slug}.yaml"'
|
||||||
return response
|
return response
|
||||||
|
@ -28,7 +28,7 @@ class AuthentikFlowsConfig(ManagedAppConfig):
|
|||||||
"""Load flows signals"""
|
"""Load flows signals"""
|
||||||
self.import_module("authentik.flows.signals")
|
self.import_module("authentik.flows.signals")
|
||||||
|
|
||||||
def reconcile_stages_loaded(self):
|
def reconcile_load_stages(self):
|
||||||
"""Ensure all stages are loaded"""
|
"""Ensure all stages are loaded"""
|
||||||
from authentik.flows.models import Stage
|
from authentik.flows.models import Stage
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
"""outpost tasks"""
|
"""outpost tasks"""
|
||||||
from os import R_OK, access
|
from os import R_OK, access
|
||||||
from os.path import expanduser
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from socket import gethostname
|
from socket import gethostname
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
@ -240,25 +239,25 @@ def _outpost_single_update(outpost: Outpost, layer=None):
|
|||||||
def outpost_local_connection():
|
def outpost_local_connection():
|
||||||
"""Checks the local environment and create Service connections."""
|
"""Checks the local environment and create Service connections."""
|
||||||
if not CONFIG.y_bool("outposts.discover"):
|
if not CONFIG.y_bool("outposts.discover"):
|
||||||
LOGGER.debug("Outpost integration discovery is disabled")
|
LOGGER.info("Outpost integration discovery is disabled")
|
||||||
return
|
return
|
||||||
# Explicitly check against token filename, as that's
|
# Explicitly check against token filename, as that's
|
||||||
# only present when the integration is enabled
|
# only present when the integration is enabled
|
||||||
if Path(SERVICE_TOKEN_FILENAME).exists():
|
if Path(SERVICE_TOKEN_FILENAME).exists():
|
||||||
LOGGER.debug("Detected in-cluster Kubernetes Config")
|
LOGGER.info("Detected in-cluster Kubernetes Config")
|
||||||
if not KubernetesServiceConnection.objects.filter(local=True).exists():
|
if not KubernetesServiceConnection.objects.filter(local=True).exists():
|
||||||
LOGGER.debug("Created Service Connection for in-cluster")
|
LOGGER.debug("Created Service Connection for in-cluster")
|
||||||
KubernetesServiceConnection.objects.create(
|
KubernetesServiceConnection.objects.create(
|
||||||
name="Local Kubernetes Cluster", local=True, kubeconfig={}
|
name="Local Kubernetes Cluster", local=True, kubeconfig={}
|
||||||
)
|
)
|
||||||
# For development, check for the existence of a kubeconfig file
|
# For development, check for the existence of a kubeconfig file
|
||||||
kubeconfig_path = expanduser(KUBE_CONFIG_DEFAULT_LOCATION)
|
kubeconfig_path = Path(KUBE_CONFIG_DEFAULT_LOCATION).expanduser()
|
||||||
if Path(kubeconfig_path).exists():
|
if kubeconfig_path.exists():
|
||||||
LOGGER.debug("Detected kubeconfig")
|
LOGGER.info("Detected kubeconfig")
|
||||||
kubeconfig_local_name = f"k8s-{gethostname()}"
|
kubeconfig_local_name = f"k8s-{gethostname()}"
|
||||||
if not KubernetesServiceConnection.objects.filter(name=kubeconfig_local_name).exists():
|
if not KubernetesServiceConnection.objects.filter(name=kubeconfig_local_name).exists():
|
||||||
LOGGER.debug("Creating kubeconfig Service Connection")
|
LOGGER.debug("Creating kubeconfig Service Connection")
|
||||||
with open(kubeconfig_path, "r", encoding="utf8") as _kubeconfig:
|
with kubeconfig_path.open("r", encoding="utf8") as _kubeconfig:
|
||||||
KubernetesServiceConnection.objects.create(
|
KubernetesServiceConnection.objects.create(
|
||||||
name=kubeconfig_local_name,
|
name=kubeconfig_local_name,
|
||||||
kubeconfig=yaml.safe_load(_kubeconfig),
|
kubeconfig=yaml.safe_load(_kubeconfig),
|
||||||
@ -266,7 +265,7 @@ def outpost_local_connection():
|
|||||||
unix_socket_path = urlparse(DEFAULT_UNIX_SOCKET).path
|
unix_socket_path = urlparse(DEFAULT_UNIX_SOCKET).path
|
||||||
socket = Path(unix_socket_path)
|
socket = Path(unix_socket_path)
|
||||||
if socket.exists() and access(socket, R_OK):
|
if socket.exists() and access(socket, R_OK):
|
||||||
LOGGER.debug("Detected local docker socket")
|
LOGGER.info("Detected local docker socket")
|
||||||
if len(DockerServiceConnection.objects.filter(local=True)) == 0:
|
if len(DockerServiceConnection.objects.filter(local=True)) == 0:
|
||||||
LOGGER.debug("Created Service Connection for docker")
|
LOGGER.debug("Created Service Connection for docker")
|
||||||
DockerServiceConnection.objects.create(
|
DockerServiceConnection.objects.create(
|
||||||
|
@ -70,7 +70,6 @@ class PolicyAccessView(AccessMixin, View):
|
|||||||
# Check if user is unauthenticated, so we pass the application
|
# Check if user is unauthenticated, so we pass the application
|
||||||
# for the identification stage
|
# for the identification stage
|
||||||
if not request.user.is_authenticated:
|
if not request.user.is_authenticated:
|
||||||
LOGGER.warning("user not authenticated")
|
|
||||||
return self.handle_no_permission()
|
return self.handle_no_permission()
|
||||||
# Check permissions
|
# Check permissions
|
||||||
result = self.user_has_access()
|
result = self.user_has_access()
|
||||||
|
@ -10,7 +10,7 @@ from django.http.response import HttpResponseRedirect
|
|||||||
from django.utils.cache import patch_vary_headers
|
from django.utils.cache import patch_vary_headers
|
||||||
from structlog.stdlib import get_logger
|
from structlog.stdlib import get_logger
|
||||||
|
|
||||||
from authentik.core.middleware import KEY_USER
|
from authentik.core.middleware import CTX_AUTH_VIA, KEY_USER
|
||||||
from authentik.events.models import Event, EventAction
|
from authentik.events.models import Event, EventAction
|
||||||
from authentik.providers.oauth2.errors import BearerTokenError
|
from authentik.providers.oauth2.errors import BearerTokenError
|
||||||
from authentik.providers.oauth2.models import OAuth2Provider, RefreshToken
|
from authentik.providers.oauth2.models import OAuth2Provider, RefreshToken
|
||||||
@ -166,6 +166,7 @@ def protected_resource_view(scopes: list[str]):
|
|||||||
] = f'error="{error.code}", error_description="{error.description}"'
|
] = f'error="{error.code}", error_description="{error.description}"'
|
||||||
return response
|
return response
|
||||||
kwargs["token"] = token
|
kwargs["token"] = token
|
||||||
|
CTX_AUTH_VIA.set("oauth_token")
|
||||||
response = view(request, *args, **kwargs)
|
response = view(request, *args, **kwargs)
|
||||||
setattr(response, "ak_context", {})
|
setattr(response, "ak_context", {})
|
||||||
response.ak_context[KEY_USER] = token.user.username
|
response.ak_context[KEY_USER] = token.user.username
|
||||||
|
@ -24,12 +24,7 @@ from authentik.flows.challenge import (
|
|||||||
HttpChallengeResponse,
|
HttpChallengeResponse,
|
||||||
)
|
)
|
||||||
from authentik.flows.models import in_memory_stage
|
from authentik.flows.models import in_memory_stage
|
||||||
from authentik.flows.planner import (
|
from authentik.flows.planner import PLAN_CONTEXT_APPLICATION, PLAN_CONTEXT_SSO, FlowPlanner
|
||||||
PLAN_CONTEXT_APPLICATION,
|
|
||||||
PLAN_CONTEXT_SSO,
|
|
||||||
FlowPlan,
|
|
||||||
FlowPlanner,
|
|
||||||
)
|
|
||||||
from authentik.flows.stage import StageView
|
from authentik.flows.stage import StageView
|
||||||
from authentik.flows.views.executor import SESSION_KEY_PLAN
|
from authentik.flows.views.executor import SESSION_KEY_PLAN
|
||||||
from authentik.lib.utils.time import timedelta_from_string
|
from authentik.lib.utils.time import timedelta_from_string
|
||||||
@ -353,7 +348,7 @@ class AuthorizationFlowInitView(PolicyAccessView):
|
|||||||
# planner.use_cache = False
|
# planner.use_cache = False
|
||||||
planner.allow_empty_flows = True
|
planner.allow_empty_flows = True
|
||||||
scope_descriptions = UserInfoView().get_scope_descriptions(self.params.scope)
|
scope_descriptions = UserInfoView().get_scope_descriptions(self.params.scope)
|
||||||
plan: FlowPlan = planner.plan(
|
plan = planner.plan(
|
||||||
self.request,
|
self.request,
|
||||||
{
|
{
|
||||||
PLAN_CONTEXT_SSO: True,
|
PLAN_CONTEXT_SSO: True,
|
||||||
@ -482,7 +477,7 @@ class OAuthFulfillmentStage(StageView):
|
|||||||
GrantTypes.HYBRID,
|
GrantTypes.HYBRID,
|
||||||
]:
|
]:
|
||||||
code = self.params.create_code(self.request)
|
code = self.params.create_code(self.request)
|
||||||
code.save(force_insert=True)
|
code.save()
|
||||||
|
|
||||||
if self.params.response_mode == ResponseMode.QUERY:
|
if self.params.response_mode == ResponseMode.QUERY:
|
||||||
query_params = parse_qs(uri.query)
|
query_params = parse_qs(uri.query)
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
"""authentik Proxy app"""
|
"""authentik Proxy app"""
|
||||||
from django.apps import AppConfig
|
from authentik.blueprints.manager import ManagedAppConfig
|
||||||
|
|
||||||
|
|
||||||
class AuthentikProviderProxyConfig(AppConfig):
|
class AuthentikProviderProxyConfig(ManagedAppConfig):
|
||||||
"""authentik proxy app"""
|
"""authentik proxy app"""
|
||||||
|
|
||||||
name = "authentik.providers.proxy"
|
name = "authentik.providers.proxy"
|
||||||
label = "authentik_providers_proxy"
|
label = "authentik_providers_proxy"
|
||||||
verbose_name = "authentik Providers.Proxy"
|
verbose_name = "authentik Providers.Proxy"
|
||||||
|
default = True
|
||||||
|
@ -72,7 +72,7 @@ class BaseOAuthClient:
|
|||||||
# Special handling for scope, since it's set as array
|
# Special handling for scope, since it's set as array
|
||||||
# to make additional scopes easier
|
# to make additional scopes easier
|
||||||
args["scope"] = " ".join(sorted(set(args["scope"])))
|
args["scope"] = " ".join(sorted(set(args["scope"])))
|
||||||
params = urlencode(args, quote_via=quote)
|
params = urlencode(args, quote_via=quote, doseq=True)
|
||||||
LOGGER.info("redirect args", **args)
|
LOGGER.info("redirect args", **args)
|
||||||
return urlunparse(parsed_url._replace(query=params))
|
return urlunparse(parsed_url._replace(query=params))
|
||||||
|
|
||||||
|
@ -15,7 +15,8 @@ def update_default_backends(apps: Apps, schema_editor: BaseDatabaseSchemaEditor)
|
|||||||
if not stages.exists():
|
if not stages.exists():
|
||||||
return
|
return
|
||||||
stage = stages.first()
|
stage = stages.first()
|
||||||
stage.backends.append(BACKEND_APP_PASSWORD)
|
if BACKEND_APP_PASSWORD not in stage.backends:
|
||||||
|
stage.backends.append(BACKEND_APP_PASSWORD)
|
||||||
stage.save()
|
stage.save()
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@ metadata:
|
|||||||
entries:
|
entries:
|
||||||
- attrs:
|
- attrs:
|
||||||
designation: authentication
|
designation: authentication
|
||||||
layout: stacked
|
|
||||||
name: Welcome to authentik!
|
name: Welcome to authentik!
|
||||||
title: Welcome to authentik!
|
title: Welcome to authentik!
|
||||||
identifiers:
|
identifiers:
|
||||||
@ -16,22 +15,12 @@ entries:
|
|||||||
- authentik.core.auth.InbuiltBackend
|
- authentik.core.auth.InbuiltBackend
|
||||||
- authentik.sources.ldap.auth.LDAPBackend
|
- authentik.sources.ldap.auth.LDAPBackend
|
||||||
- authentik.core.auth.TokenBackend
|
- authentik.core.auth.TokenBackend
|
||||||
- authentik.core.auth.TokenBackend
|
|
||||||
configure_flow: !Find [authentik_flows.flow, [slug, default-password-change]]
|
configure_flow: !Find [authentik_flows.flow, [slug, default-password-change]]
|
||||||
failed_attempts_before_cancel: 5
|
|
||||||
identifiers:
|
identifiers:
|
||||||
name: default-authentication-password
|
name: default-authentication-password
|
||||||
id: default-authentication-password
|
id: default-authentication-password
|
||||||
model: authentik_stages_password.passwordstage
|
model: authentik_stages_password.passwordstage
|
||||||
- attrs:
|
- identifiers:
|
||||||
device_classes:
|
|
||||||
- static
|
|
||||||
- totp
|
|
||||||
- webauthn
|
|
||||||
- duo
|
|
||||||
- sms
|
|
||||||
not_configured_action: skip
|
|
||||||
identifiers:
|
|
||||||
name: default-authentication-mfa-validation
|
name: default-authentication-mfa-validation
|
||||||
id: default-authentication-mfa-validation
|
id: default-authentication-mfa-validation
|
||||||
model: authentik_stages_authenticator_validate.authenticatorvalidatestage
|
model: authentik_stages_authenticator_validate.authenticatorvalidatestage
|
||||||
|
@ -5,7 +5,6 @@ entries:
|
|||||||
- attrs:
|
- attrs:
|
||||||
designation: stage_configuration
|
designation: stage_configuration
|
||||||
name: default-authenticator-static-setup
|
name: default-authenticator-static-setup
|
||||||
policy_engine_mode: any
|
|
||||||
title: Setup Static OTP Tokens
|
title: Setup Static OTP Tokens
|
||||||
identifiers:
|
identifiers:
|
||||||
slug: default-authenticator-static-setup
|
slug: default-authenticator-static-setup
|
||||||
|
@ -5,7 +5,6 @@ entries:
|
|||||||
- attrs:
|
- attrs:
|
||||||
designation: stage_configuration
|
designation: stage_configuration
|
||||||
name: default-authenticator-webauthn-setup
|
name: default-authenticator-webauthn-setup
|
||||||
policy_engine_mode: any
|
|
||||||
title: Setup WebAuthn
|
title: Setup WebAuthn
|
||||||
identifiers:
|
identifiers:
|
||||||
slug: default-authenticator-webauthn-setup
|
slug: default-authenticator-webauthn-setup
|
||||||
|
@ -48,9 +48,6 @@
|
|||||||
"model": {
|
"model": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": [
|
||||||
"auth.permission",
|
|
||||||
"contenttypes.contenttype",
|
|
||||||
"sessions.session",
|
|
||||||
"authentik_crypto.certificatekeypair",
|
"authentik_crypto.certificatekeypair",
|
||||||
"authentik_events.event",
|
"authentik_events.event",
|
||||||
"authentik_events.notificationtransport",
|
"authentik_events.notificationtransport",
|
||||||
@ -114,15 +111,6 @@
|
|||||||
"authentik_stages_user_write.userwritestage",
|
"authentik_stages_user_write.userwritestage",
|
||||||
"authentik_tenants.tenant",
|
"authentik_tenants.tenant",
|
||||||
"authentik_blueprints.blueprintinstance",
|
"authentik_blueprints.blueprintinstance",
|
||||||
"guardian.userobjectpermission",
|
|
||||||
"guardian.groupobjectpermission",
|
|
||||||
"otp_static.staticdevice",
|
|
||||||
"otp_static.statictoken",
|
|
||||||
"otp_totp.totpdevice",
|
|
||||||
"silk.request",
|
|
||||||
"silk.response",
|
|
||||||
"silk.sqlquery",
|
|
||||||
"silk.profile",
|
|
||||||
"authentik_core.group",
|
"authentik_core.group",
|
||||||
"authentik_core.user",
|
"authentik_core.user",
|
||||||
"authentik_core.application",
|
"authentik_core.application",
|
||||||
|
@ -29,7 +29,7 @@ services:
|
|||||||
retries: 5
|
retries: 5
|
||||||
timeout: 3s
|
timeout: 3s
|
||||||
server:
|
server:
|
||||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.8.1}
|
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.8.2}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command: server
|
command: server
|
||||||
environment:
|
environment:
|
||||||
@ -50,7 +50,7 @@ services:
|
|||||||
- "0.0.0.0:${AUTHENTIK_PORT_HTTP:-9000}:9000"
|
- "0.0.0.0:${AUTHENTIK_PORT_HTTP:-9000}:9000"
|
||||||
- "0.0.0.0:${AUTHENTIK_PORT_HTTPS:-9443}:9443"
|
- "0.0.0.0:${AUTHENTIK_PORT_HTTPS:-9443}:9443"
|
||||||
worker:
|
worker:
|
||||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.8.1}
|
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.8.2}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command: worker
|
command: worker
|
||||||
environment:
|
environment:
|
||||||
|
2
go.mod
2
go.mod
@ -24,7 +24,7 @@ require (
|
|||||||
github.com/quasoft/memstore v0.0.0-20191010062613-2bce066d2b0b
|
github.com/quasoft/memstore v0.0.0-20191010062613-2bce066d2b0b
|
||||||
github.com/sirupsen/logrus v1.9.0
|
github.com/sirupsen/logrus v1.9.0
|
||||||
github.com/stretchr/testify v1.8.0
|
github.com/stretchr/testify v1.8.0
|
||||||
goauthentik.io/api/v3 v3.2022073.8
|
goauthentik.io/api/v3 v3.2022081.1
|
||||||
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b
|
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b
|
||||||
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f
|
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f
|
||||||
gopkg.in/boj/redistore.v1 v1.0.0-20160128113310-fc113767cd6b
|
gopkg.in/boj/redistore.v1 v1.0.0-20160128113310-fc113767cd6b
|
||||||
|
4
go.sum
4
go.sum
@ -367,8 +367,8 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
|||||||
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0=
|
go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0=
|
||||||
goauthentik.io/api/v3 v3.2022073.8 h1:BwTDSNcbsfN0PUfJ0qnwUGJdp2gTMXryYMvUQfXxrZg=
|
goauthentik.io/api/v3 v3.2022081.1 h1:/V6ktaQ9O8zhRHTkiswxgqg16fe3FL++9UoT9+S97NA=
|
||||||
goauthentik.io/api/v3 v3.2022073.8/go.mod h1:QM9J32HgYE4gL71lWAfAoXSPdSmLVLW08itfLI3Mo10=
|
goauthentik.io/api/v3 v3.2022081.1/go.mod h1:QM9J32HgYE4gL71lWAfAoXSPdSmLVLW08itfLI3Mo10=
|
||||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
|
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
|
||||||
|
@ -29,4 +29,4 @@ func UserAgent() string {
|
|||||||
return fmt.Sprintf("authentik@%s", FullVersion())
|
return fmt.Sprintf("authentik@%s", FullVersion())
|
||||||
}
|
}
|
||||||
|
|
||||||
const VERSION = "2022.8.1"
|
const VERSION = "2022.8.2"
|
||||||
|
@ -148,9 +148,11 @@ func NewApplication(p api.ProxyOutpostConfig, c *http.Client, cs *ak.CryptoStore
|
|||||||
mux.Use(sentryhttp.New(sentryhttp.Options{}).Handle)
|
mux.Use(sentryhttp.New(sentryhttp.Options{}).Handle)
|
||||||
mux.Use(func(inner http.Handler) http.Handler {
|
mux.Use(func(inner http.Handler) http.Handler {
|
||||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
if _, set := r.URL.Query()[CallbackSignature]; set {
|
if strings.EqualFold(r.URL.Query().Get(CallbackSignature), "true") {
|
||||||
|
a.log.Debug("handling OAuth Callback from querystring signature")
|
||||||
a.handleAuthCallback(w, r)
|
a.handleAuthCallback(w, r)
|
||||||
} else if _, set := r.URL.Query()[LogoutSignature]; set {
|
} else if strings.EqualFold(r.URL.Query().Get(LogoutSignature), "true") {
|
||||||
|
a.log.Debug("handling OAuth Logout from querystring signature")
|
||||||
a.handleSignOut(w, r)
|
a.handleSignOut(w, r)
|
||||||
} else {
|
} else {
|
||||||
inner.ServeHTTP(w, r)
|
inner.ServeHTTP(w, r)
|
||||||
@ -201,6 +203,16 @@ func (a *Application) Mode() api.ProxyMode {
|
|||||||
return *a.proxyConfig.Mode.Get()
|
return *a.proxyConfig.Mode.Get()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *Application) HasQuerySignature(r *http.Request) bool {
|
||||||
|
if strings.EqualFold(r.URL.Query().Get(CallbackSignature), "true") {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if strings.EqualFold(r.URL.Query().Get(LogoutSignature), "true") {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func (a *Application) ProxyConfig() api.ProxyOutpostConfig {
|
func (a *Application) ProxyConfig() api.ProxyOutpostConfig {
|
||||||
return a.proxyConfig
|
return a.proxyConfig
|
||||||
}
|
}
|
||||||
|
@ -154,6 +154,7 @@ func (a *Application) forwardHandleNginx(rw http.ResponseWriter, r *http.Request
|
|||||||
func (a *Application) forwardHandleEnvoy(rw http.ResponseWriter, r *http.Request) {
|
func (a *Application) forwardHandleEnvoy(rw http.ResponseWriter, r *http.Request) {
|
||||||
a.log.WithField("header", r.Header).Trace("tracing headers for debug")
|
a.log.WithField("header", r.Header).Trace("tracing headers for debug")
|
||||||
r.URL.Path = strings.TrimPrefix(r.URL.Path, envoyPrefix)
|
r.URL.Path = strings.TrimPrefix(r.URL.Path, envoyPrefix)
|
||||||
|
r.URL.Host = r.Host
|
||||||
fwd := r.URL
|
fwd := r.URL
|
||||||
// Check if we're authenticated, or the request path is on the allowlist
|
// Check if we're authenticated, or the request path is on the allowlist
|
||||||
claims, err := a.getClaims(r)
|
claims, err := a.getClaims(r)
|
||||||
|
@ -24,7 +24,8 @@ func TestForwardHandleEnvoy_Single_Skip(t *testing.T) {
|
|||||||
|
|
||||||
func TestForwardHandleEnvoy_Single_Headers(t *testing.T) {
|
func TestForwardHandleEnvoy_Single_Headers(t *testing.T) {
|
||||||
a := newTestApplication()
|
a := newTestApplication()
|
||||||
req, _ := http.NewRequest("GET", "http://test.goauthentik.io/app", nil)
|
req, _ := http.NewRequest("GET", "http:///app", nil)
|
||||||
|
req.Host = "ext.t.goauthentik.io"
|
||||||
|
|
||||||
rr := httptest.NewRecorder()
|
rr := httptest.NewRecorder()
|
||||||
a.forwardHandleEnvoy(rr, req)
|
a.forwardHandleEnvoy(rr, req)
|
||||||
@ -39,7 +40,7 @@ func TestForwardHandleEnvoy_Single_Headers(t *testing.T) {
|
|||||||
"state": []string{s.Values[constants.SessionOAuthState].([]string)[0]},
|
"state": []string{s.Values[constants.SessionOAuthState].([]string)[0]},
|
||||||
}
|
}
|
||||||
assert.Equal(t, fmt.Sprintf("http://fake-auth.t.goauthentik.io/auth?%s", shouldUrl.Encode()), loc.String())
|
assert.Equal(t, fmt.Sprintf("http://fake-auth.t.goauthentik.io/auth?%s", shouldUrl.Encode()), loc.String())
|
||||||
assert.Equal(t, "http://test.goauthentik.io/app", s.Values[constants.SessionRedirect])
|
assert.Equal(t, "http://ext.t.goauthentik.io/app", s.Values[constants.SessionRedirect])
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestForwardHandleEnvoy_Single_Claims(t *testing.T) {
|
func TestForwardHandleEnvoy_Single_Claims(t *testing.T) {
|
||||||
@ -91,7 +92,8 @@ func TestForwardHandleEnvoy_Domain_Header(t *testing.T) {
|
|||||||
a.proxyConfig.Mode = *api.NewNullableProxyMode(api.PROXYMODE_FORWARD_DOMAIN.Ptr())
|
a.proxyConfig.Mode = *api.NewNullableProxyMode(api.PROXYMODE_FORWARD_DOMAIN.Ptr())
|
||||||
a.proxyConfig.CookieDomain = api.PtrString("foo")
|
a.proxyConfig.CookieDomain = api.PtrString("foo")
|
||||||
a.proxyConfig.ExternalHost = "http://auth.test.goauthentik.io"
|
a.proxyConfig.ExternalHost = "http://auth.test.goauthentik.io"
|
||||||
req, _ := http.NewRequest("GET", "http://test.goauthentik.io/app", nil)
|
req, _ := http.NewRequest("GET", "http:///app", nil)
|
||||||
|
req.Host = "test.goauthentik.io"
|
||||||
|
|
||||||
rr := httptest.NewRecorder()
|
rr := httptest.NewRecorder()
|
||||||
a.forwardHandleEnvoy(rr, req)
|
a.forwardHandleEnvoy(rr, req)
|
||||||
|
@ -66,13 +66,13 @@ func NewProxyServer(ac *ak.APIController) *ProxyServer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ps *ProxyServer) HandleHost(rw http.ResponseWriter, r *http.Request) bool {
|
func (ps *ProxyServer) HandleHost(rw http.ResponseWriter, r *http.Request) bool {
|
||||||
a, host := ps.lookupApp(r)
|
a, _ := ps.lookupApp(r)
|
||||||
if a != nil {
|
if a == nil {
|
||||||
if a.Mode() == api.PROXYMODE_PROXY {
|
return false
|
||||||
ps.log.WithField("host", host).Trace("routing to proxy outpost")
|
}
|
||||||
a.ServeHTTP(rw, r)
|
if a.HasQuerySignature(r) || a.Mode() == api.PROXYMODE_PROXY {
|
||||||
return true
|
a.ServeHTTP(rw, r)
|
||||||
}
|
return true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -9,9 +9,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
"goauthentik.io/internal/outpost/proxyv2/application"
|
|
||||||
"goauthentik.io/internal/utils/sentry"
|
"goauthentik.io/internal/utils/sentry"
|
||||||
"goauthentik.io/internal/utils/web"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (ws *WebServer) configureProxy() {
|
func (ws *WebServer) configureProxy() {
|
||||||
@ -53,9 +51,7 @@ func (ws *WebServer) configureProxy() {
|
|||||||
}
|
}
|
||||||
before := time.Now()
|
before := time.Now()
|
||||||
if ws.ProxyServer != nil {
|
if ws.ProxyServer != nil {
|
||||||
_, oauthCallbackSet := r.URL.Query()[application.CallbackSignature]
|
if ws.ProxyServer.HandleHost(rw, r) {
|
||||||
_, logoutSet := r.URL.Query()[application.LogoutSignature]
|
|
||||||
if ws.ProxyServer.HandleHost(rw, r) || oauthCallbackSet || logoutSet {
|
|
||||||
Requests.With(prometheus.Labels{
|
Requests.With(prometheus.Labels{
|
||||||
"dest": "embedded_outpost",
|
"dest": "embedded_outpost",
|
||||||
}).Observe(float64(time.Since(before)))
|
}).Observe(float64(time.Since(before)))
|
||||||
@ -65,7 +61,6 @@ func (ws *WebServer) configureProxy() {
|
|||||||
Requests.With(prometheus.Labels{
|
Requests.With(prometheus.Labels{
|
||||||
"dest": "py",
|
"dest": "py",
|
||||||
}).Observe(float64(time.Since(before)))
|
}).Observe(float64(time.Since(before)))
|
||||||
ws.log.WithField("host", web.GetHost(r)).Trace("routing to application server")
|
|
||||||
rp.ServeHTTP(rw, r)
|
rp.ServeHTTP(rw, r)
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,10 @@ elif [[ "$1" == "worker" ]]; then
|
|||||||
wait_for_db
|
wait_for_db
|
||||||
echo "worker" > $MODE_FILE
|
echo "worker" > $MODE_FILE
|
||||||
check_if_root "celery -A authentik.root.celery worker -Ofair --max-tasks-per-child=1 --autoscale 3,1 -E -B -s /tmp/celerybeat-schedule -Q authentik,authentik_scheduled,authentik_events"
|
check_if_root "celery -A authentik.root.celery worker -Ofair --max-tasks-per-child=1 --autoscale 3,1 -E -B -s /tmp/celerybeat-schedule -Q authentik,authentik_scheduled,authentik_events"
|
||||||
|
elif [[ "$1" == "worker-status" ]]; then
|
||||||
|
wait_for_db
|
||||||
|
celery -A authentik.root.celery flower \
|
||||||
|
--port=9000
|
||||||
elif [[ "$1" == "bash" ]]; then
|
elif [[ "$1" == "bash" ]]; then
|
||||||
/bin/bash
|
/bin/bash
|
||||||
elif [[ "$1" == "test-all" ]]; then
|
elif [[ "$1" == "test-all" ]]; then
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2022-07-31 14:22+0000\n"
|
"POT-Creation-Date: 2022-08-18 14:31+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -31,18 +31,28 @@ msgstr ""
|
|||||||
msgid "Validation Error"
|
msgid "Validation Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/blueprints/models.py:18
|
#: authentik/blueprints/models.py:29
|
||||||
msgid "Managed by authentik"
|
msgid "Managed by authentik"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/blueprints/models.py:69
|
#: authentik/blueprints/models.py:98
|
||||||
msgid "Blueprint Instance"
|
msgid "Blueprint Instance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/blueprints/models.py:70
|
#: authentik/blueprints/models.py:99
|
||||||
msgid "Blueprint Instances"
|
msgid "Blueprint Instances"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: authentik/blueprints/v1/exporter.py:50
|
||||||
|
#, python-format
|
||||||
|
msgid "authentik Export - %(date)s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: authentik/blueprints/v1/tasks.py:103 authentik/crypto/tasks.py:93
|
||||||
|
#, python-format
|
||||||
|
msgid "Successfully imported %(count)d files."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/api/providers.py:89
|
#: authentik/core/api/providers.py:89
|
||||||
msgid "SAML Provider from Metadata"
|
msgid "SAML Provider from Metadata"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -67,95 +77,95 @@ msgstr ""
|
|||||||
msgid "Users added to this group will be superusers."
|
msgid "Users added to this group will be superusers."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:152
|
#: authentik/core/models.py:153
|
||||||
msgid "User's display name."
|
msgid "User's display name."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:251 authentik/providers/oauth2/models.py:322
|
#: authentik/core/models.py:252 authentik/providers/oauth2/models.py:322
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:252
|
#: authentik/core/models.py:253
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:263
|
#: authentik/core/models.py:264
|
||||||
msgid "Flow used when authorizing this provider."
|
msgid "Flow used when authorizing this provider."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:296
|
#: authentik/core/models.py:297
|
||||||
msgid "Application's display Name."
|
msgid "Application's display Name."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:297
|
#: authentik/core/models.py:298
|
||||||
msgid "Internal application name, used in URLs."
|
msgid "Internal application name, used in URLs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:309
|
#: authentik/core/models.py:310
|
||||||
msgid "Open launch URL in a new browser tab or window."
|
msgid "Open launch URL in a new browser tab or window."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:374
|
#: authentik/core/models.py:375
|
||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:375
|
#: authentik/core/models.py:376
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:381
|
#: authentik/core/models.py:382
|
||||||
msgid "Use the source-specific identifier"
|
msgid "Use the source-specific identifier"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:389
|
#: authentik/core/models.py:390
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use the user's email address, but deny enrollment when the email address "
|
"Use the user's email address, but deny enrollment when the email address "
|
||||||
"already exists."
|
"already exists."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:398
|
#: authentik/core/models.py:399
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use the user's username, but deny enrollment when the username already "
|
"Use the user's username, but deny enrollment when the username already "
|
||||||
"exists."
|
"exists."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:405
|
#: authentik/core/models.py:406
|
||||||
msgid "Source's display Name."
|
msgid "Source's display Name."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:406
|
#: authentik/core/models.py:407
|
||||||
msgid "Internal source name, used in URLs."
|
msgid "Internal source name, used in URLs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:419
|
#: authentik/core/models.py:420
|
||||||
msgid "Flow to use when authenticating existing users."
|
msgid "Flow to use when authenticating existing users."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:428
|
#: authentik/core/models.py:429
|
||||||
msgid "Flow to use when enrolling new users."
|
msgid "Flow to use when enrolling new users."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:589
|
#: authentik/core/models.py:590
|
||||||
msgid "Token"
|
msgid "Token"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:590
|
#: authentik/core/models.py:591
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:633
|
#: authentik/core/models.py:634
|
||||||
msgid "Property Mapping"
|
msgid "Property Mapping"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:634
|
#: authentik/core/models.py:635
|
||||||
msgid "Property Mappings"
|
msgid "Property Mappings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:670
|
#: authentik/core/models.py:671
|
||||||
msgid "Authenticated Session"
|
msgid "Authenticated Session"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/models.py:671
|
#: authentik/core/models.py:672
|
||||||
msgid "Authenticated Sessions"
|
msgid "Authenticated Sessions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -229,7 +239,7 @@ msgid "Powered by authentik"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/core/views/apps.py:48
|
#: authentik/core/views/apps.py:48
|
||||||
#: authentik/providers/oauth2/views/authorize.py:364
|
#: authentik/providers/oauth2/views/authorize.py:359
|
||||||
#: authentik/providers/saml/views/sso.py:69
|
#: authentik/providers/saml/views/sso.py:69
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You're about to sign into %(application)s."
|
msgid "You're about to sign into %(application)s."
|
||||||
@ -257,11 +267,6 @@ msgstr ""
|
|||||||
msgid "Certificate-Key Pairs"
|
msgid "Certificate-Key Pairs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/crypto/tasks.py:93
|
|
||||||
#, python-format
|
|
||||||
msgid "Successfully imported %(count)d files."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: authentik/events/models.py:294
|
#: authentik/events/models.py:294
|
||||||
msgid "Event"
|
msgid "Event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -352,17 +357,17 @@ msgstr ""
|
|||||||
msgid "Task has not been run yet."
|
msgid "Task has not been run yet."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/flows/api/flows.py:228 authentik/flows/api/flows.py:250
|
#: authentik/flows/api/flows.py:229 authentik/flows/api/flows.py:251
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Policy (%(type)s)"
|
msgid "Policy (%(type)s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/flows/api/flows.py:259
|
#: authentik/flows/api/flows.py:260
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Stage (%(type)s)"
|
msgid "Stage (%(type)s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/flows/api/flows.py:374
|
#: authentik/flows/api/flows.py:375
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Flow not applicable to current user/request: %(messages)s"
|
msgid "Flow not applicable to current user/request: %(messages)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -855,26 +860,26 @@ msgstr ""
|
|||||||
msgid "OAuth2 Tokens"
|
msgid "OAuth2 Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/providers/oauth2/views/authorize.py:418
|
#: authentik/providers/oauth2/views/authorize.py:413
|
||||||
#: authentik/providers/saml/views/flows.py:86
|
#: authentik/providers/saml/views/flows.py:86
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Redirecting to %(app)s..."
|
msgid "Redirecting to %(app)s..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/providers/oauth2/views/userinfo.py:43
|
#: authentik/providers/oauth2/views/userinfo.py:41
|
||||||
#: authentik/providers/oauth2/views/userinfo.py:44
|
#: authentik/providers/oauth2/views/userinfo.py:42
|
||||||
msgid "GitHub Compatibility: Access your User Information"
|
msgid "GitHub Compatibility: Access your User Information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/providers/oauth2/views/userinfo.py:45
|
#: authentik/providers/oauth2/views/userinfo.py:43
|
||||||
msgid "GitHub Compatibility: Access you Email addresses"
|
msgid "GitHub Compatibility: Access you Email addresses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/providers/oauth2/views/userinfo.py:46
|
#: authentik/providers/oauth2/views/userinfo.py:44
|
||||||
msgid "GitHub Compatibility: Access your Groups"
|
msgid "GitHub Compatibility: Access your Groups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/providers/oauth2/views/userinfo.py:47
|
#: authentik/providers/oauth2/views/userinfo.py:45
|
||||||
msgid "authentik API Access on behalf of your user"
|
msgid "authentik API Access on behalf of your user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1649,7 +1654,7 @@ msgstr ""
|
|||||||
msgid "Identification Stages"
|
msgid "Identification Stages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentik/stages/identification/stage.py:176
|
#: authentik/stages/identification/stage.py:173
|
||||||
msgid "Log in"
|
msgid "Log in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
850
poetry.lock
generated
850
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@ -97,7 +97,7 @@ addopts = "-p no:celery --junitxml=unittest.xml"
|
|||||||
|
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "authentik"
|
name = "authentik"
|
||||||
version = "2022.8.1"
|
version = "2022.8.2"
|
||||||
description = ""
|
description = ""
|
||||||
authors = ["authentik Team <hello@goauthentik.io>"]
|
authors = ["authentik Team <hello@goauthentik.io>"]
|
||||||
|
|
||||||
@ -149,6 +149,7 @@ wsproto = "*"
|
|||||||
xmlsec = "*"
|
xmlsec = "*"
|
||||||
twilio = "*"
|
twilio = "*"
|
||||||
dumb-init = "*"
|
dumb-init = "*"
|
||||||
|
flower = "*"
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
[tool.poetry.dev-dependencies]
|
||||||
bandit = "*"
|
bandit = "*"
|
||||||
|
7060
schema.yml
7060
schema.yml
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
|||||||
"""test OAuth Source"""
|
"""test OAuth Source"""
|
||||||
from os.path import abspath
|
from pathlib import Path
|
||||||
from sys import platform
|
from sys import platform
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
@ -116,7 +116,7 @@ class TestSourceOAuth2(SeleniumTestCase):
|
|||||||
interval=5 * 100 * 1000000,
|
interval=5 * 100 * 1000000,
|
||||||
start_period=1 * 100 * 1000000,
|
start_period=1 * 100 * 1000000,
|
||||||
),
|
),
|
||||||
"volumes": {abspath(CONFIG_PATH): {"bind": "/config.yml", "mode": "ro"}},
|
"volumes": {str(Path(CONFIG_PATH).absolute()): {"bind": "/config.yml", "mode": "ro"}},
|
||||||
}
|
}
|
||||||
|
|
||||||
def create_objects(self):
|
def create_objects(self):
|
||||||
|
166
web/package-lock.json
generated
166
web/package-lock.json
generated
@ -21,13 +21,13 @@
|
|||||||
"@codemirror/legacy-modes": "^6.1.0",
|
"@codemirror/legacy-modes": "^6.1.0",
|
||||||
"@formatjs/intl-listformat": "^7.0.3",
|
"@formatjs/intl-listformat": "^7.0.3",
|
||||||
"@fortawesome/fontawesome-free": "^6.1.2",
|
"@fortawesome/fontawesome-free": "^6.1.2",
|
||||||
"@goauthentik/api": "^2022.7.3-1659983945",
|
"@goauthentik/api": "^2022.8.1-1660661985",
|
||||||
"@jackfranklin/rollup-plugin-markdown": "^0.4.0",
|
"@jackfranklin/rollup-plugin-markdown": "^0.4.0",
|
||||||
"@lingui/cli": "^3.14.0",
|
"@lingui/cli": "^3.14.0",
|
||||||
"@lingui/core": "^3.14.0",
|
"@lingui/core": "^3.14.0",
|
||||||
"@lingui/detect-locale": "^3.14.0",
|
"@lingui/detect-locale": "^3.14.0",
|
||||||
"@lingui/macro": "^3.14.0",
|
"@lingui/macro": "^3.14.0",
|
||||||
"@patternfly/patternfly": "^4.202.1",
|
"@patternfly/patternfly": "^4.206.3",
|
||||||
"@polymer/iron-form": "^3.0.1",
|
"@polymer/iron-form": "^3.0.1",
|
||||||
"@polymer/paper-input": "^3.2.1",
|
"@polymer/paper-input": "^3.2.1",
|
||||||
"@rollup/plugin-babel": "^5.3.1",
|
"@rollup/plugin-babel": "^5.3.1",
|
||||||
@ -35,8 +35,8 @@
|
|||||||
"@rollup/plugin-node-resolve": "^13.3.0",
|
"@rollup/plugin-node-resolve": "^13.3.0",
|
||||||
"@rollup/plugin-replace": "^4.0.0",
|
"@rollup/plugin-replace": "^4.0.0",
|
||||||
"@rollup/plugin-typescript": "^8.3.4",
|
"@rollup/plugin-typescript": "^8.3.4",
|
||||||
"@sentry/browser": "^7.10.0",
|
"@sentry/browser": "^7.11.1",
|
||||||
"@sentry/tracing": "^7.10.0",
|
"@sentry/tracing": "^7.11.1",
|
||||||
"@squoosh/cli": "^0.7.2",
|
"@squoosh/cli": "^0.7.2",
|
||||||
"@trivago/prettier-plugin-sort-imports": "^3.3.0",
|
"@trivago/prettier-plugin-sort-imports": "^3.3.0",
|
||||||
"@types/chart.js": "^2.9.37",
|
"@types/chart.js": "^2.9.37",
|
||||||
@ -59,7 +59,7 @@
|
|||||||
"eslint-plugin-lit": "^1.6.1",
|
"eslint-plugin-lit": "^1.6.1",
|
||||||
"flowchart.js": "^1.17.1",
|
"flowchart.js": "^1.17.1",
|
||||||
"fuse.js": "^6.6.2",
|
"fuse.js": "^6.6.2",
|
||||||
"lit": "^2.3.0",
|
"lit": "^2.3.1",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.7.1",
|
||||||
"rapidoc": "^9.3.3",
|
"rapidoc": "^9.3.3",
|
||||||
@ -1929,9 +1929,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@goauthentik/api": {
|
"node_modules/@goauthentik/api": {
|
||||||
"version": "2022.7.3-1659983945",
|
"version": "2022.8.1-1660661985",
|
||||||
"resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2022.7.3-1659983945.tgz",
|
"resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2022.8.1-1660661985.tgz",
|
||||||
"integrity": "sha512-y/BVhn3BDrI5G8iIsRytU6Mz9uS1iNIpcrm0N6MyJoakSzCd5wRJuUU6gQdG1zzk1B2Mh+9eHzOhdFtrMc9TeA=="
|
"integrity": "sha512-KJyaUNm2Car6YC1yb7GqETRn8Y3Xij6/a7+Bo+q2IgfkOXjZQKGGoCoJL0UIHec2pN7gXaY1qP2i0vdGvXD6mg=="
|
||||||
},
|
},
|
||||||
"node_modules/@humanwhocodes/config-array": {
|
"node_modules/@humanwhocodes/config-array": {
|
||||||
"version": "0.10.4",
|
"version": "0.10.4",
|
||||||
@ -2480,9 +2480,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@patternfly/patternfly": {
|
"node_modules/@patternfly/patternfly": {
|
||||||
"version": "4.202.1",
|
"version": "4.206.3",
|
||||||
"resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-4.202.1.tgz",
|
"resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-4.206.3.tgz",
|
||||||
"integrity": "sha512-cQiiPqmwJOm9onuTfLPQNRlpAZwDIJ/zVfDQeaFqMQyPJtxtKn3lkphz5xErY5dPs9rR4X94ytQ1I9pkVzaPJQ=="
|
"integrity": "sha512-2Ar6qaZAozyx/KBzlqqskoEf45HUZIbk668qFwYHWaTkuucYw/usoxw03OwnGCS4GgBlMf06X2uonHgQLhVT8A=="
|
||||||
},
|
},
|
||||||
"node_modules/@polymer/font-roboto": {
|
"node_modules/@polymer/font-roboto": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
@ -2742,13 +2742,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/browser": {
|
"node_modules/@sentry/browser": {
|
||||||
"version": "7.10.0",
|
"version": "7.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.11.1.tgz",
|
||||||
"integrity": "sha512-RNOKCRonqzUOqyM/JcjxjCOMosfS0MRmzkBKWewfyXse9AqfqC9+y8BI5J7wFmpYCypQP72JROKPBaxi7rvOFw==",
|
"integrity": "sha512-k2XHuzPfnm8VJPK5eWd1+Y5VCgN42sLveb8Qxc3prb5PSL416NWMLZaoB7RMIhy430fKrSFiosnm6QDk2M6pbA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/core": "7.10.0",
|
"@sentry/core": "7.11.1",
|
||||||
"@sentry/types": "7.10.0",
|
"@sentry/types": "7.11.1",
|
||||||
"@sentry/utils": "7.10.0",
|
"@sentry/utils": "7.11.1",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -2761,13 +2761,13 @@
|
|||||||
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/core": {
|
"node_modules/@sentry/core": {
|
||||||
"version": "7.10.0",
|
"version": "7.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.11.1.tgz",
|
||||||
"integrity": "sha512-uq6oUXPH+6cjsEL5/j/xSW91mVrJo7knTqax7E5MDiA5j98BPK4budGiBiPO7GEB856QhA7N+pOO0lccii5QYQ==",
|
"integrity": "sha512-kaDSZ6VNuO4ZZdqUOOX6XM6x+kjo2bMnDQ3IJG51FPvVjr8lXYhXj1Ccxcot3pBYAIWPPby2+vNDOXllmXqoBA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/hub": "7.10.0",
|
"@sentry/hub": "7.11.1",
|
||||||
"@sentry/types": "7.10.0",
|
"@sentry/types": "7.11.1",
|
||||||
"@sentry/utils": "7.10.0",
|
"@sentry/utils": "7.11.1",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -2780,12 +2780,12 @@
|
|||||||
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/hub": {
|
"node_modules/@sentry/hub": {
|
||||||
"version": "7.10.0",
|
"version": "7.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.11.1.tgz",
|
||||||
"integrity": "sha512-9Appy7J87EU7Xu2BDY1cLK79nsuE72geeYmG71lgdttTD3XOMcQBOxET4/2sAI+d/ansurXnURx+DAQ9FOKT+w==",
|
"integrity": "sha512-M6ClgdXdptS0lUBKB5KpXXe2qMQhsoiEN2pEGRI6+auqhfHCUQB1ZXsfjiOYexKC9fwx7TyFyZ9Jcaf2DTxEhw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/types": "7.10.0",
|
"@sentry/types": "7.11.1",
|
||||||
"@sentry/utils": "7.10.0",
|
"@sentry/utils": "7.11.1",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -2798,13 +2798,13 @@
|
|||||||
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/tracing": {
|
"node_modules/@sentry/tracing": {
|
||||||
"version": "7.10.0",
|
"version": "7.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.11.1.tgz",
|
||||||
"integrity": "sha512-ojuBYS1bL/IGWKt/ItY4HmC8NElJrYtTUvm73VbhylhIO4zcn5ICHmgMFj1lqL9gQ1nCnAlifKiWIjL9qUatTA==",
|
"integrity": "sha512-ilgnHfpdYUWKG/5yAXIfIbPVsCfrC4ONFBR/wN25/hdAyVfXMa3AJx7NCCXxZBOPDWH3hMW8rl4La5yuDbXofg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/hub": "7.10.0",
|
"@sentry/hub": "7.11.1",
|
||||||
"@sentry/types": "7.10.0",
|
"@sentry/types": "7.11.1",
|
||||||
"@sentry/utils": "7.10.0",
|
"@sentry/utils": "7.11.1",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -2817,19 +2817,19 @@
|
|||||||
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/types": {
|
"node_modules/@sentry/types": {
|
||||||
"version": "7.10.0",
|
"version": "7.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.11.1.tgz",
|
||||||
"integrity": "sha512-1UBwdbS0xXzANzp63g4eNQly/qKIXp0swP5OTKWoADvKBtL4anroLUA/l8ADMtuwFZYtVANc8WRGxM2+YmaXtg==",
|
"integrity": "sha512-gIEhOPxC2cjrxQ0+K2SFJ1P6e/an5osSxVc9OOtekN28eHtVsXFCLB8XVWeNQnS7N2VkrVrkqORMBz1kvIcvVQ==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/utils": {
|
"node_modules/@sentry/utils": {
|
||||||
"version": "7.10.0",
|
"version": "7.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.11.1.tgz",
|
||||||
"integrity": "sha512-/aD2DnfyOhV0Wdbb6VF78vu4fQIZJyuReDpBI7MV/EqcEB6FxUKq2YjinfKZF/exHEPig6Ag/Yt+CRFgvtVFuw==",
|
"integrity": "sha512-tRVXNT5O9ilkV31pyHeTqA1PcPQfMV/2OR6yUYM4ah+QVISovC0f0ybhByuH5nYg6x/Gsnx1o7pc8L1GE3+O7A==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/types": "7.10.0",
|
"@sentry/types": "7.11.1",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -6188,9 +6188,9 @@
|
|||||||
"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA="
|
"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA="
|
||||||
},
|
},
|
||||||
"node_modules/lit": {
|
"node_modules/lit": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/lit/-/lit-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/lit/-/lit-2.3.1.tgz",
|
||||||
"integrity": "sha512-ynSGsUYKSGN2weFQ1F3SZq0Ihlj+vr/3KAET//Yf8Tz86L7lZizlw9Px+ab5iN8Si4RkVoLqd9YtKQmjdyKHNg==",
|
"integrity": "sha512-TejktDR4mqG3qB32Y8Lm5Lye3c8SUehqz7qRsxe1PqGYL6me2Ef+jeQAEqh20BnnGncv4Yxy2njEIT0kzK1WCw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@lit/reactive-element": "^1.4.0",
|
"@lit/reactive-element": "^1.4.0",
|
||||||
"lit-element": "^3.2.0",
|
"lit-element": "^3.2.0",
|
||||||
@ -10494,9 +10494,9 @@
|
|||||||
"integrity": "sha512-XwWADtfdSN73/udaFm+1mnGIj/ShDZNFMe/PRoqv3FhQ4GNI2PUN70yFTPsjq65Lw2C9i4TG5/hTbxXIXVCiqQ=="
|
"integrity": "sha512-XwWADtfdSN73/udaFm+1mnGIj/ShDZNFMe/PRoqv3FhQ4GNI2PUN70yFTPsjq65Lw2C9i4TG5/hTbxXIXVCiqQ=="
|
||||||
},
|
},
|
||||||
"@goauthentik/api": {
|
"@goauthentik/api": {
|
||||||
"version": "2022.7.3-1659983945",
|
"version": "2022.8.1-1660661985",
|
||||||
"resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2022.7.3-1659983945.tgz",
|
"resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2022.8.1-1660661985.tgz",
|
||||||
"integrity": "sha512-y/BVhn3BDrI5G8iIsRytU6Mz9uS1iNIpcrm0N6MyJoakSzCd5wRJuUU6gQdG1zzk1B2Mh+9eHzOhdFtrMc9TeA=="
|
"integrity": "sha512-KJyaUNm2Car6YC1yb7GqETRn8Y3Xij6/a7+Bo+q2IgfkOXjZQKGGoCoJL0UIHec2pN7gXaY1qP2i0vdGvXD6mg=="
|
||||||
},
|
},
|
||||||
"@humanwhocodes/config-array": {
|
"@humanwhocodes/config-array": {
|
||||||
"version": "0.10.4",
|
"version": "0.10.4",
|
||||||
@ -10920,9 +10920,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@patternfly/patternfly": {
|
"@patternfly/patternfly": {
|
||||||
"version": "4.202.1",
|
"version": "4.206.3",
|
||||||
"resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-4.202.1.tgz",
|
"resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-4.206.3.tgz",
|
||||||
"integrity": "sha512-cQiiPqmwJOm9onuTfLPQNRlpAZwDIJ/zVfDQeaFqMQyPJtxtKn3lkphz5xErY5dPs9rR4X94ytQ1I9pkVzaPJQ=="
|
"integrity": "sha512-2Ar6qaZAozyx/KBzlqqskoEf45HUZIbk668qFwYHWaTkuucYw/usoxw03OwnGCS4GgBlMf06X2uonHgQLhVT8A=="
|
||||||
},
|
},
|
||||||
"@polymer/font-roboto": {
|
"@polymer/font-roboto": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
@ -11139,13 +11139,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/browser": {
|
"@sentry/browser": {
|
||||||
"version": "7.10.0",
|
"version": "7.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.11.1.tgz",
|
||||||
"integrity": "sha512-RNOKCRonqzUOqyM/JcjxjCOMosfS0MRmzkBKWewfyXse9AqfqC9+y8BI5J7wFmpYCypQP72JROKPBaxi7rvOFw==",
|
"integrity": "sha512-k2XHuzPfnm8VJPK5eWd1+Y5VCgN42sLveb8Qxc3prb5PSL416NWMLZaoB7RMIhy430fKrSFiosnm6QDk2M6pbA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/core": "7.10.0",
|
"@sentry/core": "7.11.1",
|
||||||
"@sentry/types": "7.10.0",
|
"@sentry/types": "7.11.1",
|
||||||
"@sentry/utils": "7.10.0",
|
"@sentry/utils": "7.11.1",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -11157,13 +11157,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/core": {
|
"@sentry/core": {
|
||||||
"version": "7.10.0",
|
"version": "7.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.11.1.tgz",
|
||||||
"integrity": "sha512-uq6oUXPH+6cjsEL5/j/xSW91mVrJo7knTqax7E5MDiA5j98BPK4budGiBiPO7GEB856QhA7N+pOO0lccii5QYQ==",
|
"integrity": "sha512-kaDSZ6VNuO4ZZdqUOOX6XM6x+kjo2bMnDQ3IJG51FPvVjr8lXYhXj1Ccxcot3pBYAIWPPby2+vNDOXllmXqoBA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/hub": "7.10.0",
|
"@sentry/hub": "7.11.1",
|
||||||
"@sentry/types": "7.10.0",
|
"@sentry/types": "7.11.1",
|
||||||
"@sentry/utils": "7.10.0",
|
"@sentry/utils": "7.11.1",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -11175,12 +11175,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/hub": {
|
"@sentry/hub": {
|
||||||
"version": "7.10.0",
|
"version": "7.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.11.1.tgz",
|
||||||
"integrity": "sha512-9Appy7J87EU7Xu2BDY1cLK79nsuE72geeYmG71lgdttTD3XOMcQBOxET4/2sAI+d/ansurXnURx+DAQ9FOKT+w==",
|
"integrity": "sha512-M6ClgdXdptS0lUBKB5KpXXe2qMQhsoiEN2pEGRI6+auqhfHCUQB1ZXsfjiOYexKC9fwx7TyFyZ9Jcaf2DTxEhw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/types": "7.10.0",
|
"@sentry/types": "7.11.1",
|
||||||
"@sentry/utils": "7.10.0",
|
"@sentry/utils": "7.11.1",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -11192,13 +11192,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/tracing": {
|
"@sentry/tracing": {
|
||||||
"version": "7.10.0",
|
"version": "7.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.11.1.tgz",
|
||||||
"integrity": "sha512-ojuBYS1bL/IGWKt/ItY4HmC8NElJrYtTUvm73VbhylhIO4zcn5ICHmgMFj1lqL9gQ1nCnAlifKiWIjL9qUatTA==",
|
"integrity": "sha512-ilgnHfpdYUWKG/5yAXIfIbPVsCfrC4ONFBR/wN25/hdAyVfXMa3AJx7NCCXxZBOPDWH3hMW8rl4La5yuDbXofg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/hub": "7.10.0",
|
"@sentry/hub": "7.11.1",
|
||||||
"@sentry/types": "7.10.0",
|
"@sentry/types": "7.11.1",
|
||||||
"@sentry/utils": "7.10.0",
|
"@sentry/utils": "7.11.1",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -11210,16 +11210,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/types": {
|
"@sentry/types": {
|
||||||
"version": "7.10.0",
|
"version": "7.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.11.1.tgz",
|
||||||
"integrity": "sha512-1UBwdbS0xXzANzp63g4eNQly/qKIXp0swP5OTKWoADvKBtL4anroLUA/l8ADMtuwFZYtVANc8WRGxM2+YmaXtg=="
|
"integrity": "sha512-gIEhOPxC2cjrxQ0+K2SFJ1P6e/an5osSxVc9OOtekN28eHtVsXFCLB8XVWeNQnS7N2VkrVrkqORMBz1kvIcvVQ=="
|
||||||
},
|
},
|
||||||
"@sentry/utils": {
|
"@sentry/utils": {
|
||||||
"version": "7.10.0",
|
"version": "7.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.11.1.tgz",
|
||||||
"integrity": "sha512-/aD2DnfyOhV0Wdbb6VF78vu4fQIZJyuReDpBI7MV/EqcEB6FxUKq2YjinfKZF/exHEPig6Ag/Yt+CRFgvtVFuw==",
|
"integrity": "sha512-tRVXNT5O9ilkV31pyHeTqA1PcPQfMV/2OR6yUYM4ah+QVISovC0f0ybhByuH5nYg6x/Gsnx1o7pc8L1GE3+O7A==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/types": "7.10.0",
|
"@sentry/types": "7.11.1",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -13676,9 +13676,9 @@
|
|||||||
"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA="
|
"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA="
|
||||||
},
|
},
|
||||||
"lit": {
|
"lit": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/lit/-/lit-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/lit/-/lit-2.3.1.tgz",
|
||||||
"integrity": "sha512-ynSGsUYKSGN2weFQ1F3SZq0Ihlj+vr/3KAET//Yf8Tz86L7lZizlw9Px+ab5iN8Si4RkVoLqd9YtKQmjdyKHNg==",
|
"integrity": "sha512-TejktDR4mqG3qB32Y8Lm5Lye3c8SUehqz7qRsxe1PqGYL6me2Ef+jeQAEqh20BnnGncv4Yxy2njEIT0kzK1WCw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@lit/reactive-element": "^1.4.0",
|
"@lit/reactive-element": "^1.4.0",
|
||||||
"lit-element": "^3.2.0",
|
"lit-element": "^3.2.0",
|
||||||
|
@ -64,13 +64,13 @@
|
|||||||
"@codemirror/legacy-modes": "^6.1.0",
|
"@codemirror/legacy-modes": "^6.1.0",
|
||||||
"@formatjs/intl-listformat": "^7.0.3",
|
"@formatjs/intl-listformat": "^7.0.3",
|
||||||
"@fortawesome/fontawesome-free": "^6.1.2",
|
"@fortawesome/fontawesome-free": "^6.1.2",
|
||||||
"@goauthentik/api": "^2022.7.3-1659983945",
|
"@goauthentik/api": "^2022.8.1-1660661985",
|
||||||
"@jackfranklin/rollup-plugin-markdown": "^0.4.0",
|
"@jackfranklin/rollup-plugin-markdown": "^0.4.0",
|
||||||
"@lingui/cli": "^3.14.0",
|
"@lingui/cli": "^3.14.0",
|
||||||
"@lingui/core": "^3.14.0",
|
"@lingui/core": "^3.14.0",
|
||||||
"@lingui/detect-locale": "^3.14.0",
|
"@lingui/detect-locale": "^3.14.0",
|
||||||
"@lingui/macro": "^3.14.0",
|
"@lingui/macro": "^3.14.0",
|
||||||
"@patternfly/patternfly": "^4.202.1",
|
"@patternfly/patternfly": "^4.206.3",
|
||||||
"@polymer/iron-form": "^3.0.1",
|
"@polymer/iron-form": "^3.0.1",
|
||||||
"@polymer/paper-input": "^3.2.1",
|
"@polymer/paper-input": "^3.2.1",
|
||||||
"@rollup/plugin-babel": "^5.3.1",
|
"@rollup/plugin-babel": "^5.3.1",
|
||||||
@ -78,8 +78,8 @@
|
|||||||
"@rollup/plugin-node-resolve": "^13.3.0",
|
"@rollup/plugin-node-resolve": "^13.3.0",
|
||||||
"@rollup/plugin-replace": "^4.0.0",
|
"@rollup/plugin-replace": "^4.0.0",
|
||||||
"@rollup/plugin-typescript": "^8.3.4",
|
"@rollup/plugin-typescript": "^8.3.4",
|
||||||
"@sentry/browser": "^7.10.0",
|
"@sentry/browser": "^7.11.1",
|
||||||
"@sentry/tracing": "^7.10.0",
|
"@sentry/tracing": "^7.11.1",
|
||||||
"@squoosh/cli": "^0.7.2",
|
"@squoosh/cli": "^0.7.2",
|
||||||
"@trivago/prettier-plugin-sort-imports": "^3.3.0",
|
"@trivago/prettier-plugin-sort-imports": "^3.3.0",
|
||||||
"@types/chart.js": "^2.9.37",
|
"@types/chart.js": "^2.9.37",
|
||||||
@ -102,7 +102,7 @@
|
|||||||
"eslint-plugin-lit": "^1.6.1",
|
"eslint-plugin-lit": "^1.6.1",
|
||||||
"flowchart.js": "^1.17.1",
|
"flowchart.js": "^1.17.1",
|
||||||
"fuse.js": "^6.6.2",
|
"fuse.js": "^6.6.2",
|
||||||
"lit": "^2.3.0",
|
"lit": "^2.3.1",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.7.1",
|
||||||
"rapidoc": "^9.3.3",
|
"rapidoc": "^9.3.3",
|
||||||
|
@ -3,7 +3,7 @@ export const SUCCESS_CLASS = "pf-m-success";
|
|||||||
export const ERROR_CLASS = "pf-m-danger";
|
export const ERROR_CLASS = "pf-m-danger";
|
||||||
export const PROGRESS_CLASS = "pf-m-in-progress";
|
export const PROGRESS_CLASS = "pf-m-in-progress";
|
||||||
export const CURRENT_CLASS = "pf-m-current";
|
export const CURRENT_CLASS = "pf-m-current";
|
||||||
export const VERSION = "2022.8.1";
|
export const VERSION = "2022.8.2";
|
||||||
export const TITLE_DEFAULT = "authentik";
|
export const TITLE_DEFAULT = "authentik";
|
||||||
export const ROUTE_SEPARATOR = ";";
|
export const ROUTE_SEPARATOR = ";";
|
||||||
|
|
||||||
|
@ -75,24 +75,28 @@ export class Form<T> extends LitElement {
|
|||||||
|
|
||||||
updated(): void {
|
updated(): void {
|
||||||
this.shadowRoot
|
this.shadowRoot
|
||||||
?.querySelectorAll<HTMLInputElement>("input[name=name]")
|
?.querySelectorAll("ak-form-element-horizontal[name=name]")
|
||||||
.forEach((nameInput) => {
|
.forEach((nameInput) => {
|
||||||
|
const input = nameInput.firstElementChild as HTMLInputElement;
|
||||||
const form = nameInput.closest("form");
|
const form = nameInput.closest("form");
|
||||||
if (form === null) {
|
if (form === null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const slugField = form.querySelector<HTMLInputElement>("input[name=slug]");
|
const slugFieldWrapper = form.querySelector(
|
||||||
if (!slugField) {
|
"ak-form-element-horizontal[name=slug]",
|
||||||
|
);
|
||||||
|
if (!slugFieldWrapper) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
const slugField = slugFieldWrapper.firstElementChild as HTMLInputElement;
|
||||||
// Only attach handler if the slug is already equal to the name
|
// Only attach handler if the slug is already equal to the name
|
||||||
// if not, they are probably completely different and shouldn't update
|
// if not, they are probably completely different and shouldn't update
|
||||||
// each other
|
// each other
|
||||||
if (convertToSlug(nameInput.value) !== slugField.value) {
|
if (convertToSlug(input.value) !== slugField.value) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
nameInput.addEventListener("input", () => {
|
nameInput.addEventListener("input", () => {
|
||||||
slugField.value = convertToSlug(nameInput.value);
|
slugField.value = convertToSlug(input.value);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -37,13 +37,15 @@ export class ConsentStage extends BaseStage<ConsentChallenge, ConsentChallengeRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderPermissions(perms: Permission[]): TemplateResult {
|
renderPermissions(perms: Permission[]): TemplateResult {
|
||||||
const shouldShowId = perms.filter((perm) => perm.name === "").length === perms.length;
|
|
||||||
return html`${perms.map((permission) => {
|
return html`${perms.map((permission) => {
|
||||||
let name = permission.name;
|
if (permission.name === "") {
|
||||||
if (permission.name === "" && shouldShowId) {
|
return html``;
|
||||||
name = permission.id;
|
|
||||||
}
|
}
|
||||||
return html`<li data-permission-code="${permission.id}">${name}</li>`;
|
// Special case for openid Scope
|
||||||
|
if (permission.id === "openid") {
|
||||||
|
return html``;
|
||||||
|
}
|
||||||
|
return html`<li data-permission-code="${permission.id}">${permission.name}</li>`;
|
||||||
})}`;
|
})}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,6 +186,7 @@ msgid "Action"
|
|||||||
msgstr "Ereignis"
|
msgstr "Ereignis"
|
||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/EventListPage.ts
|
#: src/pages/events/EventListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -291,6 +292,7 @@ msgstr "Zusätzliche Bereichszuordnungen, die an den Proxy übergeben werden."
|
|||||||
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
||||||
msgstr "Zusätzliche Anwendungsbereiche (Scopes), die an den OAuth-Provider übergeben werden, getrennt durch ein Leerzeichen."
|
msgstr "Zusätzliche Anwendungsbereiche (Scopes), die an den OAuth-Provider übergeben werden, getrennt durch ein Leerzeichen."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
msgid "Additional settings"
|
msgid "Additional settings"
|
||||||
msgstr "Weitere Einstellungen"
|
msgstr "Weitere Einstellungen"
|
||||||
@ -647,6 +649,10 @@ msgstr "Autorisierte Applikation:"
|
|||||||
msgid "Auto-detect (based on your browser)"
|
msgid "Auto-detect (based on your browser)"
|
||||||
msgstr "Automatische Erkennung (basierend auf Ihrem Browser)"
|
msgstr "Automatische Erkennung (basierend auf Ihrem Browser)"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Automate and template configuration within authentik."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/interfaces/UserInterface.ts
|
#: src/interfaces/UserInterface.ts
|
||||||
msgid "Avatar image"
|
msgid "Avatar image"
|
||||||
msgstr "Profilbild"
|
msgstr "Profilbild"
|
||||||
@ -753,6 +759,15 @@ msgstr "Verknüpfung"
|
|||||||
msgid "Binding Type"
|
msgid "Binding Type"
|
||||||
msgstr "Verknüpfungstyp"
|
msgstr "Verknüpfungstyp"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprint(s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/interfaces/AdminInterface.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprints"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Branding settings"
|
msgid "Branding settings"
|
||||||
msgstr "Branding-Einstellungen"
|
msgstr "Branding-Einstellungen"
|
||||||
@ -1143,6 +1158,10 @@ msgstr "Konfigurieren Sie, wie der Outpost die Benutzer des Core-Authentik-Serve
|
|||||||
#~ msgid "Configure settings relevant to your user profile."
|
#~ msgid "Configure settings relevant to your user profile."
|
||||||
#~ msgstr "Konfigurieren Sie die für Ihr Benutzerprofil relevanten Einstellungen."
|
#~ msgstr "Konfigurieren Sie die für Ihr Benutzerprofil relevanten Einstellungen."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Configure the blueprint context, used for templating."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts
|
#: src/pages/providers/saml/SAMLProviderForm.ts
|
||||||
msgid "Configure the maximum allowed time drift for an assertion."
|
msgid "Configure the maximum allowed time drift for an assertion."
|
||||||
msgstr "Konfigurieren Sie die maximal zulässige Zeitdrift für eine 'Assertion'"
|
msgstr "Konfigurieren Sie die maximal zulässige Zeitdrift für eine 'Assertion'"
|
||||||
@ -1232,6 +1251,7 @@ msgstr ""
|
|||||||
msgid "Content right"
|
msgid "Content right"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
@ -1286,6 +1306,8 @@ msgstr "Wiederherstellungslink kopieren"
|
|||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/ApplicationWizard.ts
|
#: src/pages/applications/wizard/ApplicationWizard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -1348,6 +1370,10 @@ msgstr "Anwendung erstellen"
|
|||||||
msgid "Create Binding"
|
msgid "Create Binding"
|
||||||
msgstr "Verknüpfung erstellen"
|
msgstr "Verknüpfung erstellen"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Create Blueprint Instance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Create Certificate-Key Pair"
|
msgid "Create Certificate-Key Pair"
|
||||||
msgstr "Zertifikat-Schlüsselpaar generieren"
|
msgstr "Zertifikat-Schlüsselpaar generieren"
|
||||||
@ -1572,6 +1598,7 @@ msgstr "Definieren Sie, wie Benachrichtigungen an Benutzer gesendet werden, z. B
|
|||||||
#: src/elements/user/SessionList.ts
|
#: src/elements/user/SessionList.ts
|
||||||
#: src/elements/user/UserConsentList.ts
|
#: src/elements/user/UserConsentList.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -1755,6 +1782,10 @@ msgstr "Verzeichnis"
|
|||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Deaktiviert"
|
msgstr "Deaktiviert"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Disabled blueprints are never applied."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
||||||
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
||||||
msgid "Disconnect"
|
msgid "Disconnect"
|
||||||
@ -1936,6 +1967,8 @@ msgstr "Aktivieren Sie StartTLS"
|
|||||||
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
||||||
msgstr "Aktivieren Sie den Kompatibilitätsmodus, um die Kompatibilität mit Passwortmanagern auf mobilen Geräten zu erhöhen."
|
msgstr "Aktivieren Sie den Kompatibilitätsmodus, um die Kompatibilität mit Passwortmanagern auf mobilen Geräten zu erhöhen."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/policies/BoundPoliciesList.ts
|
#: src/pages/policies/BoundPoliciesList.ts
|
||||||
#: src/pages/policies/PolicyBindingForm.ts
|
#: src/pages/policies/PolicyBindingForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
@ -1972,6 +2005,7 @@ msgstr "Registrierungsablauf"
|
|||||||
msgid "EntityID/Issuer"
|
msgid "EntityID/Issuer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Fehler"
|
msgstr "Fehler"
|
||||||
@ -2943,6 +2977,10 @@ msgstr "Beschriftung neben/über der Eingabeaufforderung"
|
|||||||
msgid "Last IP"
|
msgid "Last IP"
|
||||||
msgstr "Letzte IP"
|
msgstr "Letzte IP"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Last applied"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/users/RelatedUserList.ts
|
#: src/pages/users/RelatedUserList.ts
|
||||||
#: src/pages/users/UserListPage.ts
|
#: src/pages/users/UserListPage.ts
|
||||||
@ -3055,6 +3093,7 @@ msgstr "Wird geladen"
|
|||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/TransportForm.ts
|
#: src/pages/events/TransportForm.ts
|
||||||
@ -3358,6 +3397,9 @@ msgstr "Meine Anwendungen"
|
|||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairForm.ts
|
#: src/pages/crypto/CertificateKeyPairForm.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
@ -3530,6 +3572,7 @@ msgstr "Nginx (eigenständig)"
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
@ -3878,6 +3921,10 @@ msgstr ""
|
|||||||
msgid "Order"
|
msgid "Order"
|
||||||
msgstr "Reihenfolge"
|
msgstr "Reihenfolge"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Orphaned"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Other global settings"
|
msgid "Other global settings"
|
||||||
msgstr "Weitere globale Einstellungen"
|
msgstr "Weitere globale Einstellungen"
|
||||||
@ -4008,6 +4055,7 @@ msgstr "Passwort: Maskierte Eingabe, Passwort wird anhand von Quellen validiert.
|
|||||||
msgid "Passwordless flow"
|
msgid "Passwordless flow"
|
||||||
msgstr "Passwortloser Ablauf"
|
msgstr "Passwortloser Ablauf"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/users/UserForm.ts
|
#: src/pages/users/UserForm.ts
|
||||||
msgid "Path"
|
msgid "Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4023,6 +4071,10 @@ msgstr ""
|
|||||||
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/elements/user/UserConsentList.ts
|
||||||
|
msgid "Permissions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts
|
#: src/pages/sources/saml/SAMLSourceForm.ts
|
||||||
msgid "Persistent"
|
msgid "Persistent"
|
||||||
msgstr "Persistent"
|
msgstr "Persistent"
|
||||||
@ -5189,6 +5241,7 @@ msgstr "Statisch: Statischer Wert, wird so angezeigt, wie er ist."
|
|||||||
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
||||||
msgstr "Den Fluss statisch verweigern. Um diese Phase effektiv zu nutzen, deaktivieren Sie *Evaluate on plan* für die entsprechende Bindung"
|
msgstr "Den Fluss statisch verweigern. Um diese Phase effektiv zu nutzen, deaktivieren Sie *Evaluate on plan* für die entsprechende Bindung"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Status"
|
msgstr "Status"
|
||||||
@ -5216,6 +5269,7 @@ msgstr "Betreffmodus"
|
|||||||
msgid "Subject-alt name"
|
msgid "Subject-alt name"
|
||||||
msgstr "Betreff alternativer Name"
|
msgstr "Betreff alternativer Name"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Successful"
|
msgid "Successful"
|
||||||
msgstr "Erfolgreich"
|
msgstr "Erfolgreich"
|
||||||
@ -5262,6 +5316,10 @@ msgstr "Ablauf erfolgreich erstellt."
|
|||||||
msgid "Successfully created group."
|
msgid "Successfully created group."
|
||||||
msgstr "Gruppe erfolgreich erstellt."
|
msgstr "Gruppe erfolgreich erstellt."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully created instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully created integration."
|
msgid "Successfully created integration."
|
||||||
@ -5428,6 +5486,10 @@ msgstr "Ablauf erfolgreich aktualisiert."
|
|||||||
msgid "Successfully updated group."
|
msgid "Successfully updated group."
|
||||||
msgstr "Gruppe erfolgreich aktualisiert."
|
msgstr "Gruppe erfolgreich aktualisiert."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully updated instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully updated integration."
|
msgid "Successfully updated integration."
|
||||||
@ -6101,6 +6163,7 @@ msgstr "Defekte Outposts"
|
|||||||
msgid "Unique identifier the token is referenced by."
|
msgid "Unique identifier the token is referenced by."
|
||||||
msgstr "Einzigartige Kennung zur Referenzierung des Token."
|
msgstr "Einzigartige Kennung zur Referenzierung des Token."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Unbekannt"
|
msgstr "Unbekannt"
|
||||||
@ -6122,6 +6185,7 @@ msgstr "Aktuell!"
|
|||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationViewPage.ts
|
#: src/pages/applications/ApplicationViewPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -6173,6 +6237,10 @@ msgstr "Anwendung aktualisieren"
|
|||||||
msgid "Update Binding"
|
msgid "Update Binding"
|
||||||
msgstr "Bindung aktualisieren"
|
msgstr "Bindung aktualisieren"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Update Blueprint"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Update Certificate-Key Pair"
|
msgid "Update Certificate-Key Pair"
|
||||||
msgstr "Aktualisieren Sie das Zertifikatschlüsselpaar"
|
msgstr "Aktualisieren Sie das Zertifikatschlüsselpaar"
|
||||||
@ -6636,6 +6704,7 @@ msgstr "Wartezeit (min.)"
|
|||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
@ -6813,6 +6882,7 @@ msgstr ""
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/groups/RelatedGroupList.ts
|
#: src/pages/groups/RelatedGroupList.ts
|
||||||
|
@ -171,6 +171,7 @@ msgid "Action"
|
|||||||
msgstr "Action"
|
msgstr "Action"
|
||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/EventListPage.ts
|
#: src/pages/events/EventListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -280,6 +281,7 @@ msgstr "Additional scope mappings, which are passed to the proxy."
|
|||||||
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
||||||
msgstr "Additional scopes to be passed to the OAuth Provider, separated by space."
|
msgstr "Additional scopes to be passed to the OAuth Provider, separated by space."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
msgid "Additional settings"
|
msgid "Additional settings"
|
||||||
msgstr "Additional settings"
|
msgstr "Additional settings"
|
||||||
@ -640,6 +642,10 @@ msgstr "Authorized application:"
|
|||||||
msgid "Auto-detect (based on your browser)"
|
msgid "Auto-detect (based on your browser)"
|
||||||
msgstr "Auto-detect (based on your browser)"
|
msgstr "Auto-detect (based on your browser)"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Automate and template configuration within authentik."
|
||||||
|
msgstr "Automate and template configuration within authentik."
|
||||||
|
|
||||||
#: src/interfaces/UserInterface.ts
|
#: src/interfaces/UserInterface.ts
|
||||||
msgid "Avatar image"
|
msgid "Avatar image"
|
||||||
msgstr "Avatar image"
|
msgstr "Avatar image"
|
||||||
@ -749,6 +755,15 @@ msgstr "Binding"
|
|||||||
msgid "Binding Type"
|
msgid "Binding Type"
|
||||||
msgstr "Binding Type"
|
msgstr "Binding Type"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprint(s)"
|
||||||
|
msgstr "Blueprint(s)"
|
||||||
|
|
||||||
|
#: src/interfaces/AdminInterface.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprints"
|
||||||
|
msgstr "Blueprints"
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Branding settings"
|
msgid "Branding settings"
|
||||||
msgstr "Branding settings"
|
msgstr "Branding settings"
|
||||||
@ -1150,6 +1165,10 @@ msgstr "Configure how the outpost queries the core authentik server's users."
|
|||||||
#~ msgid "Configure settings relevant to your user profile."
|
#~ msgid "Configure settings relevant to your user profile."
|
||||||
#~ msgstr "Configure settings relevant to your user profile."
|
#~ msgstr "Configure settings relevant to your user profile."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Configure the blueprint context, used for templating."
|
||||||
|
msgstr "Configure the blueprint context, used for templating."
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts
|
#: src/pages/providers/saml/SAMLProviderForm.ts
|
||||||
msgid "Configure the maximum allowed time drift for an assertion."
|
msgid "Configure the maximum allowed time drift for an assertion."
|
||||||
msgstr "Configure the maximum allowed time drift for an assertion."
|
msgstr "Configure the maximum allowed time drift for an assertion."
|
||||||
@ -1241,6 +1260,7 @@ msgstr "Content left"
|
|||||||
msgid "Content right"
|
msgid "Content right"
|
||||||
msgstr "Content right"
|
msgstr "Content right"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
@ -1296,6 +1316,8 @@ msgstr "Copy recovery link"
|
|||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/ApplicationWizard.ts
|
#: src/pages/applications/wizard/ApplicationWizard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -1358,6 +1380,10 @@ msgstr "Create Application"
|
|||||||
msgid "Create Binding"
|
msgid "Create Binding"
|
||||||
msgstr "Create Binding"
|
msgstr "Create Binding"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Create Blueprint Instance"
|
||||||
|
msgstr "Create Blueprint Instance"
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Create Certificate-Key Pair"
|
msgid "Create Certificate-Key Pair"
|
||||||
msgstr "Create Certificate-Key Pair"
|
msgstr "Create Certificate-Key Pair"
|
||||||
@ -1584,6 +1610,7 @@ msgstr "Define how notifications are sent to users, like Email or Webhook."
|
|||||||
#: src/elements/user/SessionList.ts
|
#: src/elements/user/SessionList.ts
|
||||||
#: src/elements/user/UserConsentList.ts
|
#: src/elements/user/UserConsentList.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -1780,6 +1807,10 @@ msgstr "Directory"
|
|||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Disabled"
|
msgstr "Disabled"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Disabled blueprints are never applied."
|
||||||
|
msgstr "Disabled blueprints are never applied."
|
||||||
|
|
||||||
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
||||||
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
||||||
msgid "Disconnect"
|
msgid "Disconnect"
|
||||||
@ -1968,6 +1999,8 @@ msgstr "Enable StartTLS"
|
|||||||
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
||||||
msgstr "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
msgstr "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/policies/BoundPoliciesList.ts
|
#: src/pages/policies/BoundPoliciesList.ts
|
||||||
#: src/pages/policies/PolicyBindingForm.ts
|
#: src/pages/policies/PolicyBindingForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
@ -2004,6 +2037,7 @@ msgstr "Enrollment flow"
|
|||||||
msgid "EntityID/Issuer"
|
msgid "EntityID/Issuer"
|
||||||
msgstr "EntityID/Issuer"
|
msgstr "EntityID/Issuer"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Error"
|
msgstr "Error"
|
||||||
@ -2994,6 +3028,10 @@ msgstr "Label shown next to/above the prompt."
|
|||||||
msgid "Last IP"
|
msgid "Last IP"
|
||||||
msgstr "Last IP"
|
msgstr "Last IP"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Last applied"
|
||||||
|
msgstr "Last applied"
|
||||||
|
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/users/RelatedUserList.ts
|
#: src/pages/users/RelatedUserList.ts
|
||||||
#: src/pages/users/UserListPage.ts
|
#: src/pages/users/UserListPage.ts
|
||||||
@ -3107,6 +3145,7 @@ msgstr "Loading"
|
|||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/TransportForm.ts
|
#: src/pages/events/TransportForm.ts
|
||||||
@ -3411,6 +3450,9 @@ msgstr "My applications"
|
|||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairForm.ts
|
#: src/pages/crypto/CertificateKeyPairForm.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
@ -3583,6 +3625,7 @@ msgstr "Nginx (standalone)"
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
@ -3938,6 +3981,10 @@ msgstr "Or"
|
|||||||
msgid "Order"
|
msgid "Order"
|
||||||
msgstr "Order"
|
msgstr "Order"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Orphaned"
|
||||||
|
msgstr "Orphaned"
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Other global settings"
|
msgid "Other global settings"
|
||||||
msgstr "Other global settings"
|
msgstr "Other global settings"
|
||||||
@ -4072,6 +4119,7 @@ msgstr "Password: Masked input, password is validated against sources. Policies
|
|||||||
msgid "Passwordless flow"
|
msgid "Passwordless flow"
|
||||||
msgstr "Passwordless flow"
|
msgstr "Passwordless flow"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/users/UserForm.ts
|
#: src/pages/users/UserForm.ts
|
||||||
msgid "Path"
|
msgid "Path"
|
||||||
msgstr "Path"
|
msgstr "Path"
|
||||||
@ -4087,6 +4135,10 @@ msgstr "Path new users will be created under. If left blank, the default path wi
|
|||||||
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
||||||
msgstr "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
msgstr "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
||||||
|
|
||||||
|
#: src/elements/user/UserConsentList.ts
|
||||||
|
msgid "Permissions"
|
||||||
|
msgstr "Permissions"
|
||||||
|
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts
|
#: src/pages/sources/saml/SAMLSourceForm.ts
|
||||||
msgid "Persistent"
|
msgid "Persistent"
|
||||||
msgstr "Persistent"
|
msgstr "Persistent"
|
||||||
@ -5285,6 +5337,7 @@ msgstr "Static: Static value, displayed as-is."
|
|||||||
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
||||||
msgstr "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
msgstr "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Status"
|
msgstr "Status"
|
||||||
@ -5320,6 +5373,7 @@ msgstr "Subject mode"
|
|||||||
msgid "Subject-alt name"
|
msgid "Subject-alt name"
|
||||||
msgstr "Subject-alt name"
|
msgstr "Subject-alt name"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Successful"
|
msgid "Successful"
|
||||||
msgstr "Successful"
|
msgstr "Successful"
|
||||||
@ -5366,6 +5420,10 @@ msgstr "Successfully created flow."
|
|||||||
msgid "Successfully created group."
|
msgid "Successfully created group."
|
||||||
msgstr "Successfully created group."
|
msgstr "Successfully created group."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully created instance."
|
||||||
|
msgstr "Successfully created instance."
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully created integration."
|
msgid "Successfully created integration."
|
||||||
@ -5534,6 +5592,10 @@ msgstr "Successfully updated flow."
|
|||||||
msgid "Successfully updated group."
|
msgid "Successfully updated group."
|
||||||
msgstr "Successfully updated group."
|
msgstr "Successfully updated group."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully updated instance."
|
||||||
|
msgstr "Successfully updated instance."
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully updated integration."
|
msgid "Successfully updated integration."
|
||||||
@ -6221,6 +6283,7 @@ msgstr "Unhealthy outposts"
|
|||||||
msgid "Unique identifier the token is referenced by."
|
msgid "Unique identifier the token is referenced by."
|
||||||
msgstr "Unique identifier the token is referenced by."
|
msgstr "Unique identifier the token is referenced by."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Unknown"
|
msgstr "Unknown"
|
||||||
@ -6243,6 +6306,7 @@ msgstr "Up-to-date!"
|
|||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationViewPage.ts
|
#: src/pages/applications/ApplicationViewPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -6294,6 +6358,10 @@ msgstr "Update Application"
|
|||||||
msgid "Update Binding"
|
msgid "Update Binding"
|
||||||
msgstr "Update Binding"
|
msgstr "Update Binding"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Update Blueprint"
|
||||||
|
msgstr "Update Blueprint"
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Update Certificate-Key Pair"
|
msgid "Update Certificate-Key Pair"
|
||||||
msgstr "Update Certificate-Key Pair"
|
msgstr "Update Certificate-Key Pair"
|
||||||
@ -6763,6 +6831,7 @@ msgstr "Wait (min)"
|
|||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
@ -6943,6 +7012,7 @@ msgstr "XML-based SSO standard. Use this if your application only supports SAML.
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/groups/RelatedGroupList.ts
|
#: src/pages/groups/RelatedGroupList.ts
|
||||||
|
@ -173,6 +173,7 @@ msgid "Action"
|
|||||||
msgstr "Acción"
|
msgstr "Acción"
|
||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/EventListPage.ts
|
#: src/pages/events/EventListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -278,6 +279,7 @@ msgstr "Asignaciones de ámbitos adicionales, que se pasan al proxy."
|
|||||||
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
||||||
msgstr "Ámbitos adicionales que se pasarán al proveedor de OAuth, separados por espacios."
|
msgstr "Ámbitos adicionales que se pasarán al proveedor de OAuth, separados por espacios."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
msgid "Additional settings"
|
msgid "Additional settings"
|
||||||
msgstr "Configuraciones adicionales"
|
msgstr "Configuraciones adicionales"
|
||||||
@ -634,6 +636,10 @@ msgstr "Solicitud autorizada:"
|
|||||||
msgid "Auto-detect (based on your browser)"
|
msgid "Auto-detect (based on your browser)"
|
||||||
msgstr "Detección automática (según su navegador)"
|
msgstr "Detección automática (según su navegador)"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Automate and template configuration within authentik."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/interfaces/UserInterface.ts
|
#: src/interfaces/UserInterface.ts
|
||||||
msgid "Avatar image"
|
msgid "Avatar image"
|
||||||
msgstr "Imagen de avatar"
|
msgstr "Imagen de avatar"
|
||||||
@ -743,6 +749,15 @@ msgstr "Vinculante"
|
|||||||
msgid "Binding Type"
|
msgid "Binding Type"
|
||||||
msgstr "Tipo de enlace"
|
msgstr "Tipo de enlace"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprint(s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/interfaces/AdminInterface.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprints"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Branding settings"
|
msgid "Branding settings"
|
||||||
msgstr "Configuración de marca"
|
msgstr "Configuración de marca"
|
||||||
@ -1134,6 +1149,10 @@ msgstr "Configure la forma en que el puesto avanzado consulta a los usuarios del
|
|||||||
#~ msgid "Configure settings relevant to your user profile."
|
#~ msgid "Configure settings relevant to your user profile."
|
||||||
#~ msgstr "Configure los ajustes relevantes para su perfil de usuario."
|
#~ msgstr "Configure los ajustes relevantes para su perfil de usuario."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Configure the blueprint context, used for templating."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts
|
#: src/pages/providers/saml/SAMLProviderForm.ts
|
||||||
msgid "Configure the maximum allowed time drift for an assertion."
|
msgid "Configure the maximum allowed time drift for an assertion."
|
||||||
msgstr "Configure la desviación de tiempo máxima permitida para una afirmación."
|
msgstr "Configure la desviación de tiempo máxima permitida para una afirmación."
|
||||||
@ -1223,6 +1242,7 @@ msgstr ""
|
|||||||
msgid "Content right"
|
msgid "Content right"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
@ -1277,6 +1297,8 @@ msgstr "Enlace de recuperación de copia"
|
|||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/ApplicationWizard.ts
|
#: src/pages/applications/wizard/ApplicationWizard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -1339,6 +1361,10 @@ msgstr "Crear aplicación"
|
|||||||
msgid "Create Binding"
|
msgid "Create Binding"
|
||||||
msgstr "Crear enlace"
|
msgstr "Crear enlace"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Create Blueprint Instance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Create Certificate-Key Pair"
|
msgid "Create Certificate-Key Pair"
|
||||||
msgstr "Crear par de claves de certificado"
|
msgstr "Crear par de claves de certificado"
|
||||||
@ -1563,6 +1589,7 @@ msgstr "Defina cómo se envían las notificaciones a los usuarios, como el corre
|
|||||||
#: src/elements/user/SessionList.ts
|
#: src/elements/user/SessionList.ts
|
||||||
#: src/elements/user/UserConsentList.ts
|
#: src/elements/user/UserConsentList.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -1746,6 +1773,10 @@ msgstr "Directorio"
|
|||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Discapacitado"
|
msgstr "Discapacitado"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Disabled blueprints are never applied."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
||||||
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
||||||
msgid "Disconnect"
|
msgid "Disconnect"
|
||||||
@ -1927,6 +1958,8 @@ msgstr "Habilitar StartTLS"
|
|||||||
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
||||||
msgstr "Habilite el modo de compatibilidad, aumenta la compatibilidad con los administradores de contraseñas en dispositivos móviles."
|
msgstr "Habilite el modo de compatibilidad, aumenta la compatibilidad con los administradores de contraseñas en dispositivos móviles."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/policies/BoundPoliciesList.ts
|
#: src/pages/policies/BoundPoliciesList.ts
|
||||||
#: src/pages/policies/PolicyBindingForm.ts
|
#: src/pages/policies/PolicyBindingForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
@ -1963,6 +1996,7 @@ msgstr "Flujo de inscripción"
|
|||||||
msgid "EntityID/Issuer"
|
msgid "EntityID/Issuer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Error"
|
msgstr "Error"
|
||||||
@ -2936,6 +2970,10 @@ msgstr "La etiqueta se muestra al lado o encima de la solicitud."
|
|||||||
msgid "Last IP"
|
msgid "Last IP"
|
||||||
msgstr "Última IP"
|
msgstr "Última IP"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Last applied"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/users/RelatedUserList.ts
|
#: src/pages/users/RelatedUserList.ts
|
||||||
#: src/pages/users/UserListPage.ts
|
#: src/pages/users/UserListPage.ts
|
||||||
@ -3048,6 +3086,7 @@ msgstr "Cargando"
|
|||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/TransportForm.ts
|
#: src/pages/events/TransportForm.ts
|
||||||
@ -3351,6 +3390,9 @@ msgstr "Mis solicitudes"
|
|||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairForm.ts
|
#: src/pages/crypto/CertificateKeyPairForm.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
@ -3523,6 +3565,7 @@ msgstr "Nginx (independiente)"
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
@ -3871,6 +3914,10 @@ msgstr ""
|
|||||||
msgid "Order"
|
msgid "Order"
|
||||||
msgstr "Orden"
|
msgstr "Orden"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Orphaned"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Other global settings"
|
msgid "Other global settings"
|
||||||
msgstr "Otros ajustes globales"
|
msgstr "Otros ajustes globales"
|
||||||
@ -4001,6 +4048,7 @@ msgstr "Contraseña: entrada enmascarada, la contraseña se valida contra las fu
|
|||||||
msgid "Passwordless flow"
|
msgid "Passwordless flow"
|
||||||
msgstr "Flujo sin contraseña"
|
msgstr "Flujo sin contraseña"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/users/UserForm.ts
|
#: src/pages/users/UserForm.ts
|
||||||
msgid "Path"
|
msgid "Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4016,6 +4064,10 @@ msgstr ""
|
|||||||
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/elements/user/UserConsentList.ts
|
||||||
|
msgid "Permissions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts
|
#: src/pages/sources/saml/SAMLSourceForm.ts
|
||||||
msgid "Persistent"
|
msgid "Persistent"
|
||||||
msgstr "persistente"
|
msgstr "persistente"
|
||||||
@ -5183,6 +5235,7 @@ msgstr "Estático: valor estático, que se muestra tal cual."
|
|||||||
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
||||||
msgstr "Niega el flujo estáticamente. Para usar esta etapa de manera efectiva, desactive *Evaluar en plan* en el encuadernado respectivo."
|
msgstr "Niega el flujo estáticamente. Para usar esta etapa de manera efectiva, desactive *Evaluar en plan* en el encuadernado respectivo."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Estatus"
|
msgstr "Estatus"
|
||||||
@ -5210,6 +5263,7 @@ msgstr "Modo asignatura"
|
|||||||
msgid "Subject-alt name"
|
msgid "Subject-alt name"
|
||||||
msgstr "Nombre de asunto ALT"
|
msgstr "Nombre de asunto ALT"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Successful"
|
msgid "Successful"
|
||||||
msgstr "Éxito"
|
msgstr "Éxito"
|
||||||
@ -5256,6 +5310,10 @@ msgstr "El flujo se creó correctamente."
|
|||||||
msgid "Successfully created group."
|
msgid "Successfully created group."
|
||||||
msgstr "Se ha creado el grupo correctamente."
|
msgstr "Se ha creado el grupo correctamente."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully created instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully created integration."
|
msgid "Successfully created integration."
|
||||||
@ -5422,6 +5480,10 @@ msgstr "Se actualizó correctamente el flujo."
|
|||||||
msgid "Successfully updated group."
|
msgid "Successfully updated group."
|
||||||
msgstr "El grupo se actualizó correctamente."
|
msgstr "El grupo se actualizó correctamente."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully updated instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully updated integration."
|
msgid "Successfully updated integration."
|
||||||
@ -6095,6 +6157,7 @@ msgstr "Puestos avanzados insalubres"
|
|||||||
msgid "Unique identifier the token is referenced by."
|
msgid "Unique identifier the token is referenced by."
|
||||||
msgstr "Identificador único por el que se hace referencia al token."
|
msgstr "Identificador único por el que se hace referencia al token."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Desconocido"
|
msgstr "Desconocido"
|
||||||
@ -6116,6 +6179,7 @@ msgstr "¡Actuales!"
|
|||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationViewPage.ts
|
#: src/pages/applications/ApplicationViewPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -6167,6 +6231,10 @@ msgstr "Aplicación de actualización"
|
|||||||
msgid "Update Binding"
|
msgid "Update Binding"
|
||||||
msgstr "Enlace de actualización"
|
msgstr "Enlace de actualización"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Update Blueprint"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Update Certificate-Key Pair"
|
msgid "Update Certificate-Key Pair"
|
||||||
msgstr "Actualizar par de claves de certificado"
|
msgstr "Actualizar par de claves de certificado"
|
||||||
@ -6630,6 +6698,7 @@ msgstr "Espera (min)"
|
|||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
@ -6807,6 +6876,7 @@ msgstr ""
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/groups/RelatedGroupList.ts
|
#: src/pages/groups/RelatedGroupList.ts
|
||||||
|
@ -176,6 +176,7 @@ msgid "Action"
|
|||||||
msgstr "Action"
|
msgstr "Action"
|
||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/EventListPage.ts
|
#: src/pages/events/EventListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -281,6 +282,7 @@ msgstr ""
|
|||||||
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
msgid "Additional settings"
|
msgid "Additional settings"
|
||||||
msgstr "Paramètres supplémentaire"
|
msgstr "Paramètres supplémentaire"
|
||||||
@ -640,6 +642,10 @@ msgstr "Application autorisée :"
|
|||||||
msgid "Auto-detect (based on your browser)"
|
msgid "Auto-detect (based on your browser)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Automate and template configuration within authentik."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/interfaces/UserInterface.ts
|
#: src/interfaces/UserInterface.ts
|
||||||
msgid "Avatar image"
|
msgid "Avatar image"
|
||||||
msgstr "Image d'avatar"
|
msgstr "Image d'avatar"
|
||||||
@ -749,6 +755,15 @@ msgstr "Liaison"
|
|||||||
msgid "Binding Type"
|
msgid "Binding Type"
|
||||||
msgstr "Type de binding"
|
msgstr "Type de binding"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprint(s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/interfaces/AdminInterface.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprints"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Branding settings"
|
msgid "Branding settings"
|
||||||
msgstr "Paramètres de marque"
|
msgstr "Paramètres de marque"
|
||||||
@ -1143,6 +1158,10 @@ msgstr ""
|
|||||||
#~ msgid "Configure settings relevant to your user profile."
|
#~ msgid "Configure settings relevant to your user profile."
|
||||||
#~ msgstr "Configure les paramètre applicable à votre profil."
|
#~ msgstr "Configure les paramètre applicable à votre profil."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Configure the blueprint context, used for templating."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts
|
#: src/pages/providers/saml/SAMLProviderForm.ts
|
||||||
msgid "Configure the maximum allowed time drift for an assertion."
|
msgid "Configure the maximum allowed time drift for an assertion."
|
||||||
msgstr "Configure la dérive temporelle maximale d'une assetion."
|
msgstr "Configure la dérive temporelle maximale d'une assetion."
|
||||||
@ -1234,6 +1253,7 @@ msgstr ""
|
|||||||
msgid "Content right"
|
msgid "Content right"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
@ -1289,6 +1309,8 @@ msgstr "Copier le lien de récupération"
|
|||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/ApplicationWizard.ts
|
#: src/pages/applications/wizard/ApplicationWizard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -1351,6 +1373,10 @@ msgstr "Créer une application"
|
|||||||
msgid "Create Binding"
|
msgid "Create Binding"
|
||||||
msgstr "Créer une liaison"
|
msgstr "Créer une liaison"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Create Blueprint Instance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Create Certificate-Key Pair"
|
msgid "Create Certificate-Key Pair"
|
||||||
msgstr "Créer une paire clé/certificat"
|
msgstr "Créer une paire clé/certificat"
|
||||||
@ -1577,6 +1603,7 @@ msgstr "Définit les méthodes d'envoi des notifications aux utilisateurs, telle
|
|||||||
#: src/elements/user/SessionList.ts
|
#: src/elements/user/SessionList.ts
|
||||||
#: src/elements/user/UserConsentList.ts
|
#: src/elements/user/UserConsentList.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -1763,6 +1790,10 @@ msgstr ""
|
|||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Désactivé"
|
msgstr "Désactivé"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Disabled blueprints are never applied."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
||||||
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
||||||
msgid "Disconnect"
|
msgid "Disconnect"
|
||||||
@ -1949,6 +1980,8 @@ msgstr "Activer StartTLS"
|
|||||||
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
||||||
msgstr "Activer le mode de compatibilité, améliore la compatibilité avec les gestionnaires de mot de passe sur les équipements mobiles."
|
msgstr "Activer le mode de compatibilité, améliore la compatibilité avec les gestionnaires de mot de passe sur les équipements mobiles."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/policies/BoundPoliciesList.ts
|
#: src/pages/policies/BoundPoliciesList.ts
|
||||||
#: src/pages/policies/PolicyBindingForm.ts
|
#: src/pages/policies/PolicyBindingForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
@ -1985,6 +2018,7 @@ msgstr "Flux d'inscription"
|
|||||||
msgid "EntityID/Issuer"
|
msgid "EntityID/Issuer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Erreur"
|
msgstr "Erreur"
|
||||||
@ -2967,6 +3001,10 @@ msgstr "Libellé affiché à côté/au-dessus du champ."
|
|||||||
msgid "Last IP"
|
msgid "Last IP"
|
||||||
msgstr "Dernière IP"
|
msgstr "Dernière IP"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Last applied"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/users/RelatedUserList.ts
|
#: src/pages/users/RelatedUserList.ts
|
||||||
#: src/pages/users/UserListPage.ts
|
#: src/pages/users/UserListPage.ts
|
||||||
@ -3079,6 +3117,7 @@ msgstr "Chargement en cours"
|
|||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/TransportForm.ts
|
#: src/pages/events/TransportForm.ts
|
||||||
@ -3382,6 +3421,9 @@ msgstr "Mes applications"
|
|||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairForm.ts
|
#: src/pages/crypto/CertificateKeyPairForm.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
@ -3554,6 +3596,7 @@ msgstr ""
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
@ -3906,6 +3949,10 @@ msgstr ""
|
|||||||
msgid "Order"
|
msgid "Order"
|
||||||
msgstr "Tri"
|
msgstr "Tri"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Orphaned"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Other global settings"
|
msgid "Other global settings"
|
||||||
msgstr "Autres paramètres globaux"
|
msgstr "Autres paramètres globaux"
|
||||||
@ -4037,6 +4084,7 @@ msgstr "Mot de passe : Entrée masquée, le mot de passe est vérifié par les s
|
|||||||
msgid "Passwordless flow"
|
msgid "Passwordless flow"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/users/UserForm.ts
|
#: src/pages/users/UserForm.ts
|
||||||
msgid "Path"
|
msgid "Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4052,6 +4100,10 @@ msgstr ""
|
|||||||
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/elements/user/UserConsentList.ts
|
||||||
|
msgid "Permissions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts
|
#: src/pages/sources/saml/SAMLSourceForm.ts
|
||||||
msgid "Persistent"
|
msgid "Persistent"
|
||||||
msgstr "Persistant"
|
msgstr "Persistant"
|
||||||
@ -5236,6 +5288,7 @@ msgstr "Statique : valeur statique, affichée comme telle."
|
|||||||
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
||||||
msgstr "Refuser statiquement le flux. Pour utiliser cette étape efficacement, désactivez *Évaluer en planification* dans la liaison applicable."
|
msgstr "Refuser statiquement le flux. Pour utiliser cette étape efficacement, désactivez *Évaluer en planification* dans la liaison applicable."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Statut"
|
msgstr "Statut"
|
||||||
@ -5271,6 +5324,7 @@ msgstr "Mode subject"
|
|||||||
msgid "Subject-alt name"
|
msgid "Subject-alt name"
|
||||||
msgstr "Nom alternatif subject"
|
msgstr "Nom alternatif subject"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Successful"
|
msgid "Successful"
|
||||||
msgstr "Réussite"
|
msgstr "Réussite"
|
||||||
@ -5317,6 +5371,10 @@ msgstr "Flux créé avec succès"
|
|||||||
msgid "Successfully created group."
|
msgid "Successfully created group."
|
||||||
msgstr "Groupe créé avec succès"
|
msgstr "Groupe créé avec succès"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully created instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully created integration."
|
msgid "Successfully created integration."
|
||||||
@ -5483,6 +5541,10 @@ msgstr "Flux mis à jour avec succès"
|
|||||||
msgid "Successfully updated group."
|
msgid "Successfully updated group."
|
||||||
msgstr "Groupe mis à jour avec succès"
|
msgstr "Groupe mis à jour avec succès"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully updated instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully updated integration."
|
msgid "Successfully updated integration."
|
||||||
@ -6153,6 +6215,7 @@ msgstr "Avant-postes malades"
|
|||||||
msgid "Unique identifier the token is referenced by."
|
msgid "Unique identifier the token is referenced by."
|
||||||
msgstr "Identifiant unique par lequel le jeton est référencé."
|
msgstr "Identifiant unique par lequel le jeton est référencé."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Inconnu"
|
msgstr "Inconnu"
|
||||||
@ -6174,6 +6237,7 @@ msgstr "À jour !"
|
|||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationViewPage.ts
|
#: src/pages/applications/ApplicationViewPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -6225,6 +6289,10 @@ msgstr "Mettre à jour l'application"
|
|||||||
msgid "Update Binding"
|
msgid "Update Binding"
|
||||||
msgstr "Mettre à jour la liaison"
|
msgstr "Mettre à jour la liaison"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Update Blueprint"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Update Certificate-Key Pair"
|
msgid "Update Certificate-Key Pair"
|
||||||
msgstr "Mettre à jour la paire clé/certificat"
|
msgstr "Mettre à jour la paire clé/certificat"
|
||||||
@ -6692,6 +6760,7 @@ msgstr "Attente (min)"
|
|||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
@ -6868,6 +6937,7 @@ msgstr ""
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/groups/RelatedGroupList.ts
|
#: src/pages/groups/RelatedGroupList.ts
|
||||||
|
@ -173,6 +173,7 @@ msgid "Action"
|
|||||||
msgstr "Akcja"
|
msgstr "Akcja"
|
||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/EventListPage.ts
|
#: src/pages/events/EventListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -278,6 +279,7 @@ msgstr "Dodatkowe mapowania zakresu, które są przekazywane do serwera proxy."
|
|||||||
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
||||||
msgstr "Dodatkowe zakresy do przekazania do dostawcy OAuth, oddzielone spacją."
|
msgstr "Dodatkowe zakresy do przekazania do dostawcy OAuth, oddzielone spacją."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
msgid "Additional settings"
|
msgid "Additional settings"
|
||||||
msgstr "Dodatkowe ustawienia"
|
msgstr "Dodatkowe ustawienia"
|
||||||
@ -634,6 +636,10 @@ msgstr "Autoryzowana aplikacja:"
|
|||||||
msgid "Auto-detect (based on your browser)"
|
msgid "Auto-detect (based on your browser)"
|
||||||
msgstr "Automatycznie wykryj (na podstawie Twojej przeglądarki)"
|
msgstr "Automatycznie wykryj (na podstawie Twojej przeglądarki)"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Automate and template configuration within authentik."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/interfaces/UserInterface.ts
|
#: src/interfaces/UserInterface.ts
|
||||||
msgid "Avatar image"
|
msgid "Avatar image"
|
||||||
msgstr "Obraz awatara"
|
msgstr "Obraz awatara"
|
||||||
@ -740,6 +746,15 @@ msgstr "Wiązanie"
|
|||||||
msgid "Binding Type"
|
msgid "Binding Type"
|
||||||
msgstr "Typ wiązania"
|
msgstr "Typ wiązania"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprint(s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/interfaces/AdminInterface.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprints"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Branding settings"
|
msgid "Branding settings"
|
||||||
msgstr "Ustawienia brandingowe"
|
msgstr "Ustawienia brandingowe"
|
||||||
@ -1131,6 +1146,10 @@ msgstr "Skonfiguruj sposób, w jaki placówka wysyła zapytania do użytkownikó
|
|||||||
#~ msgid "Configure settings relevant to your user profile."
|
#~ msgid "Configure settings relevant to your user profile."
|
||||||
#~ msgstr "Skonfiguruj ustawienia odpowiednie dla Twojego profilu użytkownika."
|
#~ msgstr "Skonfiguruj ustawienia odpowiednie dla Twojego profilu użytkownika."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Configure the blueprint context, used for templating."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts
|
#: src/pages/providers/saml/SAMLProviderForm.ts
|
||||||
msgid "Configure the maximum allowed time drift for an assertion."
|
msgid "Configure the maximum allowed time drift for an assertion."
|
||||||
msgstr "Skonfiguruj maksymalny dozwolony dryft czasu dla asercji."
|
msgstr "Skonfiguruj maksymalny dozwolony dryft czasu dla asercji."
|
||||||
@ -1220,6 +1239,7 @@ msgstr ""
|
|||||||
msgid "Content right"
|
msgid "Content right"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
@ -1274,6 +1294,8 @@ msgstr "Skopiuj link odzyskiwania"
|
|||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/ApplicationWizard.ts
|
#: src/pages/applications/wizard/ApplicationWizard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -1336,6 +1358,10 @@ msgstr "Utwórz aplikację"
|
|||||||
msgid "Create Binding"
|
msgid "Create Binding"
|
||||||
msgstr "Utwórz powiązanie"
|
msgstr "Utwórz powiązanie"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Create Blueprint Instance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Create Certificate-Key Pair"
|
msgid "Create Certificate-Key Pair"
|
||||||
msgstr "Utwórz parę certyfikat-klucz"
|
msgstr "Utwórz parę certyfikat-klucz"
|
||||||
@ -1560,6 +1586,7 @@ msgstr "Określ sposób wysyłania powiadomień do użytkowników, takich jak e-
|
|||||||
#: src/elements/user/SessionList.ts
|
#: src/elements/user/SessionList.ts
|
||||||
#: src/elements/user/UserConsentList.ts
|
#: src/elements/user/UserConsentList.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -1743,6 +1770,10 @@ msgstr "Katalog"
|
|||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Wyłączone"
|
msgstr "Wyłączone"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Disabled blueprints are never applied."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
||||||
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
||||||
msgid "Disconnect"
|
msgid "Disconnect"
|
||||||
@ -1924,6 +1955,8 @@ msgstr "Włącz StartTLS"
|
|||||||
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
||||||
msgstr "Włącz tryb zgodności, zwiększa zgodność z menedżerami haseł na urządzeniach mobilnych."
|
msgstr "Włącz tryb zgodności, zwiększa zgodność z menedżerami haseł na urządzeniach mobilnych."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/policies/BoundPoliciesList.ts
|
#: src/pages/policies/BoundPoliciesList.ts
|
||||||
#: src/pages/policies/PolicyBindingForm.ts
|
#: src/pages/policies/PolicyBindingForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
@ -1960,6 +1993,7 @@ msgstr "Przepływ rejestracji"
|
|||||||
msgid "EntityID/Issuer"
|
msgid "EntityID/Issuer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Błąd"
|
msgstr "Błąd"
|
||||||
@ -2933,6 +2967,10 @@ msgstr "Etykieta pokazana obok/nad monitem."
|
|||||||
msgid "Last IP"
|
msgid "Last IP"
|
||||||
msgstr "Ostatni adres IP"
|
msgstr "Ostatni adres IP"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Last applied"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/users/RelatedUserList.ts
|
#: src/pages/users/RelatedUserList.ts
|
||||||
#: src/pages/users/UserListPage.ts
|
#: src/pages/users/UserListPage.ts
|
||||||
@ -3045,6 +3083,7 @@ msgstr "Ładowanie"
|
|||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/TransportForm.ts
|
#: src/pages/events/TransportForm.ts
|
||||||
@ -3348,6 +3387,9 @@ msgstr "Moje aplikacje"
|
|||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairForm.ts
|
#: src/pages/crypto/CertificateKeyPairForm.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
@ -3520,6 +3562,7 @@ msgstr "Nginx (standalone)"
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
@ -3868,6 +3911,10 @@ msgstr ""
|
|||||||
msgid "Order"
|
msgid "Order"
|
||||||
msgstr "Kolejność"
|
msgstr "Kolejność"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Orphaned"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Other global settings"
|
msgid "Other global settings"
|
||||||
msgstr "Inne ustawienia globalne"
|
msgstr "Inne ustawienia globalne"
|
||||||
@ -3998,6 +4045,7 @@ msgstr "Hasło: wejście zamaskowane, hasło jest sprawdzane w oparciu o źród
|
|||||||
msgid "Passwordless flow"
|
msgid "Passwordless flow"
|
||||||
msgstr "Przepływ bezhasłowy"
|
msgstr "Przepływ bezhasłowy"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/users/UserForm.ts
|
#: src/pages/users/UserForm.ts
|
||||||
msgid "Path"
|
msgid "Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4013,6 +4061,10 @@ msgstr ""
|
|||||||
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/elements/user/UserConsentList.ts
|
||||||
|
msgid "Permissions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts
|
#: src/pages/sources/saml/SAMLSourceForm.ts
|
||||||
msgid "Persistent"
|
msgid "Persistent"
|
||||||
msgstr "Trwały"
|
msgstr "Trwały"
|
||||||
@ -5180,6 +5232,7 @@ msgstr "Statyczny: wartość statyczna, wyświetlana w stanie, w jakim jest."
|
|||||||
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
||||||
msgstr "Statycznie zaprzeczaj przepływowi. Aby efektywnie korzystać z tego etapu, wyłącz opcję *Oceń zgodnie z planem* w odpowiednim powiązaniu."
|
msgstr "Statycznie zaprzeczaj przepływowi. Aby efektywnie korzystać z tego etapu, wyłącz opcję *Oceń zgodnie z planem* w odpowiednim powiązaniu."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Status"
|
msgstr "Status"
|
||||||
@ -5207,6 +5260,7 @@ msgstr "Tryb przedmiotu"
|
|||||||
msgid "Subject-alt name"
|
msgid "Subject-alt name"
|
||||||
msgstr "Alternatywna nazwa tematu"
|
msgstr "Alternatywna nazwa tematu"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Successful"
|
msgid "Successful"
|
||||||
msgstr "Pomyślny"
|
msgstr "Pomyślny"
|
||||||
@ -5253,6 +5307,10 @@ msgstr "Pomyślnie utworzono przepływ."
|
|||||||
msgid "Successfully created group."
|
msgid "Successfully created group."
|
||||||
msgstr "Pomyślnie utworzono grupę."
|
msgstr "Pomyślnie utworzono grupę."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully created instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully created integration."
|
msgid "Successfully created integration."
|
||||||
@ -5419,6 +5477,10 @@ msgstr "Pomyślnie zaktualizowano przepływ."
|
|||||||
msgid "Successfully updated group."
|
msgid "Successfully updated group."
|
||||||
msgstr "Pomyślnie zaktualizowano grupę."
|
msgstr "Pomyślnie zaktualizowano grupę."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully updated instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully updated integration."
|
msgid "Successfully updated integration."
|
||||||
@ -6092,6 +6154,7 @@ msgstr "Niezdrowe placówki"
|
|||||||
msgid "Unique identifier the token is referenced by."
|
msgid "Unique identifier the token is referenced by."
|
||||||
msgstr "Unikalny identyfikator, do którego odwołuje się token."
|
msgstr "Unikalny identyfikator, do którego odwołuje się token."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Nieznany"
|
msgstr "Nieznany"
|
||||||
@ -6113,6 +6176,7 @@ msgstr "Aktualny!"
|
|||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationViewPage.ts
|
#: src/pages/applications/ApplicationViewPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -6164,6 +6228,10 @@ msgstr "Aktualizuj aplikację"
|
|||||||
msgid "Update Binding"
|
msgid "Update Binding"
|
||||||
msgstr "Zaktualizuj wiązanie"
|
msgstr "Zaktualizuj wiązanie"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Update Blueprint"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Update Certificate-Key Pair"
|
msgid "Update Certificate-Key Pair"
|
||||||
msgstr "Aktualizuj parę certyfikat-klucz"
|
msgstr "Aktualizuj parę certyfikat-klucz"
|
||||||
@ -6627,6 +6695,7 @@ msgstr "Czekaj (min)"
|
|||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
@ -6804,6 +6873,7 @@ msgstr ""
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/groups/RelatedGroupList.ts
|
#: src/pages/groups/RelatedGroupList.ts
|
||||||
|
@ -171,6 +171,7 @@ msgid "Action"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/EventListPage.ts
|
#: src/pages/events/EventListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -276,6 +277,7 @@ msgstr ""
|
|||||||
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
msgid "Additional settings"
|
msgid "Additional settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -632,6 +634,10 @@ msgstr ""
|
|||||||
msgid "Auto-detect (based on your browser)"
|
msgid "Auto-detect (based on your browser)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Automate and template configuration within authentik."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/interfaces/UserInterface.ts
|
#: src/interfaces/UserInterface.ts
|
||||||
msgid "Avatar image"
|
msgid "Avatar image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -741,6 +747,15 @@ msgstr ""
|
|||||||
msgid "Binding Type"
|
msgid "Binding Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprint(s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/interfaces/AdminInterface.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprints"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Branding settings"
|
msgid "Branding settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1138,6 +1153,10 @@ msgstr ""
|
|||||||
#~ msgid "Configure settings relevant to your user profile."
|
#~ msgid "Configure settings relevant to your user profile."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Configure the blueprint context, used for templating."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts
|
#: src/pages/providers/saml/SAMLProviderForm.ts
|
||||||
msgid "Configure the maximum allowed time drift for an assertion."
|
msgid "Configure the maximum allowed time drift for an assertion."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1229,6 +1248,7 @@ msgstr ""
|
|||||||
msgid "Content right"
|
msgid "Content right"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
@ -1284,6 +1304,8 @@ msgstr ""
|
|||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/ApplicationWizard.ts
|
#: src/pages/applications/wizard/ApplicationWizard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -1346,6 +1368,10 @@ msgstr ""
|
|||||||
msgid "Create Binding"
|
msgid "Create Binding"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Create Blueprint Instance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Create Certificate-Key Pair"
|
msgid "Create Certificate-Key Pair"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1572,6 +1598,7 @@ msgstr ""
|
|||||||
#: src/elements/user/SessionList.ts
|
#: src/elements/user/SessionList.ts
|
||||||
#: src/elements/user/UserConsentList.ts
|
#: src/elements/user/UserConsentList.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -1766,6 +1793,10 @@ msgstr ""
|
|||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Disabled blueprints are never applied."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
||||||
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
||||||
msgid "Disconnect"
|
msgid "Disconnect"
|
||||||
@ -1954,6 +1985,8 @@ msgstr ""
|
|||||||
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/policies/BoundPoliciesList.ts
|
#: src/pages/policies/BoundPoliciesList.ts
|
||||||
#: src/pages/policies/PolicyBindingForm.ts
|
#: src/pages/policies/PolicyBindingForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
@ -1990,6 +2023,7 @@ msgstr ""
|
|||||||
msgid "EntityID/Issuer"
|
msgid "EntityID/Issuer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2976,6 +3010,10 @@ msgstr ""
|
|||||||
msgid "Last IP"
|
msgid "Last IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Last applied"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/users/RelatedUserList.ts
|
#: src/pages/users/RelatedUserList.ts
|
||||||
#: src/pages/users/UserListPage.ts
|
#: src/pages/users/UserListPage.ts
|
||||||
@ -3089,6 +3127,7 @@ msgstr ""
|
|||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/TransportForm.ts
|
#: src/pages/events/TransportForm.ts
|
||||||
@ -3393,6 +3432,9 @@ msgstr ""
|
|||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairForm.ts
|
#: src/pages/crypto/CertificateKeyPairForm.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
@ -3565,6 +3607,7 @@ msgstr ""
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
@ -3920,6 +3963,10 @@ msgstr ""
|
|||||||
msgid "Order"
|
msgid "Order"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Orphaned"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Other global settings"
|
msgid "Other global settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4054,6 +4101,7 @@ msgstr ""
|
|||||||
msgid "Passwordless flow"
|
msgid "Passwordless flow"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/users/UserForm.ts
|
#: src/pages/users/UserForm.ts
|
||||||
msgid "Path"
|
msgid "Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4069,6 +4117,10 @@ msgstr ""
|
|||||||
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/elements/user/UserConsentList.ts
|
||||||
|
msgid "Permissions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts
|
#: src/pages/sources/saml/SAMLSourceForm.ts
|
||||||
msgid "Persistent"
|
msgid "Persistent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -5265,6 +5317,7 @@ msgstr ""
|
|||||||
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -5300,6 +5353,7 @@ msgstr ""
|
|||||||
msgid "Subject-alt name"
|
msgid "Subject-alt name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Successful"
|
msgid "Successful"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -5346,6 +5400,10 @@ msgstr ""
|
|||||||
msgid "Successfully created group."
|
msgid "Successfully created group."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully created instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully created integration."
|
msgid "Successfully created integration."
|
||||||
@ -5514,6 +5572,10 @@ msgstr ""
|
|||||||
msgid "Successfully updated group."
|
msgid "Successfully updated group."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully updated instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully updated integration."
|
msgid "Successfully updated integration."
|
||||||
@ -6191,6 +6253,7 @@ msgstr ""
|
|||||||
msgid "Unique identifier the token is referenced by."
|
msgid "Unique identifier the token is referenced by."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6213,6 +6276,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationViewPage.ts
|
#: src/pages/applications/ApplicationViewPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -6264,6 +6328,10 @@ msgstr ""
|
|||||||
msgid "Update Binding"
|
msgid "Update Binding"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Update Blueprint"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Update Certificate-Key Pair"
|
msgid "Update Certificate-Key Pair"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6733,6 +6801,7 @@ msgstr ""
|
|||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
@ -6909,6 +6978,7 @@ msgstr ""
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/groups/RelatedGroupList.ts
|
#: src/pages/groups/RelatedGroupList.ts
|
||||||
|
@ -173,6 +173,7 @@ msgid "Action"
|
|||||||
msgstr "Eylem"
|
msgstr "Eylem"
|
||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/EventListPage.ts
|
#: src/pages/events/EventListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -278,6 +279,7 @@ msgstr "Proxy'ye iletilen ek kapsam eşlemeleri."
|
|||||||
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
||||||
msgstr "OAuth Sağlayıcıya iletilecek ek kapsamlar, boşlukla ayrılmış."
|
msgstr "OAuth Sağlayıcıya iletilecek ek kapsamlar, boşlukla ayrılmış."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
msgid "Additional settings"
|
msgid "Additional settings"
|
||||||
msgstr "Ek ayarlar"
|
msgstr "Ek ayarlar"
|
||||||
@ -634,6 +636,10 @@ msgstr "Yetkili başvuru:"
|
|||||||
msgid "Auto-detect (based on your browser)"
|
msgid "Auto-detect (based on your browser)"
|
||||||
msgstr "Otomatik algıla (tarayıcınıza göre)"
|
msgstr "Otomatik algıla (tarayıcınıza göre)"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Automate and template configuration within authentik."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/interfaces/UserInterface.ts
|
#: src/interfaces/UserInterface.ts
|
||||||
msgid "Avatar image"
|
msgid "Avatar image"
|
||||||
msgstr "Avatar resmi"
|
msgstr "Avatar resmi"
|
||||||
@ -743,6 +749,15 @@ msgstr "Ciltleme"
|
|||||||
msgid "Binding Type"
|
msgid "Binding Type"
|
||||||
msgstr "Bağlama Tipi"
|
msgstr "Bağlama Tipi"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprint(s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/interfaces/AdminInterface.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprints"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Branding settings"
|
msgid "Branding settings"
|
||||||
msgstr "Markalama ayarları"
|
msgstr "Markalama ayarları"
|
||||||
@ -1134,6 +1149,10 @@ msgstr "Üssün çekirdek authentik sunucusunun kullanıcılarını nasıl sorgu
|
|||||||
#~ msgid "Configure settings relevant to your user profile."
|
#~ msgid "Configure settings relevant to your user profile."
|
||||||
#~ msgstr "Kullanıcı profilinizle ilgili ayarları yapılandırın."
|
#~ msgstr "Kullanıcı profilinizle ilgili ayarları yapılandırın."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Configure the blueprint context, used for templating."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts
|
#: src/pages/providers/saml/SAMLProviderForm.ts
|
||||||
msgid "Configure the maximum allowed time drift for an assertion."
|
msgid "Configure the maximum allowed time drift for an assertion."
|
||||||
msgstr "Bir onaylama işlemi için izin verilen maksimum zaman kaymasını yapılandırın."
|
msgstr "Bir onaylama işlemi için izin verilen maksimum zaman kaymasını yapılandırın."
|
||||||
@ -1223,6 +1242,7 @@ msgstr ""
|
|||||||
msgid "Content right"
|
msgid "Content right"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
@ -1277,6 +1297,8 @@ msgstr "Kurtarma bağlantısı kopyalama"
|
|||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/ApplicationWizard.ts
|
#: src/pages/applications/wizard/ApplicationWizard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -1339,6 +1361,10 @@ msgstr "Uygulama Oluştur"
|
|||||||
msgid "Create Binding"
|
msgid "Create Binding"
|
||||||
msgstr "Bağlama Oluştur"
|
msgstr "Bağlama Oluştur"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Create Blueprint Instance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Create Certificate-Key Pair"
|
msgid "Create Certificate-Key Pair"
|
||||||
msgstr "Sertifika Anahtarı Çifti Oluştur"
|
msgstr "Sertifika Anahtarı Çifti Oluştur"
|
||||||
@ -1563,6 +1589,7 @@ msgstr "E-posta veya Webhook gibi kullanıcılara bildirimlerin nasıl gönderil
|
|||||||
#: src/elements/user/SessionList.ts
|
#: src/elements/user/SessionList.ts
|
||||||
#: src/elements/user/UserConsentList.ts
|
#: src/elements/user/UserConsentList.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -1746,6 +1773,10 @@ msgstr "Rehber"
|
|||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Devre Dışı"
|
msgstr "Devre Dışı"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Disabled blueprints are never applied."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
||||||
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
||||||
msgid "Disconnect"
|
msgid "Disconnect"
|
||||||
@ -1927,6 +1958,8 @@ msgstr "StartTLS'yi Etkinleştir"
|
|||||||
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
||||||
msgstr "Uyumluluk modunu etkinleştirin, mobil cihazlarda parola yöneticileri ile uyumluluğu artırır."
|
msgstr "Uyumluluk modunu etkinleştirin, mobil cihazlarda parola yöneticileri ile uyumluluğu artırır."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/policies/BoundPoliciesList.ts
|
#: src/pages/policies/BoundPoliciesList.ts
|
||||||
#: src/pages/policies/PolicyBindingForm.ts
|
#: src/pages/policies/PolicyBindingForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
@ -1963,6 +1996,7 @@ msgstr "Kayıt akışı"
|
|||||||
msgid "EntityID/Issuer"
|
msgid "EntityID/Issuer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Hata"
|
msgstr "Hata"
|
||||||
@ -2937,6 +2971,10 @@ msgstr "Etiket, istemin yanında veya üstünde gösterilir."
|
|||||||
msgid "Last IP"
|
msgid "Last IP"
|
||||||
msgstr "Son IP"
|
msgstr "Son IP"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Last applied"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/users/RelatedUserList.ts
|
#: src/pages/users/RelatedUserList.ts
|
||||||
#: src/pages/users/UserListPage.ts
|
#: src/pages/users/UserListPage.ts
|
||||||
@ -3049,6 +3087,7 @@ msgstr "Yükleniyor"
|
|||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/TransportForm.ts
|
#: src/pages/events/TransportForm.ts
|
||||||
@ -3352,6 +3391,9 @@ msgstr "Uygulamalarım"
|
|||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairForm.ts
|
#: src/pages/crypto/CertificateKeyPairForm.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
@ -3524,6 +3566,7 @@ msgstr "Nginx (bağımsız)"
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
@ -3873,6 +3916,10 @@ msgstr ""
|
|||||||
msgid "Order"
|
msgid "Order"
|
||||||
msgstr "Sıra"
|
msgstr "Sıra"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Orphaned"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Other global settings"
|
msgid "Other global settings"
|
||||||
msgstr "Diğer genel ayarlar"
|
msgstr "Diğer genel ayarlar"
|
||||||
@ -4003,6 +4050,7 @@ msgstr "Parola: Maskeli giriş, parola kaynaklara karşı doğrulanır. İlkeler
|
|||||||
msgid "Passwordless flow"
|
msgid "Passwordless flow"
|
||||||
msgstr "Parolasız akış"
|
msgstr "Parolasız akış"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/users/UserForm.ts
|
#: src/pages/users/UserForm.ts
|
||||||
msgid "Path"
|
msgid "Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4018,6 +4066,10 @@ msgstr ""
|
|||||||
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/elements/user/UserConsentList.ts
|
||||||
|
msgid "Permissions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts
|
#: src/pages/sources/saml/SAMLSourceForm.ts
|
||||||
msgid "Persistent"
|
msgid "Persistent"
|
||||||
msgstr "Kalıcı"
|
msgstr "Kalıcı"
|
||||||
@ -5185,6 +5237,7 @@ msgstr "Statik: Statik değer, olduğu gibi görüntülenir."
|
|||||||
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
||||||
msgstr "Akışı statik olarak reddet. Bu aşamayı etkili bir şekilde kullanmak için ilgili bağlama üzerinde *Planda değerlendirme* devre dışı bırakın."
|
msgstr "Akışı statik olarak reddet. Bu aşamayı etkili bir şekilde kullanmak için ilgili bağlama üzerinde *Planda değerlendirme* devre dışı bırakın."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Durum"
|
msgstr "Durum"
|
||||||
@ -5212,6 +5265,7 @@ msgstr "Konu modu"
|
|||||||
msgid "Subject-alt name"
|
msgid "Subject-alt name"
|
||||||
msgstr "Konu-alt adı"
|
msgstr "Konu-alt adı"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Successful"
|
msgid "Successful"
|
||||||
msgstr "Başarılı"
|
msgstr "Başarılı"
|
||||||
@ -5258,6 +5312,10 @@ msgstr "Akış başarıyla oluşturuldu."
|
|||||||
msgid "Successfully created group."
|
msgid "Successfully created group."
|
||||||
msgstr "Grup başarıyla oluşturuldu."
|
msgstr "Grup başarıyla oluşturuldu."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully created instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully created integration."
|
msgid "Successfully created integration."
|
||||||
@ -5424,6 +5482,10 @@ msgstr "Akış başarıyla güncellendi."
|
|||||||
msgid "Successfully updated group."
|
msgid "Successfully updated group."
|
||||||
msgstr "Grup başarıyla güncellendi."
|
msgstr "Grup başarıyla güncellendi."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully updated instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully updated integration."
|
msgid "Successfully updated integration."
|
||||||
@ -6097,6 +6159,7 @@ msgstr "Sağlıksız üsler"
|
|||||||
msgid "Unique identifier the token is referenced by."
|
msgid "Unique identifier the token is referenced by."
|
||||||
msgstr "Belirteç tarafından başvurulan benzersiz tanımlayıcı."
|
msgstr "Belirteç tarafından başvurulan benzersiz tanımlayıcı."
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "bilinmeyen"
|
msgstr "bilinmeyen"
|
||||||
@ -6118,6 +6181,7 @@ msgstr "Güncel!"
|
|||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationViewPage.ts
|
#: src/pages/applications/ApplicationViewPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -6169,6 +6233,10 @@ msgstr "Uygulamayı Güncelle"
|
|||||||
msgid "Update Binding"
|
msgid "Update Binding"
|
||||||
msgstr "Ciltlemeyi Güncelle"
|
msgstr "Ciltlemeyi Güncelle"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Update Blueprint"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Update Certificate-Key Pair"
|
msgid "Update Certificate-Key Pair"
|
||||||
msgstr "Sertifika Anahtarı Çiftini Güncelleştir"
|
msgstr "Sertifika Anahtarı Çiftini Güncelleştir"
|
||||||
@ -6632,6 +6700,7 @@ msgstr "Bekle (dk)"
|
|||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
@ -6809,6 +6878,7 @@ msgstr ""
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/groups/RelatedGroupList.ts
|
#: src/pages/groups/RelatedGroupList.ts
|
||||||
|
@ -174,6 +174,7 @@ msgid "Action"
|
|||||||
msgstr "操作"
|
msgstr "操作"
|
||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/EventListPage.ts
|
#: src/pages/events/EventListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -278,6 +279,7 @@ msgstr "传递给代理的额外作用域映射。"
|
|||||||
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
||||||
msgstr "要传递给 OAuth 提供商的额外作用域,用空格分隔。"
|
msgstr "要传递给 OAuth 提供商的额外作用域,用空格分隔。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
msgid "Additional settings"
|
msgid "Additional settings"
|
||||||
msgstr "其他设置"
|
msgstr "其他设置"
|
||||||
@ -632,6 +634,10 @@ msgstr "已授权应用程序:"
|
|||||||
msgid "Auto-detect (based on your browser)"
|
msgid "Auto-detect (based on your browser)"
|
||||||
msgstr "自动检测(基于您的浏览器)"
|
msgstr "自动检测(基于您的浏览器)"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Automate and template configuration within authentik."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/interfaces/UserInterface.ts
|
#: src/interfaces/UserInterface.ts
|
||||||
msgid "Avatar image"
|
msgid "Avatar image"
|
||||||
msgstr "头像图片"
|
msgstr "头像图片"
|
||||||
@ -738,6 +744,15 @@ msgstr "绑定"
|
|||||||
msgid "Binding Type"
|
msgid "Binding Type"
|
||||||
msgstr "绑定类型"
|
msgstr "绑定类型"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprint(s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/interfaces/AdminInterface.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprints"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Branding settings"
|
msgid "Branding settings"
|
||||||
msgstr "品牌设置"
|
msgstr "品牌设置"
|
||||||
@ -1129,6 +1144,10 @@ msgstr "配置前哨如何查询核心 authentik 服务器的用户。"
|
|||||||
#~ msgid "Configure settings relevant to your user profile."
|
#~ msgid "Configure settings relevant to your user profile."
|
||||||
#~ msgstr "配置与您的用户资料相关的设置。"
|
#~ msgstr "配置与您的用户资料相关的设置。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Configure the blueprint context, used for templating."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts
|
#: src/pages/providers/saml/SAMLProviderForm.ts
|
||||||
msgid "Configure the maximum allowed time drift for an assertion."
|
msgid "Configure the maximum allowed time drift for an assertion."
|
||||||
msgstr "为断言配置允许的最大时间漂移。"
|
msgstr "为断言配置允许的最大时间漂移。"
|
||||||
@ -1218,6 +1237,7 @@ msgstr "内容左侧"
|
|||||||
msgid "Content right"
|
msgid "Content right"
|
||||||
msgstr "内容右侧"
|
msgstr "内容右侧"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
@ -1272,6 +1292,8 @@ msgstr "复制恢复链接"
|
|||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/ApplicationWizard.ts
|
#: src/pages/applications/wizard/ApplicationWizard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -1334,6 +1356,10 @@ msgstr "创建应用程序"
|
|||||||
msgid "Create Binding"
|
msgid "Create Binding"
|
||||||
msgstr "创建绑定"
|
msgstr "创建绑定"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Create Blueprint Instance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Create Certificate-Key Pair"
|
msgid "Create Certificate-Key Pair"
|
||||||
msgstr "创建证书密钥对"
|
msgstr "创建证书密钥对"
|
||||||
@ -1558,6 +1584,7 @@ msgstr "定义如何向用户发送通知,例如电子邮件或 Webhook。"
|
|||||||
#: src/elements/user/SessionList.ts
|
#: src/elements/user/SessionList.ts
|
||||||
#: src/elements/user/UserConsentList.ts
|
#: src/elements/user/UserConsentList.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -1740,6 +1767,10 @@ msgstr "目录"
|
|||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "已禁用"
|
msgstr "已禁用"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Disabled blueprints are never applied."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
||||||
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
||||||
msgid "Disconnect"
|
msgid "Disconnect"
|
||||||
@ -1920,6 +1951,8 @@ msgstr "启用 StartTLS"
|
|||||||
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
||||||
msgstr "启用兼容模式,增强与移动设备上密码管理器的兼容性。"
|
msgstr "启用兼容模式,增强与移动设备上密码管理器的兼容性。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/policies/BoundPoliciesList.ts
|
#: src/pages/policies/BoundPoliciesList.ts
|
||||||
#: src/pages/policies/PolicyBindingForm.ts
|
#: src/pages/policies/PolicyBindingForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
@ -1956,6 +1989,7 @@ msgstr "注册流程"
|
|||||||
msgid "EntityID/Issuer"
|
msgid "EntityID/Issuer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "错误"
|
msgstr "错误"
|
||||||
@ -2920,6 +2954,10 @@ msgstr "标签会显示在输入侧方/上方。"
|
|||||||
msgid "Last IP"
|
msgid "Last IP"
|
||||||
msgstr "上次 IP"
|
msgstr "上次 IP"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Last applied"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/users/RelatedUserList.ts
|
#: src/pages/users/RelatedUserList.ts
|
||||||
#: src/pages/users/UserListPage.ts
|
#: src/pages/users/UserListPage.ts
|
||||||
@ -3032,6 +3070,7 @@ msgstr "正在加载"
|
|||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/TransportForm.ts
|
#: src/pages/events/TransportForm.ts
|
||||||
@ -3334,6 +3373,9 @@ msgstr "我的应用"
|
|||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairForm.ts
|
#: src/pages/crypto/CertificateKeyPairForm.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
@ -3506,6 +3548,7 @@ msgstr "Nginx(独立)"
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
@ -3850,6 +3893,10 @@ msgstr ""
|
|||||||
msgid "Order"
|
msgid "Order"
|
||||||
msgstr "顺序"
|
msgstr "顺序"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Orphaned"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Other global settings"
|
msgid "Other global settings"
|
||||||
msgstr "其他全局设置"
|
msgstr "其他全局设置"
|
||||||
@ -3976,6 +4023,7 @@ msgstr "密码:屏蔽输入内容,密码根据来源进行验证。策略仍
|
|||||||
msgid "Passwordless flow"
|
msgid "Passwordless flow"
|
||||||
msgstr "无密码流程"
|
msgstr "无密码流程"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/users/UserForm.ts
|
#: src/pages/users/UserForm.ts
|
||||||
msgid "Path"
|
msgid "Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3991,6 +4039,10 @@ msgstr ""
|
|||||||
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/elements/user/UserConsentList.ts
|
||||||
|
msgid "Permissions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts
|
#: src/pages/sources/saml/SAMLSourceForm.ts
|
||||||
msgid "Persistent"
|
msgid "Persistent"
|
||||||
msgstr "持久的"
|
msgstr "持久的"
|
||||||
@ -5149,6 +5201,7 @@ msgstr "静态:静态值,按原样显示。"
|
|||||||
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
||||||
msgstr "静态拒绝流。要有效地使用此阶段,请在相应的绑定上禁用*规划时进行评估*。"
|
msgstr "静态拒绝流。要有效地使用此阶段,请在相应的绑定上禁用*规划时进行评估*。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "状态"
|
msgstr "状态"
|
||||||
@ -5176,6 +5229,7 @@ msgstr "Subject 模式"
|
|||||||
msgid "Subject-alt name"
|
msgid "Subject-alt name"
|
||||||
msgstr "替代名称"
|
msgstr "替代名称"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Successful"
|
msgid "Successful"
|
||||||
msgstr "成功"
|
msgstr "成功"
|
||||||
@ -5222,6 +5276,10 @@ msgstr "已成功创建流程。"
|
|||||||
msgid "Successfully created group."
|
msgid "Successfully created group."
|
||||||
msgstr "已成功创建组。"
|
msgstr "已成功创建组。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully created instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully created integration."
|
msgid "Successfully created integration."
|
||||||
@ -5387,6 +5445,10 @@ msgstr "已成功更新流程。"
|
|||||||
msgid "Successfully updated group."
|
msgid "Successfully updated group."
|
||||||
msgstr "已成功更新组。"
|
msgstr "已成功更新组。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully updated instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully updated integration."
|
msgid "Successfully updated integration."
|
||||||
@ -6058,6 +6120,7 @@ msgstr "不健康的前哨"
|
|||||||
msgid "Unique identifier the token is referenced by."
|
msgid "Unique identifier the token is referenced by."
|
||||||
msgstr "引用令牌的唯一标识符。"
|
msgstr "引用令牌的唯一标识符。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "未知"
|
msgstr "未知"
|
||||||
@ -6079,6 +6142,7 @@ msgstr "最新!"
|
|||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationViewPage.ts
|
#: src/pages/applications/ApplicationViewPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -6130,6 +6194,10 @@ msgstr "更新应用程序"
|
|||||||
msgid "Update Binding"
|
msgid "Update Binding"
|
||||||
msgstr "更新绑定"
|
msgstr "更新绑定"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Update Blueprint"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Update Certificate-Key Pair"
|
msgid "Update Certificate-Key Pair"
|
||||||
msgstr "更新证书密钥对"
|
msgstr "更新证书密钥对"
|
||||||
@ -6592,6 +6660,7 @@ msgstr "等待(最短)"
|
|||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
@ -6771,6 +6840,7 @@ msgstr ""
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/groups/RelatedGroupList.ts
|
#: src/pages/groups/RelatedGroupList.ts
|
||||||
|
@ -175,6 +175,7 @@ msgid "Action"
|
|||||||
msgstr "操作"
|
msgstr "操作"
|
||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/EventListPage.ts
|
#: src/pages/events/EventListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -279,6 +280,7 @@ msgstr "传递给代理的其他作用域映射。"
|
|||||||
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
||||||
msgstr "要传递给 OAuth 提供程序的其他作用域,用空格分隔。"
|
msgstr "要传递给 OAuth 提供程序的其他作用域,用空格分隔。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
msgid "Additional settings"
|
msgid "Additional settings"
|
||||||
msgstr "其他设置"
|
msgstr "其他设置"
|
||||||
@ -634,6 +636,10 @@ msgstr "授权应用程序:"
|
|||||||
msgid "Auto-detect (based on your browser)"
|
msgid "Auto-detect (based on your browser)"
|
||||||
msgstr "自动检测(基于您的浏览器)"
|
msgstr "自动检测(基于您的浏览器)"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Automate and template configuration within authentik."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/interfaces/UserInterface.ts
|
#: src/interfaces/UserInterface.ts
|
||||||
msgid "Avatar image"
|
msgid "Avatar image"
|
||||||
msgstr "Avatar image"
|
msgstr "Avatar image"
|
||||||
@ -740,6 +746,15 @@ msgstr "绑定"
|
|||||||
msgid "Binding Type"
|
msgid "Binding Type"
|
||||||
msgstr "绑定类型"
|
msgstr "绑定类型"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprint(s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/interfaces/AdminInterface.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprints"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Branding settings"
|
msgid "Branding settings"
|
||||||
msgstr "品牌设置"
|
msgstr "品牌设置"
|
||||||
@ -1131,6 +1146,10 @@ msgstr "配置前哨如何查询核心 authentik 服务器的用户。"
|
|||||||
#~ msgid "Configure settings relevant to your user profile."
|
#~ msgid "Configure settings relevant to your user profile."
|
||||||
#~ msgstr "配置与您的用户配置文件相关的设置。"
|
#~ msgstr "配置与您的用户配置文件相关的设置。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Configure the blueprint context, used for templating."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts
|
#: src/pages/providers/saml/SAMLProviderForm.ts
|
||||||
msgid "Configure the maximum allowed time drift for an assertion."
|
msgid "Configure the maximum allowed time drift for an assertion."
|
||||||
msgstr "为断言配置允许的最大时间漂移。"
|
msgstr "为断言配置允许的最大时间漂移。"
|
||||||
@ -1220,6 +1239,7 @@ msgstr ""
|
|||||||
msgid "Content right"
|
msgid "Content right"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
@ -1274,6 +1294,8 @@ msgstr "复制恢复链接"
|
|||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/ApplicationWizard.ts
|
#: src/pages/applications/wizard/ApplicationWizard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -1336,6 +1358,10 @@ msgstr "创建应用程序"
|
|||||||
msgid "Create Binding"
|
msgid "Create Binding"
|
||||||
msgstr "创建绑定"
|
msgstr "创建绑定"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Create Blueprint Instance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Create Certificate-Key Pair"
|
msgid "Create Certificate-Key Pair"
|
||||||
msgstr "创建证书密钥对"
|
msgstr "创建证书密钥对"
|
||||||
@ -1560,6 +1586,7 @@ msgstr "定义如何向用户发送通知,例如电子邮件或 Webhook。"
|
|||||||
#: src/elements/user/SessionList.ts
|
#: src/elements/user/SessionList.ts
|
||||||
#: src/elements/user/UserConsentList.ts
|
#: src/elements/user/UserConsentList.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -1743,6 +1770,10 @@ msgstr "目录"
|
|||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "已禁用"
|
msgstr "已禁用"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Disabled blueprints are never applied."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
||||||
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
||||||
msgid "Disconnect"
|
msgid "Disconnect"
|
||||||
@ -1923,6 +1954,8 @@ msgstr "启用 StartTLS"
|
|||||||
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
||||||
msgstr "启用兼容模式,增加与移动设备上密码管理器的兼容性。"
|
msgstr "启用兼容模式,增加与移动设备上密码管理器的兼容性。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/policies/BoundPoliciesList.ts
|
#: src/pages/policies/BoundPoliciesList.ts
|
||||||
#: src/pages/policies/PolicyBindingForm.ts
|
#: src/pages/policies/PolicyBindingForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
@ -1959,6 +1992,7 @@ msgstr "注册流程"
|
|||||||
msgid "EntityID/Issuer"
|
msgid "EntityID/Issuer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "错误"
|
msgstr "错误"
|
||||||
@ -2924,6 +2958,10 @@ msgstr "标签显示在提示符旁边/上方。"
|
|||||||
msgid "Last IP"
|
msgid "Last IP"
|
||||||
msgstr "最后的 IP"
|
msgstr "最后的 IP"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Last applied"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/users/RelatedUserList.ts
|
#: src/pages/users/RelatedUserList.ts
|
||||||
#: src/pages/users/UserListPage.ts
|
#: src/pages/users/UserListPage.ts
|
||||||
@ -3036,6 +3074,7 @@ msgstr "正在加载"
|
|||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/TransportForm.ts
|
#: src/pages/events/TransportForm.ts
|
||||||
@ -3338,6 +3377,9 @@ msgstr "我的应用"
|
|||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairForm.ts
|
#: src/pages/crypto/CertificateKeyPairForm.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
@ -3510,6 +3552,7 @@ msgstr "Nginx (standalone)"
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
@ -3855,6 +3898,10 @@ msgstr ""
|
|||||||
msgid "Order"
|
msgid "Order"
|
||||||
msgstr "订购"
|
msgstr "订购"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Orphaned"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Other global settings"
|
msgid "Other global settings"
|
||||||
msgstr "其他全局设置"
|
msgstr "其他全局设置"
|
||||||
@ -3981,6 +4028,7 @@ msgstr "密码:屏蔽输入,密码根据来源进行验证。策略仍需应
|
|||||||
msgid "Passwordless flow"
|
msgid "Passwordless flow"
|
||||||
msgstr "无密码流"
|
msgstr "无密码流"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/users/UserForm.ts
|
#: src/pages/users/UserForm.ts
|
||||||
msgid "Path"
|
msgid "Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3996,6 +4044,10 @@ msgstr ""
|
|||||||
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/elements/user/UserConsentList.ts
|
||||||
|
msgid "Permissions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts
|
#: src/pages/sources/saml/SAMLSourceForm.ts
|
||||||
msgid "Persistent"
|
msgid "Persistent"
|
||||||
msgstr "持久"
|
msgstr "持久"
|
||||||
@ -5156,6 +5208,7 @@ msgstr "静态:静态值,按原样显示。"
|
|||||||
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
||||||
msgstr "静态拒绝流。要有效地使用此阶段,请在相应的绑定上禁用*按计划评估*。"
|
msgstr "静态拒绝流。要有效地使用此阶段,请在相应的绑定上禁用*按计划评估*。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "状态"
|
msgstr "状态"
|
||||||
@ -5183,6 +5236,7 @@ msgstr "Subject 模式"
|
|||||||
msgid "Subject-alt name"
|
msgid "Subject-alt name"
|
||||||
msgstr "替代名称"
|
msgstr "替代名称"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Successful"
|
msgid "Successful"
|
||||||
msgstr "成功"
|
msgstr "成功"
|
||||||
@ -5229,6 +5283,10 @@ msgstr "已成功创建流程。"
|
|||||||
msgid "Successfully created group."
|
msgid "Successfully created group."
|
||||||
msgstr "已成功创建组。"
|
msgstr "已成功创建组。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully created instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully created integration."
|
msgid "Successfully created integration."
|
||||||
@ -5394,6 +5452,10 @@ msgstr "已成功更新流程。"
|
|||||||
msgid "Successfully updated group."
|
msgid "Successfully updated group."
|
||||||
msgstr "已成功更新组。"
|
msgstr "已成功更新组。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully updated instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully updated integration."
|
msgid "Successfully updated integration."
|
||||||
@ -6067,6 +6129,7 @@ msgstr "不健康的 Outposts"
|
|||||||
msgid "Unique identifier the token is referenced by."
|
msgid "Unique identifier the token is referenced by."
|
||||||
msgstr "引用令牌的唯一标识符。"
|
msgstr "引用令牌的唯一标识符。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "未知"
|
msgstr "未知"
|
||||||
@ -6088,6 +6151,7 @@ msgstr "最新!"
|
|||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationViewPage.ts
|
#: src/pages/applications/ApplicationViewPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -6139,6 +6203,10 @@ msgstr "更新应用程序"
|
|||||||
msgid "Update Binding"
|
msgid "Update Binding"
|
||||||
msgstr "更新绑定"
|
msgstr "更新绑定"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Update Blueprint"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Update Certificate-Key Pair"
|
msgid "Update Certificate-Key Pair"
|
||||||
msgstr "更新证书密钥对"
|
msgstr "更新证书密钥对"
|
||||||
@ -6602,6 +6670,7 @@ msgstr "等待 (最短)"
|
|||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
@ -6781,6 +6850,7 @@ msgstr ""
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/groups/RelatedGroupList.ts
|
#: src/pages/groups/RelatedGroupList.ts
|
||||||
|
@ -175,6 +175,7 @@ msgid "Action"
|
|||||||
msgstr "操作"
|
msgstr "操作"
|
||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/EventListPage.ts
|
#: src/pages/events/EventListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -279,6 +280,7 @@ msgstr "传递给代理的其他作用域映射。"
|
|||||||
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
msgid "Additional scopes to be passed to the OAuth Provider, separated by space."
|
||||||
msgstr "要传递给 OAuth 提供程序的其他作用域,用空格分隔。"
|
msgstr "要传递给 OAuth 提供程序的其他作用域,用空格分隔。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
msgid "Additional settings"
|
msgid "Additional settings"
|
||||||
msgstr "其他设置"
|
msgstr "其他设置"
|
||||||
@ -634,6 +636,10 @@ msgstr "授权应用程序:"
|
|||||||
msgid "Auto-detect (based on your browser)"
|
msgid "Auto-detect (based on your browser)"
|
||||||
msgstr "自动检测(基于您的浏览器)"
|
msgstr "自动检测(基于您的浏览器)"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Automate and template configuration within authentik."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/interfaces/UserInterface.ts
|
#: src/interfaces/UserInterface.ts
|
||||||
msgid "Avatar image"
|
msgid "Avatar image"
|
||||||
msgstr "Avatar image"
|
msgstr "Avatar image"
|
||||||
@ -740,6 +746,15 @@ msgstr "绑定"
|
|||||||
msgid "Binding Type"
|
msgid "Binding Type"
|
||||||
msgstr "绑定类型"
|
msgstr "绑定类型"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprint(s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/interfaces/AdminInterface.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Blueprints"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Branding settings"
|
msgid "Branding settings"
|
||||||
msgstr "品牌设置"
|
msgstr "品牌设置"
|
||||||
@ -1131,6 +1146,10 @@ msgstr "配置前哨如何查询核心 authentik 服务器的用户。"
|
|||||||
#~ msgid "Configure settings relevant to your user profile."
|
#~ msgid "Configure settings relevant to your user profile."
|
||||||
#~ msgstr "配置与您的用户配置文件相关的设置。"
|
#~ msgstr "配置与您的用户配置文件相关的设置。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Configure the blueprint context, used for templating."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts
|
#: src/pages/providers/saml/SAMLProviderForm.ts
|
||||||
msgid "Configure the maximum allowed time drift for an assertion."
|
msgid "Configure the maximum allowed time drift for an assertion."
|
||||||
msgstr "为断言配置允许的最大时间漂移。"
|
msgstr "为断言配置允许的最大时间漂移。"
|
||||||
@ -1220,6 +1239,7 @@ msgstr ""
|
|||||||
msgid "Content right"
|
msgid "Content right"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
#: src/pages/events/EventInfo.ts
|
#: src/pages/events/EventInfo.ts
|
||||||
@ -1274,6 +1294,8 @@ msgstr "复制恢复链接"
|
|||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/ApplicationWizard.ts
|
#: src/pages/applications/wizard/ApplicationWizard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
@ -1336,6 +1358,10 @@ msgstr "创建应用程序"
|
|||||||
msgid "Create Binding"
|
msgid "Create Binding"
|
||||||
msgstr "创建绑定"
|
msgstr "创建绑定"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Create Blueprint Instance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Create Certificate-Key Pair"
|
msgid "Create Certificate-Key Pair"
|
||||||
msgstr "创建证书密钥对"
|
msgstr "创建证书密钥对"
|
||||||
@ -1560,6 +1586,7 @@ msgstr "定义如何向用户发送通知,例如电子邮件或 Webhook。"
|
|||||||
#: src/elements/user/SessionList.ts
|
#: src/elements/user/SessionList.ts
|
||||||
#: src/elements/user/UserConsentList.ts
|
#: src/elements/user/UserConsentList.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -1743,6 +1770,10 @@ msgstr "目录"
|
|||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "已禁用"
|
msgstr "已禁用"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Disabled blueprints are never applied."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
|
||||||
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
#: src/user/user-settings/sources/SourceSettingsPlex.ts
|
||||||
msgid "Disconnect"
|
msgid "Disconnect"
|
||||||
@ -1923,6 +1954,8 @@ msgstr "启用 StartTLS"
|
|||||||
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
msgid "Enable compatibility mode, increases compatibility with password managers on mobile devices."
|
||||||
msgstr "启用兼容模式,增加与移动设备上密码管理器的兼容性。"
|
msgstr "启用兼容模式,增加与移动设备上密码管理器的兼容性。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/policies/BoundPoliciesList.ts
|
#: src/pages/policies/BoundPoliciesList.ts
|
||||||
#: src/pages/policies/PolicyBindingForm.ts
|
#: src/pages/policies/PolicyBindingForm.ts
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
#: src/pages/sources/ldap/LDAPSourceForm.ts
|
||||||
@ -1959,6 +1992,7 @@ msgstr "注册流程"
|
|||||||
msgid "EntityID/Issuer"
|
msgid "EntityID/Issuer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "错误"
|
msgstr "错误"
|
||||||
@ -2924,6 +2958,10 @@ msgstr "标签显示在提示符旁边/上方。"
|
|||||||
msgid "Last IP"
|
msgid "Last IP"
|
||||||
msgstr "最后的 IP"
|
msgstr "最后的 IP"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Last applied"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/users/RelatedUserList.ts
|
#: src/pages/users/RelatedUserList.ts
|
||||||
#: src/pages/users/UserListPage.ts
|
#: src/pages/users/UserListPage.ts
|
||||||
@ -3036,6 +3074,7 @@ msgstr "正在加载"
|
|||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
#: src/pages/applications/wizard/oauth/TypeOAuthCodeApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/events/TransportForm.ts
|
#: src/pages/events/TransportForm.ts
|
||||||
@ -3338,6 +3377,9 @@ msgstr "我的应用"
|
|||||||
#: src/pages/applications/ApplicationForm.ts
|
#: src/pages/applications/ApplicationForm.ts
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
#: src/pages/applications/wizard/InitialApplicationWizardPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairForm.ts
|
#: src/pages/crypto/CertificateKeyPairForm.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
@ -3510,6 +3552,7 @@ msgstr "Nginx (standalone)"
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
@ -3855,6 +3898,10 @@ msgstr ""
|
|||||||
msgid "Order"
|
msgid "Order"
|
||||||
msgstr "订购"
|
msgstr "订购"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Orphaned"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/tenants/TenantForm.ts
|
#: src/pages/tenants/TenantForm.ts
|
||||||
msgid "Other global settings"
|
msgid "Other global settings"
|
||||||
msgstr "其他全局设置"
|
msgstr "其他全局设置"
|
||||||
@ -3981,6 +4028,7 @@ msgstr "密码:屏蔽输入,密码根据来源进行验证。策略仍需应
|
|||||||
msgid "Passwordless flow"
|
msgid "Passwordless flow"
|
||||||
msgstr "无密码流"
|
msgstr "无密码流"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
#: src/pages/users/UserForm.ts
|
#: src/pages/users/UserForm.ts
|
||||||
msgid "Path"
|
msgid "Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3996,6 +4044,10 @@ msgstr ""
|
|||||||
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
msgid "Path template for users created. Use placeholders like `%(slug)s` to insert the source slug."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/elements/user/UserConsentList.ts
|
||||||
|
msgid "Permissions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts
|
#: src/pages/sources/saml/SAMLSourceForm.ts
|
||||||
msgid "Persistent"
|
msgid "Persistent"
|
||||||
msgstr "持久"
|
msgstr "持久"
|
||||||
@ -5156,6 +5208,7 @@ msgstr "静态:静态值,按原样显示。"
|
|||||||
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
msgid "Statically deny the flow. To use this stage effectively, disable *Evaluate on plan* on the respective binding."
|
||||||
msgstr "静态拒绝流。要有效地使用此阶段,请在相应的绑定上禁用*按计划评估*。"
|
msgstr "静态拒绝流。要有效地使用此阶段,请在相应的绑定上禁用*按计划评估*。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "状态"
|
msgstr "状态"
|
||||||
@ -5183,6 +5236,7 @@ msgstr "Subject 模式"
|
|||||||
msgid "Subject-alt name"
|
msgid "Subject-alt name"
|
||||||
msgstr "替代名称"
|
msgstr "替代名称"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Successful"
|
msgid "Successful"
|
||||||
msgstr "成功"
|
msgstr "成功"
|
||||||
@ -5229,6 +5283,10 @@ msgstr "已成功创建流程。"
|
|||||||
msgid "Successfully created group."
|
msgid "Successfully created group."
|
||||||
msgstr "已成功创建组。"
|
msgstr "已成功创建组。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully created instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully created integration."
|
msgid "Successfully created integration."
|
||||||
@ -5394,6 +5452,10 @@ msgstr "已成功更新流程。"
|
|||||||
msgid "Successfully updated group."
|
msgid "Successfully updated group."
|
||||||
msgstr "已成功更新组。"
|
msgstr "已成功更新组。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintForm.ts
|
||||||
|
msgid "Successfully updated instance."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts
|
||||||
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
#: src/pages/outposts/ServiceConnectionKubernetesForm.ts
|
||||||
msgid "Successfully updated integration."
|
msgid "Successfully updated integration."
|
||||||
@ -6067,6 +6129,7 @@ msgstr "不健康的 Outposts"
|
|||||||
msgid "Unique identifier the token is referenced by."
|
msgid "Unique identifier the token is referenced by."
|
||||||
msgstr "引用令牌的唯一标识符。"
|
msgstr "引用令牌的唯一标识符。"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "未知"
|
msgstr "未知"
|
||||||
@ -6088,6 +6151,7 @@ msgstr "最新!"
|
|||||||
|
|
||||||
#: src/pages/applications/ApplicationListPage.ts
|
#: src/pages/applications/ApplicationListPage.ts
|
||||||
#: src/pages/applications/ApplicationViewPage.ts
|
#: src/pages/applications/ApplicationViewPage.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
#: src/pages/events/RuleListPage.ts
|
#: src/pages/events/RuleListPage.ts
|
||||||
#: src/pages/events/TransportListPage.ts
|
#: src/pages/events/TransportListPage.ts
|
||||||
@ -6139,6 +6203,10 @@ msgstr "更新应用程序"
|
|||||||
msgid "Update Binding"
|
msgid "Update Binding"
|
||||||
msgstr "更新绑定"
|
msgstr "更新绑定"
|
||||||
|
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
|
msgid "Update Blueprint"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
#: src/pages/crypto/CertificateKeyPairListPage.ts
|
||||||
msgid "Update Certificate-Key Pair"
|
msgid "Update Certificate-Key Pair"
|
||||||
msgstr "更新证书密钥对"
|
msgstr "更新证书密钥对"
|
||||||
@ -6602,6 +6670,7 @@ msgstr "等待 (最短)"
|
|||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
#: src/pages/admin-overview/cards/SystemStatusCard.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/events/RuleForm.ts
|
#: src/pages/events/RuleForm.ts
|
||||||
#: src/pages/system-tasks/SystemTaskListPage.ts
|
#: src/pages/system-tasks/SystemTaskListPage.ts
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
@ -6781,6 +6850,7 @@ msgstr ""
|
|||||||
#: src/elements/oauth/UserRefreshList.ts
|
#: src/elements/oauth/UserRefreshList.ts
|
||||||
#: src/elements/user/UserDevicesList.ts
|
#: src/elements/user/UserDevicesList.ts
|
||||||
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
#: src/pages/applications/ApplicationCheckAccessForm.ts
|
||||||
|
#: src/pages/blueprints/BlueprintListPage.ts
|
||||||
#: src/pages/groups/GroupListPage.ts
|
#: src/pages/groups/GroupListPage.ts
|
||||||
#: src/pages/groups/MemberSelectModal.ts
|
#: src/pages/groups/MemberSelectModal.ts
|
||||||
#: src/pages/groups/RelatedGroupList.ts
|
#: src/pages/groups/RelatedGroupList.ts
|
||||||
|
@ -14,10 +14,10 @@ The generated files are stored in `/api` in the root of the repository.
|
|||||||
|
|
||||||
## Building the Web Client
|
## Building the Web Client
|
||||||
|
|
||||||
The web client is used by the web-interface and web-FlowExecutor to communicate with authentik. To build the client, run `make gen-client-web`.
|
The web client is used by the web-interface and web-FlowExecutor to communicate with authentik. To build the client, run `make gen-client-ts`.
|
||||||
|
|
||||||
Since the client is normally distributed as an npm package, running `make gen-client-web` will overwrite the locally installed client with the newly built one.
|
Since the client is normally distributed as an npm package, running `make gen-client-ts` will overwrite the locally installed client with the newly built one.
|
||||||
|
|
||||||
:::warning
|
:::warning
|
||||||
Running `npm i` in the `/web` folder after using `make gen-client-web` will overwrite the custom client and revert to the upstream client.
|
Running `npm i` in the `/web` folder after using `make gen-client-ts` will overwrite the custom client and revert to the upstream client.
|
||||||
:::
|
:::
|
||||||
|
27
website/developer-docs/blueprints/export.md
Normal file
27
website/developer-docs/blueprints/export.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Export
|
||||||
|
---
|
||||||
|
|
||||||
|
## Global export
|
||||||
|
|
||||||
|
:::info
|
||||||
|
Requires authentik 2022.8.2
|
||||||
|
:::
|
||||||
|
|
||||||
|
To migrate existing configurations to blueprints, run `ak export_blueprint` within any authentik Worker container. This will output a blueprint for most currently created objects. Some objects will not be exported as they might have dependencies on other things.
|
||||||
|
|
||||||
|
Exported blueprints don't use any of the YAML Tags, they just contain a list of entries as they are in the database.
|
||||||
|
|
||||||
|
Note that fields which are write-only (for example, OAuth Provider's Secret Key) will not be added to the blueprint, as the serialisation logic from the API is used for blueprints.
|
||||||
|
|
||||||
|
Additionally, default values will be skipped and not added to the blueprint.
|
||||||
|
|
||||||
|
## Flow exports
|
||||||
|
|
||||||
|
Instead of exporting everything from a single instance, there's also the option to export a single flow with it's attached stages, policies and other objects.
|
||||||
|
|
||||||
|
This export can be triggered via the API or the Web UI by clicking the download button in the flow list.
|
||||||
|
|
||||||
|
## Cleaning up
|
||||||
|
|
||||||
|
Exports from either method will contain a (potentially) long list of objects, all with hardcoded primary keys and now ability for templating/instantiation. This is because currently, authentik does not check which primary keys are used where. It is assumed that for most exports, there'll be some manual changes done regardless, to filter out unwanted objects, adjust properties, etc.
|
66
website/developer-docs/blueprints/v1/example.md
Normal file
66
website/developer-docs/blueprints/v1/example.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
---
|
||||||
|
title: Example
|
||||||
|
---
|
||||||
|
|
||||||
|
This is one of the default packaged blueprints to create the default authentication flow.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
version: 1
|
||||||
|
metadata:
|
||||||
|
name: Default - Authentication flow
|
||||||
|
entries:
|
||||||
|
# Order of entries is important when using !KeyOf, as tags are evaluated in order they are in
|
||||||
|
# the document
|
||||||
|
- attrs:
|
||||||
|
# Only options that are required should be set here. Default values should not be stated
|
||||||
|
# here, as they will prevent anyone from overwriting the value
|
||||||
|
designation: authentication
|
||||||
|
name: Welcome to authentik!
|
||||||
|
title: Welcome to authentik!
|
||||||
|
identifiers:
|
||||||
|
slug: default-authentication-flow
|
||||||
|
model: authentik_flows.flow
|
||||||
|
id: flow
|
||||||
|
- attrs:
|
||||||
|
configure_flow:
|
||||||
|
!Find [authentik_flows.flow, [slug, default-password-change]]
|
||||||
|
identifiers:
|
||||||
|
name: default-authentication-password
|
||||||
|
id: default-authentication-password
|
||||||
|
model: authentik_stages_password.passwordstage
|
||||||
|
- identifiers:
|
||||||
|
name: default-authentication-mfa-validation
|
||||||
|
# If we're fine with all defaults, `attrs` can be omitted
|
||||||
|
id: default-authentication-mfa-validation
|
||||||
|
model: authentik_stages_authenticator_validate.authenticatorvalidatestage
|
||||||
|
- identifiers:
|
||||||
|
name: default-authentication-identification
|
||||||
|
id: default-authentication-identification
|
||||||
|
model: authentik_stages_identification.identificationstage
|
||||||
|
- attrs:
|
||||||
|
session_duration: seconds=0
|
||||||
|
identifiers:
|
||||||
|
name: default-authentication-login
|
||||||
|
id: default-authentication-login
|
||||||
|
model: authentik_stages_user_login.userloginstage
|
||||||
|
- identifiers:
|
||||||
|
order: 10
|
||||||
|
stage: !KeyOf default-authentication-identification
|
||||||
|
target: !KeyOf flow
|
||||||
|
model: authentik_flows.flowstagebinding
|
||||||
|
- identifiers:
|
||||||
|
order: 20
|
||||||
|
stage: !KeyOf default-authentication-password
|
||||||
|
target: !KeyOf flow
|
||||||
|
model: authentik_flows.flowstagebinding
|
||||||
|
- identifiers:
|
||||||
|
order: 30
|
||||||
|
stage: !KeyOf default-authentication-mfa-validation
|
||||||
|
target: !KeyOf flow
|
||||||
|
model: authentik_flows.flowstagebinding
|
||||||
|
- identifiers:
|
||||||
|
order: 100
|
||||||
|
stage: !KeyOf default-authentication-login
|
||||||
|
target: !KeyOf flow
|
||||||
|
model: authentik_flows.flowstagebinding
|
||||||
|
```
|
@ -1,32 +1,7 @@
|
|||||||
---
|
|
||||||
title: Overview
|
|
||||||
---
|
|
||||||
|
|
||||||
An outpost is a single deployment of a authentik component, which can be deployed in a completely separate environment. Currently, Proxy Provider and LDAP are supported as outposts.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Upon creation, a service account and a token is generated. The service account only has permissions to read the outpost and provider configuration. This token is used by the Outpost to connect to authentik.
|
|
||||||
|
|
||||||
authentik can manage the deployment, updating and general lifecycle of an Outpost. To communicate with the underlying platforms on which the outpost is deployed, authentik has several built-in integrations.
|
|
||||||
|
|
||||||
- If you've deployed authentik on docker-compose, authentik automatically creates an integration for the local docker socket (See [Docker](./integrations/docker.md)).
|
|
||||||
- If you've deployed authentik on Kubernetes, with `kubernetesIntegration` set to true (default), authentik automatically creates an integrations for the local Kubernetes Cluster (See [Kubernetes](./integrations/kubernetes.md)).
|
|
||||||
|
|
||||||
To deploy an outpost with these integrations, simply select them during the creation of an Outpost. A background task is started, which creates the container/deployment. You can see that Status on the System Tasks page.
|
|
||||||
|
|
||||||
To deploy an outpost manually, see:
|
|
||||||
|
|
||||||
- [Kubernetes](./manual-deploy-kubernetes.md)
|
|
||||||
- [docker-compose](./manual-deploy-docker-compose.md)
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
Outposts fetch their configuration from authentik. Below are all the options you can set, and how they influence the outpost.
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Log level that the outpost will set
|
# Log level that the outpost will set
|
||||||
# Allowed levels: trace, debug, info, warning, error
|
# Allowed levels: trace, debug, info, warning, error
|
||||||
|
# Applies to: non-embedded
|
||||||
log_level: debug
|
log_level: debug
|
||||||
########################################
|
########################################
|
||||||
# The settings below are only relevant when using a managed outpost
|
# The settings below are only relevant when using a managed outpost
|
||||||
@ -36,27 +11,33 @@ authentik_host: https://authentik.tld/
|
|||||||
# Disable SSL Validation for the authentik connection
|
# Disable SSL Validation for the authentik connection
|
||||||
authentik_host_insecure: false
|
authentik_host_insecure: false
|
||||||
# Optionally specify a different URL used for user-facing interactions
|
# Optionally specify a different URL used for user-facing interactions
|
||||||
|
# Applies to: proxy outposts
|
||||||
authentik_host_browser:
|
authentik_host_browser:
|
||||||
# Template used for objects created (deployments/containers, services, secrets, etc)
|
# Template used for objects created (deployments/containers, services, secrets, etc)
|
||||||
object_naming_template: ak-outpost-%(name)s
|
object_naming_template: ak-outpost-%(name)s
|
||||||
# Use a specific docker image for this outpost rather than the default. This also applies to Kubernetes
|
# Use a specific docker image for this outpost rather than the default. This also applies to Kubernetes
|
||||||
# outposts.
|
# outposts.
|
||||||
|
# Applies to: non-embedded
|
||||||
container_image:
|
container_image:
|
||||||
########################################
|
########################################
|
||||||
# Docker outpost specific settings
|
# Docker outpost specific settings
|
||||||
########################################
|
########################################
|
||||||
# Network the outpost container should be connected to
|
# Network the outpost container should be connected to
|
||||||
|
# Applies to: non-embedded
|
||||||
docker_network: null
|
docker_network: null
|
||||||
# Optionally disable mapping of ports to outpost container, may be useful when using docker networks
|
# Optionally disable mapping of ports to outpost container, may be useful when using docker networks
|
||||||
# (Available with 2021.9.4+)
|
# (Available with 2021.9.4+)
|
||||||
|
# Applies to: non-embedded
|
||||||
docker_map_ports: true
|
docker_map_ports: true
|
||||||
# Optionally additional labels for docker containers
|
# Optionally additional labels for docker containers
|
||||||
# (Available with 2022.1.2)
|
# (Available with 2022.1.2)
|
||||||
|
# Applies to: non-embedded
|
||||||
docker_labels: null
|
docker_labels: null
|
||||||
########################################
|
########################################
|
||||||
# Kubernetes outpost specific settings
|
# Kubernetes outpost specific settings
|
||||||
########################################
|
########################################
|
||||||
# Replica count for the deployment of the outpost
|
# Replica count for the deployment of the outpost
|
||||||
|
# Applies to: non-embedded
|
||||||
kubernetes_replicas: 1
|
kubernetes_replicas: 1
|
||||||
# Namespace to deploy in, defaults to the same namespace authentik is deployed in (if available)
|
# Namespace to deploy in, defaults to the same namespace authentik is deployed in (if available)
|
||||||
kubernetes_namespace: authentik
|
kubernetes_namespace: authentik
|
||||||
@ -76,11 +57,6 @@ kubernetes_service_type: ClusterIP
|
|||||||
kubernetes_disabled_components: []
|
kubernetes_disabled_components: []
|
||||||
# If the above docker image is in a private repository, use these secrets to pull.
|
# If the above docker image is in a private repository, use these secrets to pull.
|
||||||
# NOTE: The secret must be created manually in the namespace first.
|
# NOTE: The secret must be created manually in the namespace first.
|
||||||
|
# Applies to: non-embedded
|
||||||
kubernetes_image_pull_secrets: []
|
kubernetes_image_pull_secrets: []
|
||||||
```
|
```
|
||||||
|
|
||||||
## Metrics
|
|
||||||
|
|
||||||
Each authentik outpost has a Prometheus metrics endpoint accessible under port `:9300/metrics`. This endpoint is not mapped via docker, as the endpoint doesn't have any authentication.
|
|
||||||
|
|
||||||
For the embedded outpost, the metrics of the outpost and the metrics of the core authentik server are both returned under the same endpoint.
|
|
@ -12,15 +12,19 @@ The embedded outpost cannot be disabled, if it doesn't make sense to use it in y
|
|||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
|
|
||||||
Since the outpost uses OAuth2, there is some configuration required.
|
Since authentik doesn't know it's own "primary" URL, there might be some configuration required.
|
||||||
|
|
||||||
On a fresh authentik install, your Outpost list will look like this:
|
By default, when opening the admin dashboard on a fresh install, authentik will automatically configure the outpost to use the same URL as was used to access authentik.
|
||||||
|
|
||||||

|
If this isn't correct, or needs to be changed, click the edit button on the right of the outpost, and set the value of `authentik_host` to the URL you want to login with.
|
||||||
|
|
||||||
Click the edit button on the right of the column, and set the value of `authentik_host` to the URL you want to login with.
|
|
||||||
Make sure to set it to full URL, only configuring a hostname or FQDN will not work.
|
Make sure to set it to full URL, only configuring a hostname or FQDN will not work.
|
||||||
|
|
||||||
|
Additionally, most of the other configuration options can be used as with any other outpost, except from items which are marked as "non-embedded"
|
||||||
|
|
||||||
|
import Configuration from "../_config.md";
|
||||||
|
|
||||||
|
<Configuration />
|
||||||
|
|
||||||
### Routing
|
### Routing
|
||||||
|
|
||||||
Routing is handled like this:
|
Routing is handled like this:
|
Binary file not shown.
Before Width: | Height: | Size: 23 KiB |
35
website/docs/outposts/index.mdx
Normal file
35
website/docs/outposts/index.mdx
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
title: Overview
|
||||||
|
---
|
||||||
|
|
||||||
|
An outpost is a single deployment of a authentik component, which can be deployed in a completely separate environment. Currently, Proxy Provider and LDAP are supported as outposts.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Upon creation, a service account and a token is generated. The service account only has permissions to read the outpost and provider configuration. This token is used by the Outpost to connect to authentik.
|
||||||
|
|
||||||
|
authentik can manage the deployment, updating and general lifecycle of an Outpost. To communicate with the underlying platforms on which the outpost is deployed, authentik has several built-in integrations.
|
||||||
|
|
||||||
|
- If you've deployed authentik on docker-compose, authentik automatically creates an integration for the local docker socket (See [Docker](./integrations/docker.md)).
|
||||||
|
- If you've deployed authentik on Kubernetes, with `kubernetesIntegration` set to true (default), authentik automatically creates an integrations for the local Kubernetes Cluster (See [Kubernetes](./integrations/kubernetes.md)).
|
||||||
|
|
||||||
|
To deploy an outpost with these integrations, simply select them during the creation of an Outpost. A background task is started, which creates the container/deployment. You can see that Status on the System Tasks page.
|
||||||
|
|
||||||
|
To deploy an outpost manually, see:
|
||||||
|
|
||||||
|
- [Kubernetes](./manual-deploy-kubernetes.md)
|
||||||
|
- [docker-compose](./manual-deploy-docker-compose.md)
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Outposts fetch their configuration from authentik. Below are all the options you can set, and how they influence the outpost.
|
||||||
|
|
||||||
|
import Configuration from "./_config.md";
|
||||||
|
|
||||||
|
<Configuration />
|
||||||
|
|
||||||
|
## Metrics
|
||||||
|
|
||||||
|
Each authentik outpost has a Prometheus metrics endpoint accessible under port `:9300/metrics`. This endpoint is not mapped via docker, as the endpoint doesn't have any authentication.
|
||||||
|
|
||||||
|
For the embedded outpost, the metrics of the outpost and the metrics of the core authentik server are both returned under the same endpoint.
|
@ -55,6 +55,22 @@ slug: "2022.8"
|
|||||||
- stages/consent: fix for post requests (#3339)
|
- stages/consent: fix for post requests (#3339)
|
||||||
- stages/prompt: fix tests for file field
|
- stages/prompt: fix tests for file field
|
||||||
|
|
||||||
|
## Fixed in 2022.8.2
|
||||||
|
|
||||||
|
- blueprints: add generic export next to flow exporter (#3439)
|
||||||
|
- blueprints: allow for adding remote blueprints (#3435)
|
||||||
|
- blueprints: fix exporter not ignoring non-SerializerModel objects
|
||||||
|
- blueprints: fix issue in prod setups with encoding dataclasses via json
|
||||||
|
- blueprints: remove \_state from exporter blueprints
|
||||||
|
- core: fix pre-hydrated config not being escaped properly
|
||||||
|
- events: correctly handle lists for cleaning/sanitization
|
||||||
|
- internal: fix routing for requests with querystring signature to embedded outpost
|
||||||
|
- lifecycle: add worker-status command to debug worker cpu usage issues
|
||||||
|
- providers/oauth2: fix oauth2 requests being logged as unauthenticated
|
||||||
|
- sources/oauth: fix missing doseq param for updating URL query string
|
||||||
|
- web/elements: fix automatic slug not working on newly opened forms
|
||||||
|
- web/flows: simplify consent's permission handling
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
This release does not introduce any new requirements.
|
This release does not introduce any new requirements.
|
||||||
|
Binary file not shown.
After Width: | Height: | Size: 718 KiB |
@ -0,0 +1,55 @@
|
|||||||
|
---
|
||||||
|
title: GitHub Enterprise Cloud
|
||||||
|
---
|
||||||
|
|
||||||
|
<span class="badge badge--secondary">Support level: Community</span>
|
||||||
|
|
||||||
|
## What is GitHub Enterprise Cloud
|
||||||
|
|
||||||
|
From https://docs.github.com/en/enterprise-cloud@latest/admin/overview/about-github-for-enterprises
|
||||||
|
|
||||||
|
:::note
|
||||||
|
GitHub is a complete developer platform to build, scale, and deliver secure software. Businesses use our suite of products to support the entire software development lifecycle, increasing development velocity and improving code quality.
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::note
|
||||||
|
GitHub Enterprise Cloud EMU (Enterprise Managed Users) are not compatible with authentik. GitHub currently only permits SAML/OIDC for EMU organizations with Okta and/or Azure AD.
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Preparation
|
||||||
|
|
||||||
|
The following placeholders will be used:
|
||||||
|
|
||||||
|
- `github.com/enterprises/foo` is your GitHub organization, where `foo` is the name of your enterprise
|
||||||
|
- `authentik.company` is the FQDN of the authentik Install
|
||||||
|
|
||||||
|
Create an application in authentik and note the slug, as this will be used later. Create a SAML provider with the following parameters:
|
||||||
|
|
||||||
|
- ACS URL: `https://github.com/enterprises/foo/saml/consume`
|
||||||
|
- Audience: `https://github.com/enterprises/foo`
|
||||||
|
- Issuer: `https://github.com/enterprises/foo`
|
||||||
|
- Binding: `Post`
|
||||||
|
|
||||||
|
Under _Advanced protocol settings_, set a certificate for _Signing Certificate_.
|
||||||
|
|
||||||
|
Once the provider is created, it is advised to download the signing certificate as you will need it later.
|
||||||
|
|
||||||
|
## GitHub Configuration
|
||||||
|
|
||||||
|
Navigate to your enterprise settings by clicking your GitHub user portrait in the top right of GitHub.com, select `Your enterprises` and click `Settings` for the enterprise you wish to configure.
|
||||||
|
|
||||||
|
In the left-hand navigation, within the `Settings` section, click `Authentication security`
|
||||||
|
|
||||||
|
On this page:
|
||||||
|
|
||||||
|
- Select the `Require SAML authentication` checkbox.
|
||||||
|
- In `Sign on URL`, type `https://authentik.company/application/saml/<authentik application slug>/sso/binding/redirect/`
|
||||||
|
- For `Issuer`, type `https://github.com/enterprises/foo` or the `Audience` you set in authentik
|
||||||
|
- For `Public certificate`, paste the _full_ signing certificate into this field.
|
||||||
|
- Verify that the `Signature method` and `Digest method` match your SAML provider settings in authentik.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Once these fields are populated, you can use the `Test SAML configuation` button to test the authentication flow. If the flow completes successfully, you will see a green tick next to the Test button.
|
||||||
|
|
||||||
|
Scroll down to hit the `Save` button below.
|
Binary file not shown.
After Width: | Height: | Size: 921 KiB |
53
website/integrations/services/github-organization/index.md
Normal file
53
website/integrations/services/github-organization/index.md
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
---
|
||||||
|
title: GitHub Organization
|
||||||
|
---
|
||||||
|
|
||||||
|
<span class="badge badge--secondary">Support level: Community</span>
|
||||||
|
|
||||||
|
## What is GitHub Organizations
|
||||||
|
|
||||||
|
From https://docs.github.com/en/organizations/collaborating-with-groups-in-organizations/about-organizations
|
||||||
|
|
||||||
|
:::note
|
||||||
|
Organizations are shared accounts where businesses and open-source projects can collaborate across many projects at once, with sophisticated security and administrative features.
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Preparation
|
||||||
|
|
||||||
|
The following placeholders will be used:
|
||||||
|
|
||||||
|
- `github.com/orgs/foo` is your GitHub organization, where `foo` is the name of your org
|
||||||
|
- `authentik.company` is the FQDN of the authentik Install
|
||||||
|
|
||||||
|
Create an application in authentik and note the slug, as this will be used later. Create a SAML provider with the following parameters:
|
||||||
|
|
||||||
|
- ACS URL: `https://github.com/orgs/foo/saml/consume`
|
||||||
|
- Audience: `https://github.com/orgs/foo`
|
||||||
|
- Issuer: `https://github.com/orgs/foo`
|
||||||
|
- Binding: `Post`
|
||||||
|
|
||||||
|
Under _Advanced protocol settings_, set a certificate for _Signing Certificate_.
|
||||||
|
|
||||||
|
Once the provider is created, it is advised to download the signing certificate as you will need it later.
|
||||||
|
|
||||||
|
## GitHub Configuration
|
||||||
|
|
||||||
|
Navigate to your organization settings by going to your organization page at https://github.com/foo, then click Settings.
|
||||||
|
|
||||||
|
In the left-hand navigation, scroll down to the Security section and click `Authentication security`
|
||||||
|
|
||||||
|
On this page:
|
||||||
|
|
||||||
|
- Select the `Enable SAML authentication` checkbox.
|
||||||
|
- In `sign-on URL`, type `https://authentik.company/application/saml/<authentik application slug>/sso/binding/redirect/`
|
||||||
|
- For `Issuer`, type `https://github.com/orgs/foo` or the `Audience` you set in authentik
|
||||||
|
- For `Public certificate`, paste the _full_ signing certificate into this field.
|
||||||
|
- Verify that the `Signature method` and `Digest method` match your SAML provider settings in authentik.
|
||||||
|
|
||||||
|
Once these fields are populated, you can use the `Test SAML configuation` button to test the authentication flow. If the flow completes successfully, you will see a green tick next to the Test button.
|
||||||
|
|
||||||
|
Scroll down to hit the `Save` button below.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This enables SAML as an authentication _option_. If you want to _require_ SAML for your organization, visit your SSO url at `https://github.com/orgs/foo/sso` and sign in. Once signed in, you can navigate back to the `Authentication security` page and check `Require SAML SSO authentication for all members of the foo organization.`
|
50
website/integrations/services/oracle-cloud/index.md
Normal file
50
website/integrations/services/oracle-cloud/index.md
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
title: Oracle Cloud
|
||||||
|
---
|
||||||
|
|
||||||
|
<span class="badge badge--secondary">Support level: Community</span>
|
||||||
|
|
||||||
|
## What is Oracle Cloud
|
||||||
|
|
||||||
|
From https://www.oracle.com/cloud/
|
||||||
|
|
||||||
|
:::note
|
||||||
|
Oracle Cloud is the first public cloud built from the ground up to be a better cloud for every application. By rethinking core engineering and systems design for cloud computing, we created innovations that accelerate migrations, deliver better reliability and performance for all applications, and offer the complete services customers need to build innovative cloud applications.
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Preparation
|
||||||
|
|
||||||
|
The following placeholders will be used:
|
||||||
|
|
||||||
|
- `authentik.company` is the FQDN of authentik.
|
||||||
|
|
||||||
|
### Step 1 - authentik
|
||||||
|
|
||||||
|
In authentik, under _Providers_, create an _OAuth2/OpenID Provider_ with these settings:
|
||||||
|
|
||||||
|
:::note
|
||||||
|
Only settings that have been modified from default have been listed.
|
||||||
|
:::
|
||||||
|
|
||||||
|
**Protocol Settings**
|
||||||
|
|
||||||
|
- Name: Oracle Cloud
|
||||||
|
- Client ID: Copy and Save this for Later
|
||||||
|
- Client Secret: Copy and Save this for later
|
||||||
|
- Signing Key: Select any available key
|
||||||
|
|
||||||
|
Create an application which uses this provider. Optionally apply access restrictions to the application using policy bindings.
|
||||||
|
|
||||||
|
- Name: Oracle Cloud
|
||||||
|
- Slug: oracle-cloud
|
||||||
|
- Provider: Oracle Cloud
|
||||||
|
|
||||||
|
### Step 2 - Oracle Cloud
|
||||||
|
|
||||||
|
In Oracle Cloud, open the top-left navigation and go to _Identity & Security_ and then _Domains_. Click on the domain of your choice. Click on _Security_ in the sidebar, then on _Identity providers_.
|
||||||
|
|
||||||
|
Create a new _Social IdP_ via the _Add IdP_ button. Set the name to authentik and fill in the client ID and secret from above.
|
||||||
|
|
||||||
|
Set the _Discovery service URL_ to `https://authentik.company/application/o/oracle-cloud/.well-known/openid-configuration` and save the IdP. The IdP has now been created but must be enabled before it can be used to login with.
|
||||||
|
|
||||||
|
Navigate to _IdP Policies_ in the sidebar and open the default policy by clicking on it. Edit the first rule within the policy. Add authentik under _Assign identity providers_. Here you can optionally also remove username-based logins, however it is recommended to not remove the option until you've verified SSO works.
|
@ -30,7 +30,6 @@ In authentik, under _Providers_, create an _OAuth2/OpenID Provider_ with these s
|
|||||||
**Provider Settings**
|
**Provider Settings**
|
||||||
|
|
||||||
- Name: pgAdmin
|
- Name: pgAdmin
|
||||||
- Client type: Confidential
|
|
||||||
- Client ID: Copy and Save this for Later
|
- Client ID: Copy and Save this for Later
|
||||||
- Client Secret: Copy and Save this for later
|
- Client Secret: Copy and Save this for later
|
||||||
- Redirect URIs/Origins: `http://pgadmin.company/oauth2/authorize`
|
- Redirect URIs/Origins: `http://pgadmin.company/oauth2/authorize`
|
||||||
|
@ -34,7 +34,6 @@ Only settings that have been modified from default have been listed.
|
|||||||
**Protocol Settings**
|
**Protocol Settings**
|
||||||
|
|
||||||
- Name: Portainer
|
- Name: Portainer
|
||||||
- Client type: Confidential
|
|
||||||
- Client ID: Copy and Save this for Later
|
- Client ID: Copy and Save this for Later
|
||||||
- Client Secret: Copy and Save this for later
|
- Client Secret: Copy and Save this for later
|
||||||
- Redirect URIs/Origins: `https://port.company`
|
- Redirect URIs/Origins: `https://port.company`
|
||||||
|
@ -28,8 +28,8 @@ The following placeholders will be used:
|
|||||||
Under _Providers_, create an OAuth2/OpenID provider with these settings:
|
Under _Providers_, create an OAuth2/OpenID provider with these settings:
|
||||||
|
|
||||||
- Name: proxmox
|
- Name: proxmox
|
||||||
- Client Type: Confidential
|
|
||||||
- Redirect URI: `https://proxmox.company:8006` (Note the absence of the trailing slash, and the inclusion of the webinterface port)
|
- Redirect URI: `https://proxmox.company:8006` (Note the absence of the trailing slash, and the inclusion of the webinterface port)
|
||||||
|
- Signing Key: Select any available key
|
||||||
|
|
||||||
### Step 2
|
### Step 2
|
||||||
|
|
||||||
|
@ -34,14 +34,12 @@ Only settings that have been modified from default have been listed.
|
|||||||
**Protocol Settings**
|
**Protocol Settings**
|
||||||
|
|
||||||
- Name: RocketChat
|
- Name: RocketChat
|
||||||
- Client type: Confidential
|
|
||||||
- Client ID: Copy and Save this for Later
|
- Client ID: Copy and Save this for Later
|
||||||
- Client Secret: Copy and Save this for later
|
- Client Secret: Copy and Save this for later
|
||||||
- Redirect URIs/Origins:
|
- Redirect URIs/Origins:
|
||||||
|
|
||||||
```
|
```
|
||||||
https://rocket.company/_oauth/authentik
|
https://rocket.company/_oauth/authentik
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||

|

|
||||||
|
@ -34,7 +34,6 @@ Only settings that have been modified from default have been listed.
|
|||||||
**Protocol Settings**
|
**Protocol Settings**
|
||||||
|
|
||||||
- Name: Vikunja
|
- Name: Vikunja
|
||||||
- Client type: Confidential
|
|
||||||
- Client ID: Copy and Save this for Later
|
- Client ID: Copy and Save this for Later
|
||||||
- Client Secret: Copy and Save this for later
|
- Client Secret: Copy and Save this for later
|
||||||
- Redirect URIs/Origins:
|
- Redirect URIs/Origins:
|
||||||
@ -68,7 +67,7 @@ auth:
|
|||||||
# Take a look at the [default config file](https://github.com/go-vikunja/api/blob/main/config.yml.sample) for more information about how to configure openid authentication.
|
# Take a look at the [default config file](https://github.com/go-vikunja/api/blob/main/config.yml.sample) for more information about how to configure openid authentication.
|
||||||
openid:
|
openid:
|
||||||
# Enable or disable OpenID Connect authentication
|
# Enable or disable OpenID Connect authentication
|
||||||
enabled: truefo
|
enabled: true
|
||||||
# A list of enabled providers
|
# A list of enabled providers
|
||||||
providers:
|
providers:
|
||||||
# The name of the provider as it will appear in the frontend.
|
# The name of the provider as it will appear in the frontend.
|
||||||
|
@ -55,11 +55,10 @@ Under _Sources_, click _Edit_ and ensure that "authentik default Active Director
|
|||||||
|
|
||||||
Under _Providers_, create an OAuth2/OpenID provider with these settings:
|
Under _Providers_, create an OAuth2/OpenID provider with these settings:
|
||||||
|
|
||||||
- Client Type: Confidential
|
|
||||||
- JWT Algorithm: RS256
|
|
||||||
- Redirect URI: `https://vcenter.company/ui/login/oauth2/authcode`
|
- Redirect URI: `https://vcenter.company/ui/login/oauth2/authcode`
|
||||||
- Sub Mode: If your Email address Schema matches your UPN, select "Based on the User's Email...", otherwise select "Based on the User's UPN...".
|
- Sub Mode: If your Email address Schema matches your UPN, select "Based on the User's Email...", otherwise select "Based on the User's UPN...".
|
||||||
- Scopes: Select the Scope Mapping you've created in Step 1
|
- Scopes: Select the Scope Mapping you've created in Step 1
|
||||||
|
- Signing Key: Select any available key
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
@ -33,8 +33,6 @@ Add a _Generic OpenID Connect / OAuth2_ strategy and note the _Callback URL / Re
|
|||||||
|
|
||||||
In authentik, under _Providers_, create an _OAuth2/OpenID Provider_ with these settings:
|
In authentik, under _Providers_, create an _OAuth2/OpenID Provider_ with these settings:
|
||||||
|
|
||||||
- Client Type: Confidential
|
|
||||||
- JWT Algorithm: RS256
|
|
||||||
- Redirect URI: The _Callback URL / Redirect URI_ you noted from the previous step.
|
- Redirect URI: The _Callback URL / Redirect URI_ you noted from the previous step.
|
||||||
- Scopes: Default OAUth mappings for: OpenID, email, profile.
|
- Scopes: Default OAUth mappings for: OpenID, email, profile.
|
||||||
- Signing Key: Select any available key
|
- Signing Key: Select any available key
|
||||||
|
@ -34,7 +34,6 @@ Only settings that have been modified from default have been listed.
|
|||||||
**Protocol Settings**
|
**Protocol Settings**
|
||||||
|
|
||||||
- Name: Wordpress
|
- Name: Wordpress
|
||||||
- Client type: Confidential
|
|
||||||
- Client ID: Copy and Save this for Later
|
- Client ID: Copy and Save this for Later
|
||||||
- Client Secret: Copy and Save this for later
|
- Client Secret: Copy and Save this for later
|
||||||
- Redirect URIs/Origins: `https://wp.company/wp-admin/admin-ajax.php?action=openid-connect-authorize`
|
- Redirect URIs/Origins: `https://wp.company/wp-admin/admin-ajax.php?action=openid-connect-authorize`
|
||||||
|
@ -9,7 +9,11 @@ Allows users to authenticate using their Apple ID.
|
|||||||
## Preparation
|
## Preparation
|
||||||
|
|
||||||
:::warning
|
:::warning
|
||||||
An Apple developer account is required for this.
|
An Apple developer account is required.
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::warning
|
||||||
|
Apple mandates the use of a [registered TLD](https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains), as such this source will not work with .local and other non-public TLDs.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
The following placeholders will be used:
|
The following placeholders will be used:
|
||||||
|
@ -11,7 +11,12 @@ module.exports = {
|
|||||||
type: "doc",
|
type: "doc",
|
||||||
id: "blueprints/index",
|
id: "blueprints/index",
|
||||||
},
|
},
|
||||||
items: ["blueprints/v1/structure", "blueprints/v1/tags"],
|
items: [
|
||||||
|
"blueprints/export",
|
||||||
|
"blueprints/v1/structure",
|
||||||
|
"blueprints/v1/tags",
|
||||||
|
"blueprints/v1/example",
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: "category",
|
type: "category",
|
||||||
@ -28,7 +33,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: "category",
|
type: "category",
|
||||||
label: "Setup",
|
label: "Development",
|
||||||
items: [
|
items: [
|
||||||
"setup/full-dev-environment",
|
"setup/full-dev-environment",
|
||||||
"setup/frontend-only-dev-environment",
|
"setup/frontend-only-dev-environment",
|
||||||
|
@ -48,7 +48,10 @@ module.exports = {
|
|||||||
{
|
{
|
||||||
type: "category",
|
type: "category",
|
||||||
label: "Cloud Providers",
|
label: "Cloud Providers",
|
||||||
items: ["services/aws/index"],
|
items: [
|
||||||
|
"services/aws/index",
|
||||||
|
"services/oracle-cloud/index",
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: "category",
|
type: "category",
|
||||||
@ -80,13 +83,21 @@ module.exports = {
|
|||||||
type: "category",
|
type: "category",
|
||||||
label: "Developer tools",
|
label: "Developer tools",
|
||||||
items: [
|
items: [
|
||||||
"services/gitea/index",
|
|
||||||
"services/gitlab/index",
|
|
||||||
"services/sentry/index",
|
"services/sentry/index",
|
||||||
"services/sssd/index",
|
"services/sssd/index",
|
||||||
"services/weblate/index",
|
"services/weblate/index",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type: "category",
|
||||||
|
label: "Version Control Systems",
|
||||||
|
items: [
|
||||||
|
"services/gitea/index",
|
||||||
|
"services/github-enterprise-cloud/index",
|
||||||
|
"services/github-organization/index",
|
||||||
|
"services/gitlab/index",
|
||||||
|
],
|
||||||
|
},
|
||||||
"services/home-assistant/index",
|
"services/home-assistant/index",
|
||||||
"services/node-red/index",
|
"services/node-red/index",
|
||||||
"services/kimai/index",
|
"services/kimai/index",
|
||||||
|
Reference in New Issue
Block a user