mirror of
https://github.com/goauthentik/authentik
synced 2026-05-07 07:32:23 +02:00
Compare commits
5 Commits
rust-proxy
...
docs/invit
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
852baf045b | ||
|
|
59b3a0c9f0 | ||
|
|
e6b7b1b895 | ||
|
|
29d71e8b83 | ||
|
|
731163200a |
2
.github/actions/setup/action.yml
vendored
2
.github/actions/setup/action.yml
vendored
@@ -64,7 +64,7 @@ runs:
|
||||
rustflags: ""
|
||||
- name: Setup rust dependencies
|
||||
if: ${{ contains(inputs.dependencies, 'rust') }}
|
||||
uses: taiki-e/install-action@db5fb34fa772531a3ece57ca434f579eb334e0fb # v2
|
||||
uses: taiki-e/install-action@b5fddbb5361bce8a06fb168c9d403a6cc552b084 # v2
|
||||
with:
|
||||
tool: cargo-deny cargo-machete cargo-llvm-cov nextest
|
||||
- name: Setup node (web)
|
||||
|
||||
234
Cargo.lock
generated
234
Cargo.lock
generated
@@ -143,45 +143,6 @@ version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236"
|
||||
|
||||
[[package]]
|
||||
name = "asn1-rs"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60"
|
||||
dependencies = [
|
||||
"asn1-rs-derive",
|
||||
"asn1-rs-impl",
|
||||
"displaydoc",
|
||||
"nom",
|
||||
"num-traits",
|
||||
"rusticata-macros",
|
||||
"thiserror 2.0.18",
|
||||
"time",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "asn1-rs-derive"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "asn1-rs-impl"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.89"
|
||||
@@ -215,13 +176,10 @@ dependencies = [
|
||||
"arc-swap",
|
||||
"argh",
|
||||
"authentik-axum",
|
||||
"authentik-client",
|
||||
"authentik-common",
|
||||
"axum",
|
||||
"axum-server",
|
||||
"color-eyre",
|
||||
"eyre",
|
||||
"futures",
|
||||
"hyper-unix-socket",
|
||||
"hyper-util",
|
||||
"metrics",
|
||||
@@ -229,19 +187,9 @@ dependencies = [
|
||||
"nix 0.31.2",
|
||||
"pyo3",
|
||||
"pyo3-build-config",
|
||||
"rand 0.10.1",
|
||||
"rustls",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_repr",
|
||||
"sqlx",
|
||||
"time",
|
||||
"tokio",
|
||||
"tokio-retry2",
|
||||
"tokio-tungstenite",
|
||||
"tower",
|
||||
"tracing",
|
||||
"url",
|
||||
"uuid",
|
||||
"which",
|
||||
]
|
||||
@@ -299,7 +247,6 @@ dependencies = [
|
||||
"nix 0.31.2",
|
||||
"notify",
|
||||
"pin-project-lite",
|
||||
"rcgen",
|
||||
"reqwest",
|
||||
"reqwest-middleware",
|
||||
"rustls",
|
||||
@@ -595,17 +542,6 @@ version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
||||
|
||||
[[package]]
|
||||
name = "chacha20"
|
||||
version = "0.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures 0.3.0",
|
||||
"rand_core 0.10.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.44"
|
||||
@@ -843,15 +779,6 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cpufeatures"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crc"
|
||||
version = "3.4.0"
|
||||
@@ -946,20 +873,6 @@ dependencies = [
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "der-parser"
|
||||
version = "10.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6"
|
||||
dependencies = [
|
||||
"asn1-rs",
|
||||
"displaydoc",
|
||||
"nom",
|
||||
"num-bigint",
|
||||
"num-traits",
|
||||
"rusticata-macros",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "deranged"
|
||||
version = "0.5.8"
|
||||
@@ -1378,7 +1291,6 @@ dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"r-efi 6.0.0",
|
||||
"rand_core 0.10.1",
|
||||
"wasip2",
|
||||
"wasip3",
|
||||
]
|
||||
@@ -2145,7 +2057,7 @@ dependencies = [
|
||||
"hashbrown 0.16.1",
|
||||
"metrics",
|
||||
"quanta",
|
||||
"rand 0.9.4",
|
||||
"rand 0.9.2",
|
||||
"rand_xoshiro",
|
||||
"sketches-ddsketch",
|
||||
]
|
||||
@@ -2270,16 +2182,6 @@ dependencies = [
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-bigint"
|
||||
version = "0.4.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
|
||||
dependencies = [
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-bigint-dig"
|
||||
version = "0.8.6"
|
||||
@@ -2509,15 +2411,6 @@ dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "oid-registry"
|
||||
version = "0.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7"
|
||||
dependencies = [
|
||||
"asn1-rs",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.21.4"
|
||||
@@ -2851,7 +2744,7 @@ dependencies = [
|
||||
"bytes",
|
||||
"getrandom 0.3.4",
|
||||
"lru-slab",
|
||||
"rand 0.9.4",
|
||||
"rand 0.9.2",
|
||||
"ring",
|
||||
"rustc-hash",
|
||||
"rustls",
|
||||
@@ -2911,25 +2804,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.9.4"
|
||||
version = "0.9.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
|
||||
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
|
||||
dependencies = [
|
||||
"rand_chacha 0.9.0",
|
||||
"rand_core 0.9.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207"
|
||||
dependencies = [
|
||||
"chacha20",
|
||||
"getrandom 0.4.2",
|
||||
"rand_core 0.10.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_chacha"
|
||||
version = "0.3.1"
|
||||
@@ -2968,12 +2850,6 @@ dependencies = [
|
||||
"getrandom 0.3.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
|
||||
|
||||
[[package]]
|
||||
name = "rand_xoshiro"
|
||||
version = "0.7.0"
|
||||
@@ -3001,19 +2877,6 @@ dependencies = [
|
||||
"bitflags 2.11.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rcgen"
|
||||
version = "0.14.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "10b99e0098aa4082912d4c649628623db6aba77335e4f4569ff5083a6448b32e"
|
||||
dependencies = [
|
||||
"aws-lc-rs",
|
||||
"rustls-pki-types",
|
||||
"time",
|
||||
"x509-parser",
|
||||
"yasna",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.5.18"
|
||||
@@ -3177,15 +3040,6 @@ dependencies = [
|
||||
"semver",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rusticata-macros"
|
||||
version = "4.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632"
|
||||
dependencies = [
|
||||
"nom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "1.1.4"
|
||||
@@ -3349,9 +3203,9 @@ checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
|
||||
|
||||
[[package]]
|
||||
name = "sentry"
|
||||
version = "0.48.0"
|
||||
version = "0.47.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e8ac94aab850a23d7507307cc505332ed2bafd36c65930dfc5c43610f9e9b477"
|
||||
checksum = "eb25f439f97d26fea01d717fa626167ceffcd981addaa670001e70505b72acbb"
|
||||
dependencies = [
|
||||
"cfg_aliases",
|
||||
"httpdate",
|
||||
@@ -3370,9 +3224,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sentry-backtrace"
|
||||
version = "0.48.1"
|
||||
version = "0.47.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc84c325ace9ca2388e510fe7d6672b5d60cd8b3bd0eb4bb4ee8314c323cd686"
|
||||
checksum = "46a8c2c1bd5c1f735e84f28b48e7d72efcaafc362b7541bc8253e60e8fcdffc6"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"regex",
|
||||
@@ -3381,9 +3235,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sentry-contexts"
|
||||
version = "0.48.1"
|
||||
version = "0.47.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "896c1ab62dbfe1746fb262bbf72e6feb2fb9dfb2c14709077bf71beb532e44b2"
|
||||
checksum = "9b88a90baa654d7f0e1f4b667f6b434293d9f72c71bef16b197c76af5b7d5803"
|
||||
dependencies = [
|
||||
"hostname",
|
||||
"libc",
|
||||
@@ -3395,11 +3249,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sentry-core"
|
||||
version = "0.48.1"
|
||||
version = "0.47.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d5f5abf20c42cb1593ec1638976e2647da55f79bccac956444c1707b6cce259a"
|
||||
checksum = "0ac170a5bba8bec6e3339c90432569d89641fa7a3d3e4f44987d24f0762e6adf"
|
||||
dependencies = [
|
||||
"rand 0.9.4",
|
||||
"rand 0.9.2",
|
||||
"sentry-types",
|
||||
"serde",
|
||||
"serde_json",
|
||||
@@ -3408,9 +3262,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sentry-debug-images"
|
||||
version = "0.48.1"
|
||||
version = "0.47.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4b88bbe6a760d5724bb40689827e82e8db1e275947df2c59abe171bfc30bb671"
|
||||
checksum = "dd9646a972b57896d4a92ed200cf76139f8e30b3cfd03b6662ae59926d26633c"
|
||||
dependencies = [
|
||||
"findshlibs",
|
||||
"sentry-core",
|
||||
@@ -3418,9 +3272,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sentry-panic"
|
||||
version = "0.48.1"
|
||||
version = "0.47.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0260dcb52562b6a79ae7702312a26dba94b79fb5baee7301087529e5ca4e872e"
|
||||
checksum = "6127d3d304ba5ce0409401e85aae538e303a569f8dbb031bf64f9ba0f7174346"
|
||||
dependencies = [
|
||||
"sentry-backtrace",
|
||||
"sentry-core",
|
||||
@@ -3428,9 +3282,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sentry-tower"
|
||||
version = "0.48.1"
|
||||
version = "0.47.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d669616d5d5279b5712febfc80c343acc3695e499de0d101ed70fceacadf37f2"
|
||||
checksum = "61c5253dc4ad89863a866b93aeaaac1c9d60f2f774663b5024afe2d57e0a101c"
|
||||
dependencies = [
|
||||
"sentry-core",
|
||||
"tower-layer",
|
||||
@@ -3439,9 +3293,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sentry-tracing"
|
||||
version = "0.48.1"
|
||||
version = "0.47.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a1c035f3a0a8671ae1a231c5b457abb68b71acba2bf3054dab2a09a9d4ea487e"
|
||||
checksum = "27701acc51e68db5281802b709010395bfcbcb128b1d0a4e5873680d3b47ff0c"
|
||||
dependencies = [
|
||||
"bitflags 2.11.0",
|
||||
"sentry-backtrace",
|
||||
@@ -3452,13 +3306,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sentry-types"
|
||||
version = "0.48.1"
|
||||
version = "0.47.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "82d8e81058ec155992191f61c7b29bfa7b2cf12012131e7cdc0678020898a7c9"
|
||||
checksum = "56780cb5597d676bf22e6c11d1f062eb4def46390ea3bfb047bcbcf7dfd19bdb"
|
||||
dependencies = [
|
||||
"debugid",
|
||||
"hex",
|
||||
"rand 0.9.4",
|
||||
"rand 0.9.2",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"thiserror 2.0.18",
|
||||
@@ -3565,7 +3419,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures 0.2.17",
|
||||
"cpufeatures",
|
||||
"digest",
|
||||
]
|
||||
|
||||
@@ -3576,7 +3430,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures 0.2.17",
|
||||
"cpufeatures",
|
||||
"digest",
|
||||
]
|
||||
|
||||
@@ -4146,12 +4000,8 @@ checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c"
|
||||
dependencies = [
|
||||
"futures-util",
|
||||
"log",
|
||||
"rustls",
|
||||
"rustls-pki-types",
|
||||
"tokio",
|
||||
"tokio-rustls",
|
||||
"tungstenite",
|
||||
"webpki-roots 0.26.11",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -4364,12 +4214,9 @@ dependencies = [
|
||||
"http",
|
||||
"httparse",
|
||||
"log",
|
||||
"rand 0.9.4",
|
||||
"rustls",
|
||||
"rustls-pki-types",
|
||||
"rand 0.9.2",
|
||||
"sha1",
|
||||
"thiserror 2.0.18",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5240,24 +5087,6 @@ version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
|
||||
|
||||
[[package]]
|
||||
name = "x509-parser"
|
||||
version = "0.18.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d43b0f71ce057da06bc0851b23ee24f3f86190b07203dd8f567d0b706a185202"
|
||||
dependencies = [
|
||||
"asn1-rs",
|
||||
"aws-lc-rs",
|
||||
"data-encoding",
|
||||
"der-parser",
|
||||
"lazy_static",
|
||||
"nom",
|
||||
"oid-registry",
|
||||
"rusticata-macros",
|
||||
"thiserror 2.0.18",
|
||||
"time",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yaml-rust2"
|
||||
version = "0.10.4"
|
||||
@@ -5269,15 +5098,6 @@ dependencies = [
|
||||
"hashlink",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yasna"
|
||||
version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd"
|
||||
dependencies = [
|
||||
"time",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yoke"
|
||||
version = "0.8.1"
|
||||
|
||||
28
Cargo.toml
28
Cargo.toml
@@ -50,11 +50,6 @@ notify = "= 8.2.0"
|
||||
pin-project-lite = "= 0.2.17"
|
||||
pyo3 = "= 0.28.3"
|
||||
pyo3-build-config = "= 0.28.3"
|
||||
rand = "= 0.10.1"
|
||||
rcgen = { version = "= 0.14.7", default-features = false, features = [
|
||||
"aws_lc_rs",
|
||||
"fips",
|
||||
] }
|
||||
regex = "= 1.12.3"
|
||||
reqwest = { version = "= 0.13.3", features = [
|
||||
"form",
|
||||
@@ -72,7 +67,7 @@ reqwest-middleware = { version = "= 0.5.1", features = [
|
||||
"rustls",
|
||||
] }
|
||||
rustls = { version = "= 0.23.40", features = ["fips"] }
|
||||
sentry = { version = "= 0.48.0", default-features = false, features = [
|
||||
sentry = { version = "= 0.47.0", default-features = false, features = [
|
||||
"backtrace",
|
||||
"contexts",
|
||||
"debug-images",
|
||||
@@ -105,10 +100,6 @@ time = { version = "= 0.3.47", features = ["macros"] }
|
||||
tokio = { version = "= 1.52.1", features = ["full", "tracing"] }
|
||||
tokio-retry2 = "= 0.9.1"
|
||||
tokio-rustls = "= 0.26.4"
|
||||
tokio-tungstenite = { version = "= 0.29.0", features = [
|
||||
"rustls-tls-webpki-roots",
|
||||
"url",
|
||||
] }
|
||||
tokio-util = { version = "= 0.7.18", features = ["full"] }
|
||||
tower = "= 0.5.3"
|
||||
tower-http = { version = "= 0.6.8", features = ["timeout"] }
|
||||
@@ -269,41 +260,28 @@ publish.workspace = true
|
||||
[features]
|
||||
default = ["core", "proxy"]
|
||||
core = ["ak-common/core", "dep:pyo3", "dep:sqlx"]
|
||||
proxy = ["ak-common/proxy", "dep:ak-client"]
|
||||
proxy = ["ak-common/proxy"]
|
||||
|
||||
[build-dependencies]
|
||||
pyo3-build-config.workspace = true
|
||||
|
||||
[dependencies]
|
||||
ak-axum.workspace = true
|
||||
ak-client = { workspace = true, optional = true }
|
||||
ak-common.workspace = true
|
||||
arc-swap.workspace = true
|
||||
argh.workspace = true
|
||||
axum-server.workspace = true
|
||||
axum.workspace = true
|
||||
color-eyre.workspace = true
|
||||
eyre.workspace = true
|
||||
futures.workspace = true
|
||||
hyper-unix-socket.workspace = true
|
||||
hyper-util.workspace = true
|
||||
metrics-exporter-prometheus.workspace = true
|
||||
metrics.workspace = true
|
||||
metrics-exporter-prometheus.workspace = true
|
||||
nix.workspace = true
|
||||
pyo3 = { workspace = true, optional = true }
|
||||
rand.workspace = true
|
||||
rustls.workspace = true
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
serde_repr.workspace = true
|
||||
sqlx = { workspace = true, optional = true }
|
||||
time.workspace = true
|
||||
tokio-retry2.workspace = true
|
||||
tokio-tungstenite.workspace = true
|
||||
tokio.workspace = true
|
||||
tower.workspace = true
|
||||
tracing.workspace = true
|
||||
url.workspace = true
|
||||
uuid.workspace = true
|
||||
which.workspace = true
|
||||
|
||||
|
||||
@@ -101,6 +101,8 @@ RUN --mount=type=bind,target=rust-toolchain.toml,src=rust-toolchain.toml \
|
||||
rustc --version && \
|
||||
cargo --version
|
||||
|
||||
RUN cat /root/.rustup/settings.toml
|
||||
|
||||
# Stage: Download uv
|
||||
FROM ghcr.io/astral-sh/uv:0.11.5@sha256:555ac94f9a22e656fc5f2ce5dfee13b04e94d099e46bb8dd3a73ec7263f2e484 AS uv
|
||||
# Stage: Base python image
|
||||
|
||||
@@ -21,45 +21,33 @@ COPY web .
|
||||
RUN npm run build-proxy
|
||||
|
||||
# Stage 2: Build
|
||||
FROM ghcr.io/goauthentik/fips-debian:trixie-slim-fips@sha256:7726387c78b5787d2146868c2ccc8948a3591d0a5a6436f7780c8c28acc76341 AS builder
|
||||
FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:4a7137ea573f79c86ae451ff05817ed762ef5597fcf732259e97abeb3108d873 AS builder
|
||||
|
||||
ARG TARGETOS
|
||||
ARG TARGETARCH
|
||||
ARG TARGETVARIANT
|
||||
|
||||
ENV PATH="/root/.cargo/bin:$PATH"
|
||||
SHELL ["/bin/sh", "-o", "pipefail", "-c"]
|
||||
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
|
||||
RUN --mount=type=cache,id=apt-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/var/cache/apt \
|
||||
--mount=type=bind,target=rust-toolchain.toml,src=rust-toolchain.toml \
|
||||
apt-get update && \
|
||||
# Required for installing pip packages
|
||||
apt-get install -y --no-install-recommends \
|
||||
# Build essentials
|
||||
build-essential \
|
||||
# aws-lc deps
|
||||
cmake clang golang && \
|
||||
curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal --default-toolchain none && \
|
||||
rustup install && \
|
||||
rustup default "$(sed -n 's/channel = "\(.*\)"/\1/p' rust-toolchain.toml)" && \
|
||||
rustc --version && \
|
||||
cargo --version
|
||||
# See https://github.com/aws/aws-lc-rs/issues/569
|
||||
ENV AWS_LC_FIPS_SYS_CC=clang
|
||||
ARG GOOS=$TARGETOS
|
||||
ARG GOARCH=$TARGETARCH
|
||||
|
||||
RUN --mount=type=bind,target=rust-toolchain.toml,src=rust-toolchain.toml \
|
||||
--mount=type=bind,target=Cargo.toml,src=Cargo.toml \
|
||||
--mount=type=bind,target=Cargo.lock,src=Cargo.lock \
|
||||
--mount=type=bind,target=.cargo/,src=.cargo/ \
|
||||
--mount=type=bind,target=src/,src=src/ \
|
||||
--mount=type=bind,target=packages/,src=packages/ \
|
||||
--mount=type=bind,target=authentik/lib/default.yml,src=authentik/lib/default.yml \
|
||||
# Required otherwise workspace discovery fails
|
||||
--mount=type=bind,target=website/scripts/docsmg/,src=website/scripts/docsmg/ \
|
||||
--mount=type=cache,id=cargo-git-db-$TARGETARCH$TARGETVARIANT,target=/root/.cargo/git/db/ \
|
||||
--mount=type=cache,id=cargo-registry-$TARGETARCH$TARGETVARIANT,target=/root/.cargo/registry/ \
|
||||
--mount=type=cache,id=rust-target-$TARGETARCH$TARGETVARIANT,target=/build/target/ \
|
||||
cargo build --package authentik --no-default-features --features proxy --locked --release && \
|
||||
cp ./target/release/authentik /bin/authentik
|
||||
WORKDIR /go/src/goauthentik.io
|
||||
|
||||
RUN --mount=type=cache,id=apt-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/var/cache/apt \
|
||||
dpkg --add-architecture arm64 && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends crossbuild-essential-arm64 gcc-aarch64-linux-gnu
|
||||
|
||||
RUN --mount=type=bind,target=/go/src/goauthentik.io/go.mod,src=./go.mod \
|
||||
--mount=type=bind,target=/go/src/goauthentik.io/go.sum,src=./go.sum \
|
||||
--mount=type=cache,target=/go/pkg/mod \
|
||||
go mod download
|
||||
|
||||
COPY . .
|
||||
RUN --mount=type=cache,sharing=locked,target=/go/pkg/mod \
|
||||
--mount=type=cache,id=go-build-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/root/.cache/go-build \
|
||||
if [ "$TARGETARCH" = "arm64" ]; then export CC=aarch64-linux-gnu-gcc && export CC_FOR_TARGET=gcc-aarch64-linux-gnu; fi && \
|
||||
CGO_ENABLED=1 GOFIPS140=latest GOARM="${TARGETVARIANT#v}" \
|
||||
go build -o /go/proxy ./cmd/proxy
|
||||
|
||||
# Stage 3: Run
|
||||
FROM ghcr.io/goauthentik/fips-debian:trixie-slim-fips@sha256:7726387c78b5787d2146868c2ccc8948a3591d0a5a6436f7780c8c28acc76341
|
||||
@@ -84,13 +72,13 @@ RUN apt-get update && \
|
||||
apt-get clean && \
|
||||
rm -rf /tmp/* /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=builder /bin/authentik /
|
||||
COPY --from=builder /go/proxy /
|
||||
COPY --from=web-builder /static/robots.txt /web/robots.txt
|
||||
COPY --from=web-builder /static/security.txt /web/security.txt
|
||||
COPY --from=web-builder /static/dist/ /web/dist/
|
||||
COPY --from=web-builder /static/authentik/ /web/authentik/
|
||||
|
||||
HEALTHCHECK --interval=5s --retries=20 --start-period=3s CMD [ "/authentik", "healthcheck" ]
|
||||
HEALTHCHECK --interval=5s --retries=20 --start-period=3s CMD [ "/proxy", "healthcheck" ]
|
||||
|
||||
EXPOSE 9000 9300 9443
|
||||
|
||||
@@ -99,4 +87,4 @@ USER 1000
|
||||
ENV TMPDIR=/dev/shm/ \
|
||||
GOFIPS=1
|
||||
|
||||
ENTRYPOINT ["/authentik", "proxy"]
|
||||
ENTRYPOINT ["/proxy"]
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-05-06 00:27+0000\n"
|
||||
"POT-Creation-Date: 2026-05-01 03:47+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -101,14 +101,6 @@ msgstr ""
|
||||
msgid "Blueprint file does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: authentik/blueprints/api.py
|
||||
msgid "Context must be valid JSON"
|
||||
msgstr ""
|
||||
|
||||
#: authentik/blueprints/api.py
|
||||
msgid "Context must be a JSON object"
|
||||
msgstr ""
|
||||
|
||||
#: authentik/blueprints/api.py
|
||||
msgid "Failed to validate blueprint"
|
||||
msgstr ""
|
||||
|
||||
@@ -27,7 +27,6 @@ ipnet.workspace = true
|
||||
json-subscriber.workspace = true
|
||||
notify.workspace = true
|
||||
pin-project-lite.workspace = true
|
||||
rcgen.workspace = true
|
||||
reqwest.workspace = true
|
||||
reqwest-middleware.workspace = true
|
||||
rustls.workspace = true
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//! Utilities for working with the authentik API client.
|
||||
|
||||
use ak_client::{apis::configuration::Configuration, models::Pagination};
|
||||
use ak_client::apis::configuration::Configuration;
|
||||
use eyre::{Result, eyre};
|
||||
use url::Url;
|
||||
|
||||
@@ -60,42 +60,6 @@ pub fn make_config() -> Result<Configuration> {
|
||||
})
|
||||
}
|
||||
|
||||
/// Fetch all pages from a paginated API endpoint, returning all results combined.
|
||||
///
|
||||
/// - `fetch`: a function that takes a page number and returns a future resolving to a paginated
|
||||
/// response.
|
||||
/// - `get_pagination`: a function that extracts the [`Pagination`] metadata from a response.
|
||||
/// - `get_results`: a function that extracts the result items from a response.
|
||||
pub async fn fetch_all<T, R, E, F, Fut>(
|
||||
fetch: F,
|
||||
get_pagination: impl Fn(&R) -> &Pagination,
|
||||
get_results: impl Fn(R) -> Vec<T>,
|
||||
) -> std::result::Result<Vec<T>, E>
|
||||
where
|
||||
F: Fn(i32) -> Fut,
|
||||
Fut: Future<Output = std::result::Result<R, E>>,
|
||||
{
|
||||
let mut page = 1;
|
||||
let mut results = Vec::with_capacity(0);
|
||||
|
||||
loop {
|
||||
let response = fetch(page).await?;
|
||||
let next = get_pagination(&response).next;
|
||||
if page == 1 {
|
||||
let count = get_pagination(&response).count as usize;
|
||||
results.reserve(count);
|
||||
}
|
||||
results.extend(get_results(response));
|
||||
if next > 0.0 {
|
||||
page += 1;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(results)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use serde_json::json;
|
||||
|
||||
@@ -3,9 +3,8 @@ use std::{collections::HashMap, net::SocketAddr, num::NonZeroUsize};
|
||||
use ipnet::IpNet;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
pub(super) const KEYS_TO_PARSE_AS_LIST: [&str; 5] = [
|
||||
pub(super) const KEYS_TO_PARSE_AS_LIST: [&str; 4] = [
|
||||
"listen.http",
|
||||
"listen.https",
|
||||
"listen.metrics",
|
||||
"listen.trusted_proxy_cidrs",
|
||||
"log.http_headers",
|
||||
@@ -60,7 +59,6 @@ pub struct PostgreSQLConfig {
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct ListenConfig {
|
||||
pub http: Vec<SocketAddr>,
|
||||
pub https: Vec<SocketAddr>,
|
||||
pub metrics: Vec<SocketAddr>,
|
||||
pub debug_tokio: SocketAddr,
|
||||
pub trusted_proxy_cidrs: Vec<IpNet>,
|
||||
|
||||
@@ -7,8 +7,6 @@ use tracing::trace;
|
||||
|
||||
use crate::config;
|
||||
|
||||
pub mod self_signed;
|
||||
|
||||
/// Dummy resolver for FIPS compliance check.
|
||||
#[derive(Debug)]
|
||||
struct EmptyCertResolver;
|
||||
@@ -1,52 +0,0 @@
|
||||
use eyre::Result;
|
||||
use rcgen::{
|
||||
Certificate, CertificateParams, DistinguishedName, DnType, ExtendedKeyUsagePurpose, KeyPair,
|
||||
KeyUsagePurpose, PKCS_RSA_SHA256, SanType,
|
||||
};
|
||||
use rustls::{
|
||||
crypto::aws_lc_rs::sign::any_supported_type,
|
||||
pki_types::{CertificateDer, PrivateKeyDer},
|
||||
sign::CertifiedKey,
|
||||
};
|
||||
use time::{Duration, OffsetDateTime};
|
||||
|
||||
pub fn generate() -> Result<(Certificate, KeyPair)> {
|
||||
let signing_key = KeyPair::generate_for(&PKCS_RSA_SHA256)?;
|
||||
|
||||
let mut params = CertificateParams::default();
|
||||
params.not_before = OffsetDateTime::now_utc();
|
||||
params.not_after = OffsetDateTime::now_utc() + Duration::days(365);
|
||||
params.distinguished_name = {
|
||||
let mut dn = DistinguishedName::new();
|
||||
dn.push(DnType::OrganizationName, "authentik");
|
||||
dn.push(DnType::CommonName, "authentik default certificate");
|
||||
dn
|
||||
};
|
||||
params.subject_alt_names = vec![SanType::DnsName("*".try_into()?)];
|
||||
params.key_usages = vec![
|
||||
KeyUsagePurpose::DigitalSignature,
|
||||
KeyUsagePurpose::KeyEncipherment,
|
||||
];
|
||||
params.extended_key_usages = vec![ExtendedKeyUsagePurpose::ServerAuth];
|
||||
|
||||
let cert = params.self_signed(&signing_key)?;
|
||||
|
||||
Ok((cert, signing_key))
|
||||
}
|
||||
|
||||
pub fn generate_certifiedkey() -> Result<CertifiedKey> {
|
||||
let (cert, keypair) = generate()?;
|
||||
|
||||
let cert_der = cert.der().to_vec();
|
||||
let key_der = keypair.serialize_der();
|
||||
|
||||
let private_key =
|
||||
PrivateKeyDer::try_from(key_der).map_err(|_| rcgen::Error::CouldNotParseKeyPair)?;
|
||||
let signing_key =
|
||||
any_supported_type(&private_key).map_err(|_| rcgen::Error::CouldNotParseKeyPair)?;
|
||||
|
||||
Ok(CertifiedKey::new(
|
||||
vec![CertificateDer::from(cert_der)],
|
||||
signing_key,
|
||||
))
|
||||
}
|
||||
@@ -30,12 +30,12 @@ pub fn install() -> Result<()> {
|
||||
}
|
||||
|
||||
if config.debug {
|
||||
// let console_layer = console_subscriber::ConsoleLayer::builder()
|
||||
// .server_addr(config.listen.debug_tokio)
|
||||
// .spawn();
|
||||
let console_layer = console_subscriber::ConsoleLayer::builder()
|
||||
.server_addr(config.listen.debug_tokio)
|
||||
.spawn();
|
||||
tracing_subscriber::registry()
|
||||
.with(ErrorLayer::default())
|
||||
// .with(console_layer)
|
||||
.with(console_layer)
|
||||
.with(
|
||||
fmt::layer()
|
||||
.compact()
|
||||
@@ -187,10 +187,13 @@ pub mod sentry {
|
||||
environment: config.environment,
|
||||
send_pii: config.send_pii,
|
||||
#[expect(
|
||||
clippy::as_conversions,
|
||||
clippy::cast_possible_truncation,
|
||||
reason = "This is fine, we'll never get big values here."
|
||||
)]
|
||||
#[expect(
|
||||
clippy::as_conversions,
|
||||
reason = "This is fine, we'll never get big values here."
|
||||
)]
|
||||
sample_rate: config.traces_sample_rate as f32,
|
||||
})
|
||||
}
|
||||
|
||||
3
packages/client-ts/package.json
generated
3
packages/client-ts/package.json
generated
@@ -8,8 +8,7 @@
|
||||
"url": "https://github.com/goauthentik/authentik.git"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "tsc -b --clean tsconfig.json tsconfig.esm.json",
|
||||
"build": "npm run clean && tsc -b tsconfig.json tsconfig.esm.json",
|
||||
"build": "tsc && tsc -p tsconfig.esm.json",
|
||||
"prepare": "npm run build"
|
||||
},
|
||||
"main": "./dist/index.js",
|
||||
|
||||
2
packages/client-ts/templates/tsconfig.mustache
generated
2
packages/client-ts/templates/tsconfig.mustache
generated
@@ -1,7 +1,9 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"isolatedModules": true,
|
||||
"incremental": true,
|
||||
"rootDir": "src",
|
||||
"strict": true,
|
||||
"newLine": "lf",
|
||||
|
||||
2
packages/client-ts/tsconfig.json
generated
2
packages/client-ts/tsconfig.json
generated
@@ -1,7 +1,9 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"isolatedModules": true,
|
||||
"incremental": true,
|
||||
"rootDir": "src",
|
||||
"strict": true,
|
||||
"newLine": "lf",
|
||||
|
||||
10
src/main.rs
10
src/main.rs
@@ -8,8 +8,6 @@ use eyre::{Result, eyre};
|
||||
use tracing::{error, info, trace};
|
||||
|
||||
mod metrics;
|
||||
#[cfg(feature = "proxy")]
|
||||
mod outpost;
|
||||
#[cfg(feature = "core")]
|
||||
mod server;
|
||||
#[cfg(feature = "core")]
|
||||
@@ -31,8 +29,6 @@ enum Command {
|
||||
Server(server::Cli),
|
||||
#[cfg(feature = "core")]
|
||||
Worker(worker::Cli),
|
||||
#[cfg(feature = "proxy")]
|
||||
Proxy(outpost::proxy::Cli),
|
||||
}
|
||||
|
||||
#[derive(Debug, FromArgs, PartialEq)]
|
||||
@@ -57,8 +53,6 @@ fn main() -> Result<()> {
|
||||
Command::Server(_) => Mode::set(Mode::Server)?,
|
||||
#[cfg(feature = "core")]
|
||||
Command::Worker(_) => Mode::set(Mode::Worker)?,
|
||||
#[cfg(feature = "proxy")]
|
||||
Command::Proxy(_) => Mode::set(Mode::Proxy)?,
|
||||
}
|
||||
|
||||
trace!("installing error formatting");
|
||||
@@ -114,10 +108,6 @@ fn main() -> Result<()> {
|
||||
let workers = worker::start(args, &mut tasks)?;
|
||||
metrics.workers.store(Some(workers));
|
||||
}
|
||||
#[cfg(feature = "proxy")]
|
||||
Command::Proxy(args) => {
|
||||
outpost::start::<outpost::proxy::ProxyOutpost>(args, &mut tasks).await?;
|
||||
}
|
||||
}
|
||||
|
||||
let errors = tasks.run().await;
|
||||
|
||||
@@ -1,312 +0,0 @@
|
||||
use std::{fmt::Display, sync::Arc};
|
||||
|
||||
use ak_common::{Arbiter, Tasks, VERSION, api, arbiter, authentik_build_hash};
|
||||
use axum::http::{HeaderValue, header::AUTHORIZATION};
|
||||
use eyre::{Result, eyre};
|
||||
use futures::{SinkExt as _, StreamExt as _};
|
||||
use nix::unistd::gethostname;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_repr::{Deserialize_repr, Serialize_repr};
|
||||
use time::UtcDateTime;
|
||||
use tokio::{
|
||||
signal::unix::SignalKind,
|
||||
time::{Duration, interval, sleep},
|
||||
};
|
||||
use tokio_tungstenite::tungstenite::{Message, client::IntoClientRequest as _};
|
||||
use tracing::{debug, info, instrument, trace, warn};
|
||||
use url::Url;
|
||||
|
||||
use crate::outpost::{Outpost, OutpostController};
|
||||
|
||||
#[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug, Clone, Copy, Eq)]
|
||||
#[repr(u8)]
|
||||
enum EventKind {
|
||||
/// Code used to acknowledge a previous message.
|
||||
Ack = 0,
|
||||
/// Code used to send a healthcheck keepalive.
|
||||
Hello = 1,
|
||||
/// Code received to trigger a config update.
|
||||
TriggerUpdate = 2,
|
||||
/// Code received to trigger some provider specific function.
|
||||
ProviderSpecific = 3,
|
||||
/// Code received to identify the end of a session.
|
||||
SessionEnd = 4,
|
||||
}
|
||||
|
||||
impl Display for EventKind {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
Self::Ack => write!(f, "Ack"),
|
||||
Self::Hello => write!(f, "Hello"),
|
||||
Self::TriggerUpdate => write!(f, "TriggerUpdate"),
|
||||
Self::ProviderSpecific => write!(f, "ProviderSpecific"),
|
||||
Self::SessionEnd => write!(f, "SessionEnd"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
struct Event {
|
||||
instruction: EventKind,
|
||||
args: serde_json::Value,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(crate) struct EventSessionEnd {
|
||||
session_id: String,
|
||||
}
|
||||
|
||||
fn build_ws_url(mut url: Url, outpost_pk: &str, instance_uuid: &str, attempt: u32) -> Result<Url> {
|
||||
let ws_scheme = match url.scheme() {
|
||||
"https" => "wss",
|
||||
"http" => "ws",
|
||||
other => return Err(eyre!("Unsupported scheme for WebSocket URL: {other}")),
|
||||
};
|
||||
|
||||
url.set_scheme(ws_scheme)
|
||||
.map_err(|()| eyre!("Failed to set URL scheme to {ws_scheme}"))?;
|
||||
url.set_path(&format!("{}ws/outpost/{outpost_pk}/", url.path()));
|
||||
url.query_pairs_mut()
|
||||
.append_pair("instance_uuid", instance_uuid)
|
||||
.append_pair("attempt", &attempt.to_string());
|
||||
|
||||
Ok(url)
|
||||
}
|
||||
|
||||
fn hello_args(instance_uuid: &str) -> serde_json::Value {
|
||||
let raw_hostname = gethostname().unwrap_or_default();
|
||||
let hostname = raw_hostname.to_string_lossy();
|
||||
|
||||
serde_json::json!({
|
||||
"version": VERSION,
|
||||
"buildHash": authentik_build_hash(None),
|
||||
"uuid": instance_uuid,
|
||||
// TODO: rust version and AWS-LC versions
|
||||
"hostname": hostname,
|
||||
})
|
||||
}
|
||||
|
||||
#[instrument(skip_all)]
|
||||
async fn handle_event<O: Outpost>(
|
||||
controller: Arc<OutpostController>,
|
||||
outpost: Arc<O>,
|
||||
event: Event,
|
||||
) -> Result<()> {
|
||||
match event.instruction {
|
||||
EventKind::Ack | EventKind::Hello => {}
|
||||
EventKind::TriggerUpdate => {
|
||||
info!("received update trigger, refreshing outpost");
|
||||
sleep(controller.reload_offset).await;
|
||||
controller.refresh().await?;
|
||||
debug!("outpost controller has been refreshed");
|
||||
outpost.refresh().await?;
|
||||
debug!("outpost has been refreshed");
|
||||
#[expect(
|
||||
clippy::as_conversions,
|
||||
clippy::cast_precision_loss,
|
||||
reason = "This is fine, we'll never get big values here."
|
||||
)]
|
||||
controller
|
||||
.m_last_update
|
||||
.set(UtcDateTime::now().unix_timestamp() as f64);
|
||||
}
|
||||
EventKind::SessionEnd => {
|
||||
let event: EventSessionEnd = serde_json::from_value(event.args)?;
|
||||
outpost.end_session(event).await?;
|
||||
}
|
||||
#[expect(
|
||||
clippy::unimplemented,
|
||||
reason = "this is only relevant for the RAC provider"
|
||||
)]
|
||||
EventKind::ProviderSpecific => unimplemented!(),
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn watch_events_inner<O: Outpost>(
|
||||
arbiter: Arbiter,
|
||||
controller: Arc<OutpostController>,
|
||||
outpost: Arc<O>,
|
||||
attempt: u32,
|
||||
) -> Result<()> {
|
||||
let server_config = api::ServerConfig::new()?;
|
||||
let ws_url = build_ws_url(
|
||||
server_config.host,
|
||||
&controller.outpost.load().pk.to_string(),
|
||||
&controller.instance_uuid.to_string(),
|
||||
attempt,
|
||||
)?;
|
||||
|
||||
debug!(url = %ws_url, "connecting to websocket");
|
||||
let mut request = ws_url.into_client_request()?;
|
||||
let token = controller
|
||||
.api_config
|
||||
.bearer_access_token
|
||||
.as_deref()
|
||||
.unwrap_or("");
|
||||
request.headers_mut().insert(
|
||||
AUTHORIZATION,
|
||||
HeaderValue::from_str(&format!("Bearer {token}"))?,
|
||||
);
|
||||
|
||||
let (ws_stream, _response) = tokio_tungstenite::connect_async(request).await?;
|
||||
let (mut ws_write, mut ws_read) = ws_stream.split();
|
||||
|
||||
info!(
|
||||
outpost = %controller.outpost.load().pk,
|
||||
"connected to websocket"
|
||||
);
|
||||
controller.m_connection.set(1_u8);
|
||||
|
||||
let get_refresh_interval = || {
|
||||
let mut interval = controller.outpost.load().refresh_interval_s;
|
||||
// Ensure timer interval is not negative or 0.
|
||||
// If it is, we default to 5 minutes.
|
||||
if interval <= 0_i32 {
|
||||
interval = 60_i32 * 5_i32;
|
||||
}
|
||||
// Clamp interval to be at least 30 seconds.
|
||||
if interval < 30_i32 {
|
||||
interval = 30_i32;
|
||||
}
|
||||
// infallible because we bound it to be positive above
|
||||
Duration::from_secs(interval.try_into().expect("infallible"))
|
||||
};
|
||||
let mut refresh_interval = interval(get_refresh_interval());
|
||||
let mut heartbeat_interval = interval(Duration::from_secs(10));
|
||||
|
||||
let mut events_rx = arbiter.events_subscribe();
|
||||
|
||||
loop {
|
||||
tokio::select! {
|
||||
_ = refresh_interval.tick() => {
|
||||
info!("refreshing outpost on interval");
|
||||
if let Err(err) = handle_event(
|
||||
Arc::clone(&controller),
|
||||
Arc::clone(&outpost),
|
||||
Event {
|
||||
instruction: EventKind::TriggerUpdate,
|
||||
args: serde_json::Value::Null
|
||||
}
|
||||
).await {
|
||||
warn!(?err, "failed to refresh");
|
||||
}
|
||||
refresh_interval = interval(get_refresh_interval());
|
||||
// Since we re-create the interval, we need to make it tick instantly to avoid
|
||||
// ending up in a never-ending tick-loop.
|
||||
refresh_interval.tick().await;
|
||||
},
|
||||
_ = heartbeat_interval.tick() => {
|
||||
let ping = Event {
|
||||
instruction: EventKind::Hello,
|
||||
args: hello_args(&controller.instance_uuid.to_string()),
|
||||
};
|
||||
ws_write.send(Message::text(serde_json::to_string(&ping)?)).await?;
|
||||
trace!("sent websocket hello (heartbeat)");
|
||||
},
|
||||
Ok(arbiter::Event::Signal(signal)) = events_rx.recv() => {
|
||||
if signal == SignalKind::user_defined1() {
|
||||
info!("refreshing outpost on signal");
|
||||
if let Err(err) = handle_event(
|
||||
Arc::clone(&controller),
|
||||
Arc::clone(&outpost),
|
||||
Event {
|
||||
instruction: EventKind::TriggerUpdate,
|
||||
args: serde_json::Value::Null
|
||||
}
|
||||
).await {
|
||||
warn!(?err, "failed to refresh");
|
||||
}
|
||||
}
|
||||
},
|
||||
msg = ws_read.next() => {
|
||||
let Some(msg) = msg else {
|
||||
break;
|
||||
};
|
||||
let msg = msg?;
|
||||
match msg {
|
||||
Message::Text(text) => {
|
||||
let Ok(event): Result<Event, _> = serde_json::from_str(&text) else {
|
||||
warn!(data = text.as_str(), "failed to parse event");
|
||||
continue;
|
||||
};
|
||||
trace!(event = %event.instruction, "received websocket event");
|
||||
if let Err(err) = handle_event(
|
||||
Arc::clone(&controller),
|
||||
Arc::clone(&outpost),
|
||||
event,
|
||||
).await {
|
||||
warn!(?err, "failed to handle event");
|
||||
}
|
||||
},
|
||||
Message::Ping(data) => {
|
||||
ws_write.send(Message::Pong(data)).await?;
|
||||
},
|
||||
Message::Close(_) => {
|
||||
break;
|
||||
},
|
||||
_ => {},
|
||||
}
|
||||
},
|
||||
() = arbiter.shutdown() => break,
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn watch_events<O: Outpost>(
|
||||
arbiter: Arbiter,
|
||||
controller: Arc<OutpostController>,
|
||||
outpost: Arc<O>,
|
||||
) -> Result<()> {
|
||||
const MAX_BACKOFF: Duration = Duration::from_mins(5);
|
||||
let mut backoff = Duration::from_secs(1);
|
||||
let mut attempt: u32 = 0;
|
||||
|
||||
loop {
|
||||
tokio::select! {
|
||||
() = arbiter.shutdown() => break,
|
||||
res = watch_events_inner(
|
||||
arbiter.clone(),
|
||||
Arc::clone(&controller),
|
||||
Arc::clone(&outpost),
|
||||
attempt
|
||||
) => {
|
||||
controller.m_connection.set(0_u8);
|
||||
match res {
|
||||
Ok(()) => debug!("websocket disconnected cleanly"),
|
||||
Err(err) => warn!(?err, attempt, "websocket error"),
|
||||
}
|
||||
|
||||
info!(attempt, delay = backoff.as_secs(), "reconnecting websocket in {}s...", backoff.as_secs());
|
||||
|
||||
tokio::select! {
|
||||
() = arbiter.shutdown() => break,
|
||||
() = sleep(backoff) => {}
|
||||
}
|
||||
|
||||
backoff = (backoff * 2).min(MAX_BACKOFF);
|
||||
attempt += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
info!("stopping event watcher");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(crate) fn start<O: Outpost + 'static>(
|
||||
tasks: &mut Tasks,
|
||||
controller: Arc<OutpostController>,
|
||||
outpost: Arc<O>,
|
||||
) -> Result<()> {
|
||||
let arbiter = tasks.arbiter();
|
||||
tasks
|
||||
.build_task()
|
||||
.name(&format!("{}::watch_events", module_path!()))
|
||||
.spawn(watch_events(arbiter, controller, outpost))?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
use std::{sync::Arc, time::Duration};
|
||||
|
||||
use ak_client::{
|
||||
apis::{configuration::Configuration, outposts_api::outposts_instances_list},
|
||||
models::Outpost as OutpostModel,
|
||||
};
|
||||
use ak_common::{Tasks, VERSION, api, authentik_build_hash};
|
||||
use arc_swap::ArcSwap;
|
||||
use eyre::{Result, eyre};
|
||||
use tracing::{debug, info, instrument};
|
||||
use uuid::Uuid;
|
||||
|
||||
pub(crate) mod event;
|
||||
#[cfg(feature = "proxy")]
|
||||
pub(crate) mod proxy;
|
||||
|
||||
pub(crate) trait Outpost: Send + Sync + Sized {
|
||||
const OUTPOST_TYPE: &'static str;
|
||||
type Cli: Send + Sync;
|
||||
|
||||
async fn new(controller: Arc<OutpostController>) -> Result<Self>;
|
||||
|
||||
fn start(self: Arc<Self>, tasks: &mut Tasks) -> Result<()>;
|
||||
fn refresh(&self) -> impl Future<Output = Result<()>> + Send;
|
||||
|
||||
fn end_session(&self, event: event::EventSessionEnd)
|
||||
-> impl Future<Output = Result<()>> + Send;
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub(crate) struct OutpostController {
|
||||
api_config: Configuration,
|
||||
outpost: ArcSwap<OutpostModel>,
|
||||
instance_uuid: Uuid,
|
||||
reload_offset: Duration,
|
||||
m_info: metrics::Gauge,
|
||||
m_last_update: metrics::Gauge,
|
||||
m_connection: metrics::Gauge,
|
||||
}
|
||||
|
||||
impl OutpostController {
|
||||
#[instrument(skip_all)]
|
||||
async fn get_outpost(api_config: &Configuration) -> Result<OutpostModel> {
|
||||
let outposts = outposts_instances_list(
|
||||
api_config, None, None, None, None, None, None, None, None, None, None, None, None,
|
||||
)
|
||||
.await?;
|
||||
|
||||
let Some(outpost) = outposts.results.into_iter().next() else {
|
||||
return Err(eyre!(
|
||||
"No outposts found with given token, ensure the given token corresponds to an \
|
||||
authentik Outpost"
|
||||
));
|
||||
};
|
||||
debug!(name = outpost.name, "fetched outpost configuration");
|
||||
|
||||
Ok(outpost)
|
||||
}
|
||||
|
||||
#[instrument(skip_all)]
|
||||
async fn new<O: Outpost>() -> Result<Self> {
|
||||
let api_config = api::make_config()?;
|
||||
let outpost = Self::get_outpost(&api_config).await?;
|
||||
let instance_uuid = Uuid::new_v4();
|
||||
|
||||
let m_labels = [
|
||||
("outpost_name", outpost.name.clone()),
|
||||
("outpost_type", O::OUTPOST_TYPE.to_owned()),
|
||||
("uuid", instance_uuid.to_string()),
|
||||
("version", VERSION.to_owned()),
|
||||
("build", authentik_build_hash(None)),
|
||||
];
|
||||
metrics::describe_gauge!("authentik_outpost_info", "Outpost info");
|
||||
let m_info = metrics::gauge!("authentik_outpost_info", &m_labels);
|
||||
metrics::describe_gauge!("authentik_outpost_last_update", "Time of last update");
|
||||
let m_last_update = metrics::gauge!("authentik_outpost_last_update", &m_labels);
|
||||
metrics::describe_gauge!("authentik_outpost_connection", "Connection status");
|
||||
let m_connection = metrics::gauge!("authentik_outpost_connection", &m_labels);
|
||||
|
||||
let reload_offset = Duration::from_secs(rand::random_range(0..10));
|
||||
let controller = Self {
|
||||
api_config,
|
||||
outpost: ArcSwap::from_pointee(outpost),
|
||||
instance_uuid,
|
||||
reload_offset,
|
||||
m_info,
|
||||
m_last_update,
|
||||
m_connection,
|
||||
};
|
||||
|
||||
info!(embedded = controller.is_embedded(), "outpost mode");
|
||||
debug!(?reload_offset, "HA Reload offset");
|
||||
|
||||
Ok(controller)
|
||||
}
|
||||
|
||||
fn is_embedded(&self) -> bool {
|
||||
self.outpost
|
||||
.load()
|
||||
.managed
|
||||
.as_ref()
|
||||
.and_then(|m| m.as_deref())
|
||||
.is_some_and(|m| m == "goauthentik.io/outposts/embedded")
|
||||
}
|
||||
|
||||
async fn refresh(&self) -> Result<()> {
|
||||
let outpost = Self::get_outpost(&self.api_config).await?;
|
||||
self.outpost.swap(Arc::new(outpost));
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[instrument(skip_all)]
|
||||
pub(crate) async fn start<O: Outpost + 'static>(_cli: O::Cli, tasks: &mut Tasks) -> Result<()> {
|
||||
let controller = Arc::new(OutpostController::new::<O>().await?);
|
||||
let outpost = Arc::new(O::new(Arc::clone(&controller)).await?);
|
||||
|
||||
event::start(tasks, Arc::clone(&controller), Arc::clone(&outpost))?;
|
||||
outpost.start(tasks)?;
|
||||
controller.m_info.set(1_u8);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use ak_client::{
|
||||
apis::crypto_api::{
|
||||
crypto_certificatekeypairs_view_certificate_retrieve,
|
||||
crypto_certificatekeypairs_view_private_key_retrieve,
|
||||
},
|
||||
models::ProxyOutpostConfig,
|
||||
};
|
||||
use axum::Router;
|
||||
use eyre::{Result, eyre};
|
||||
use rustls::{
|
||||
crypto::CryptoProvider,
|
||||
pki_types::{CertificateDer, PrivateKeyDer, pem::PemObject as _},
|
||||
sign::CertifiedKey,
|
||||
};
|
||||
use tracing::instrument;
|
||||
use url::Url;
|
||||
|
||||
use crate::outpost::proxy::ProxyOutpost;
|
||||
|
||||
const REDIRECT_PARAM: &str = "rd";
|
||||
const CALLBACK_SIGNATURE: &str = "X-authentik-auth-callback";
|
||||
const LOGOUT_SIGNATURE: &str = "X-authentik-logout";
|
||||
|
||||
#[derive(Debug)]
|
||||
pub(super) struct Application {
|
||||
pub(super) host: String,
|
||||
pub(super) provider: ProxyOutpostConfig,
|
||||
pub(super) router: Router,
|
||||
pub(super) cert: Option<Arc<CertifiedKey>>,
|
||||
}
|
||||
|
||||
impl Application {
|
||||
#[instrument(skip_all)]
|
||||
pub(super) async fn new(outpost: &ProxyOutpost, provider: ProxyOutpostConfig) -> Result<Self> {
|
||||
let external_url = Url::parse(&provider.external_host)?;
|
||||
if !external_url.has_authority() {
|
||||
return Err(eyre!("no host in external host"));
|
||||
}
|
||||
let external_host = external_url.authority();
|
||||
|
||||
// TODO: extract this to a certificate store to avoid re-fetching the certificate every time
|
||||
let cert = if let Some(Some(kp_uuid)) = provider.certificate {
|
||||
let cert = crypto_certificatekeypairs_view_certificate_retrieve(
|
||||
&outpost.controller.api_config,
|
||||
&kp_uuid.to_string(),
|
||||
None,
|
||||
)
|
||||
.await?;
|
||||
let key = crypto_certificatekeypairs_view_private_key_retrieve(
|
||||
&outpost.controller.api_config,
|
||||
&kp_uuid.to_string(),
|
||||
None,
|
||||
)
|
||||
.await?;
|
||||
let cert_chain = CertificateDer::pem_reader_iter(cert.data.as_bytes())
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
let key_der = PrivateKeyDer::from_pem_reader(key.data.as_bytes())?;
|
||||
let provider = CryptoProvider::get_default().expect("no rustls provider installed");
|
||||
Some(Arc::new(CertifiedKey::new(
|
||||
cert_chain,
|
||||
provider.key_provider.load_private_key(key_der)?,
|
||||
)))
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let _redirect_url = {
|
||||
let mut redirect_url = external_url.join("outpost.goauthentik.io/callback")?;
|
||||
redirect_url.set_query(Some(&format!("{CALLBACK_SIGNATURE}=true")));
|
||||
redirect_url
|
||||
};
|
||||
|
||||
Ok(Self {
|
||||
host: external_host.to_owned(),
|
||||
provider,
|
||||
router: Router::new(),
|
||||
cert,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use ak_axum::{error::Result, extract::host::Host};
|
||||
use axum::{
|
||||
extract::{Request, State},
|
||||
http::{Method, StatusCode, header::CONTENT_TYPE},
|
||||
response::{IntoResponse as _, Response},
|
||||
};
|
||||
use metrics::histogram;
|
||||
use serde_json::json;
|
||||
use tokio::time::Instant;
|
||||
use tower::util::ServiceExt as _;
|
||||
use tracing::{Instrument as _, field, info_span, instrument, trace, warn};
|
||||
|
||||
use crate::outpost::proxy::ProxyOutpost;
|
||||
|
||||
#[instrument(skip_all)]
|
||||
pub(super) async fn handle_ping(
|
||||
method: Method,
|
||||
Host(host): Host,
|
||||
State(outpost): State<Arc<ProxyOutpost>>,
|
||||
) -> Response {
|
||||
let start = Instant::now();
|
||||
histogram!(
|
||||
"authentik_outpost_proxy_request_duration_seconds",
|
||||
"outpost_name" => outpost.controller.outpost.load().name.clone(),
|
||||
"method" => method.to_string(),
|
||||
"host" => host,
|
||||
"type" => "ping",
|
||||
)
|
||||
.record(start.elapsed().as_secs_f64());
|
||||
StatusCode::NO_CONTENT.into_response()
|
||||
}
|
||||
|
||||
#[instrument(skip_all)]
|
||||
pub(super) async fn default(
|
||||
method: Method,
|
||||
Host(host): Host,
|
||||
State(outpost): State<Arc<ProxyOutpost>>,
|
||||
request: Request,
|
||||
) -> Result<Response> {
|
||||
let span = info_span!("proxy outpost request", user = field::Empty);
|
||||
let start = Instant::now();
|
||||
|
||||
let Some(app) = outpost.lookup_app(&host) else {
|
||||
trace!(headers = ?request.headers(), "tracing headers for no hostname match");
|
||||
warn!("no app for hostname");
|
||||
return Ok(Response::builder()
|
||||
.status(StatusCode::BAD_REQUEST)
|
||||
.header(CONTENT_TYPE, "application/json")
|
||||
.body(
|
||||
json!({
|
||||
"message": "no app for hostname",
|
||||
"host": host,
|
||||
"detail": format!("check the outpost settings and make sure '{host}' is included."),
|
||||
})
|
||||
.to_string()
|
||||
.into(),
|
||||
)
|
||||
.expect("infallible"));
|
||||
};
|
||||
|
||||
trace!("passing to application");
|
||||
let response = app.router.clone().oneshot(request).instrument(span).await?;
|
||||
|
||||
histogram!(
|
||||
"authentik_outpost_proxy_request_duration_seconds",
|
||||
"outpost_name" => outpost.controller.outpost.load().name.clone(),
|
||||
"method" => method.to_string(),
|
||||
"host" => host,
|
||||
"type" => "app",
|
||||
)
|
||||
.record(start.elapsed().as_secs_f64());
|
||||
|
||||
Ok(response)
|
||||
}
|
||||
@@ -1,228 +0,0 @@
|
||||
use std::{collections::HashMap, sync::Arc};
|
||||
|
||||
use ak_axum::router::wrap_router;
|
||||
use ak_client::{apis::outposts_api::outposts_proxy_list, models::ProxyMode};
|
||||
use ak_common::{Tasks, api::fetch_all, config, tls};
|
||||
use arc_swap::ArcSwap;
|
||||
use argh::FromArgs;
|
||||
use axum::Router;
|
||||
use axum_server::tls_rustls::RustlsConfig;
|
||||
use eyre::Result;
|
||||
use rustls::{
|
||||
ServerConfig,
|
||||
server::{ClientHello, ResolvesServerCert},
|
||||
sign::CertifiedKey,
|
||||
};
|
||||
use tracing::{debug, error, info, instrument, warn};
|
||||
|
||||
use crate::outpost::{Outpost, OutpostController, proxy::application::Application};
|
||||
|
||||
mod application;
|
||||
mod handlers;
|
||||
|
||||
#[derive(Debug, Default, FromArgs, PartialEq, Eq)]
|
||||
/// Run the authentik proxy outpost.
|
||||
#[argh(subcommand, name = "proxy")]
|
||||
#[expect(
|
||||
clippy::empty_structs_with_brackets,
|
||||
reason = "argh doesn't support unit structs"
|
||||
)]
|
||||
pub(crate) struct Cli {}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub(crate) struct ProxyOutpost {
|
||||
controller: Arc<OutpostController>,
|
||||
apps: ArcSwap<HashMap<String, Arc<Application>>>,
|
||||
default_cert: Arc<CertifiedKey>,
|
||||
}
|
||||
|
||||
impl Outpost for ProxyOutpost {
|
||||
type Cli = Cli;
|
||||
|
||||
const OUTPOST_TYPE: &'static str = "proxy";
|
||||
|
||||
#[instrument(skip_all)]
|
||||
async fn new(controller: Arc<OutpostController>) -> Result<Self> {
|
||||
Ok(Self {
|
||||
controller,
|
||||
apps: ArcSwap::from_pointee(HashMap::with_capacity(0)),
|
||||
default_cert: Arc::new(tls::self_signed::generate_certifiedkey()?),
|
||||
})
|
||||
}
|
||||
|
||||
fn start(self: Arc<Self>, tasks: &mut Tasks) -> Result<()> {
|
||||
let router = build_router(Arc::clone(&self));
|
||||
|
||||
for addr in config::get().listen.http.iter().copied() {
|
||||
ak_axum::server::start_plain(tasks, "proxy-outpost", router.clone(), addr)?;
|
||||
}
|
||||
|
||||
for addr in config::get().listen.https.iter().copied() {
|
||||
let resolver = Arc::clone(&self);
|
||||
let server_config = ServerConfig::builder()
|
||||
.with_no_client_auth()
|
||||
.with_cert_resolver(resolver);
|
||||
let rustls_config = RustlsConfig::from_config(Arc::new(server_config));
|
||||
ak_axum::server::start_tls(
|
||||
tasks,
|
||||
"proxy-outpost",
|
||||
router.clone(),
|
||||
addr,
|
||||
rustls_config,
|
||||
)?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[instrument(skip_all)]
|
||||
async fn refresh(&self) -> Result<()> {
|
||||
debug!(
|
||||
outpost_pk = %self.controller.outpost.load().pk,
|
||||
"requesting providers for outpost"
|
||||
);
|
||||
|
||||
let providers = fetch_all(
|
||||
|page| {
|
||||
outposts_proxy_list(
|
||||
&self.controller.api_config,
|
||||
None,
|
||||
None,
|
||||
Some(page),
|
||||
Some(100_i32),
|
||||
None,
|
||||
)
|
||||
},
|
||||
|r| &r.pagination,
|
||||
|r| r.results,
|
||||
)
|
||||
.await
|
||||
.inspect_err(|err| error!(?err, "failed to fetch providers"))?;
|
||||
debug!(count = providers.len(), "fetched providers");
|
||||
|
||||
if providers.is_empty() && !self.controller.is_embedded() {
|
||||
warn!(
|
||||
"no providers assigned to this outpost, check outpost configuration in authentik"
|
||||
);
|
||||
}
|
||||
|
||||
for (i, provider) in providers.iter().enumerate() {
|
||||
debug!(
|
||||
index = i,
|
||||
name = provider.name,
|
||||
external_host = provider.external_host,
|
||||
assigned_to_app = provider.assigned_application_name,
|
||||
"provider details"
|
||||
);
|
||||
}
|
||||
|
||||
let mut apps = HashMap::with_capacity(providers.len());
|
||||
|
||||
for provider in providers {
|
||||
let name = provider.name.clone();
|
||||
let Ok(application) = Application::new(self, provider)
|
||||
.await
|
||||
.inspect_err(|err| warn!(?err, "failed to setup application, skipping provider"))
|
||||
else {
|
||||
continue;
|
||||
};
|
||||
info!(name, host = application.host, "loaded application");
|
||||
|
||||
apps.insert(application.host.clone(), Arc::new(application));
|
||||
}
|
||||
|
||||
self.apps.store(Arc::new(apps));
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn end_session(&self, _event: super::event::EventSessionEnd) -> Result<()> {
|
||||
// todo!()
|
||||
warn!(?_event, "removing session");
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl ResolvesServerCert for ProxyOutpost {
|
||||
fn resolve(&self, client_hello: ClientHello<'_>) -> Option<Arc<CertifiedKey>> {
|
||||
if let Some(server_name) = client_hello.server_name()
|
||||
&& let Some(app) = self.apps.load().get(server_name)
|
||||
&& let Some(cert) = &app.cert
|
||||
{
|
||||
return Some(Arc::clone(cert));
|
||||
}
|
||||
Some(Arc::clone(&self.default_cert))
|
||||
}
|
||||
|
||||
fn only_raw_public_keys(&self) -> bool {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
impl ProxyOutpost {
|
||||
#[instrument(skip(self))]
|
||||
fn lookup_app(&self, host: &str) -> Option<Arc<Application>> {
|
||||
let apps = self.apps.load();
|
||||
|
||||
// If we only have a single app, host name switching doesn't matter.
|
||||
if apps.len() == 1
|
||||
&& let Some(app) = apps.values().next()
|
||||
{
|
||||
debug!(app = app.provider.name, "found a single app, using it");
|
||||
return Some(Arc::clone(app));
|
||||
}
|
||||
|
||||
if let Some(app) = apps.get(host) {
|
||||
debug!(app = app.provider.name, "found app based direct host match");
|
||||
return Some(Arc::clone(app));
|
||||
}
|
||||
|
||||
// For forward_auth_domain, we don't have a direct app to domain relationship.
|
||||
// Check through all apps, and check how much of their cookie domain matches the host.
|
||||
// Return the application that has the longest match.
|
||||
let mut longest_match = None;
|
||||
let mut longest_len = 0_usize;
|
||||
|
||||
for app in apps.values() {
|
||||
if app.provider.mode != Some(ProxyMode::ForwardDomain) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if let Some(cookie_domain) = app.provider.cookie_domain.as_deref() {
|
||||
// Check if the cookie domain has a leading period for a wildcard.
|
||||
// This will decrease the weight of a wildcard domain, but a request to example.com
|
||||
// with the cookie domain set to example.com will still be routed correctly.
|
||||
let domain = cookie_domain.trim_start_matches('.');
|
||||
|
||||
if host.ends_with(domain) && domain.len() > longest_len {
|
||||
longest_len = domain.len();
|
||||
longest_match = Some(Arc::clone(app));
|
||||
}
|
||||
// For forward_auth_domain, we need to response on the external domain too.
|
||||
if app.provider.external_host == host {
|
||||
debug!(app = app.provider.name, "found app based on external_host");
|
||||
return Some(Arc::clone(app));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(app) = &longest_match {
|
||||
debug!(app = app.provider.name, "found app based on cookie domain");
|
||||
}
|
||||
|
||||
longest_match
|
||||
}
|
||||
}
|
||||
|
||||
fn build_router(outpost: Arc<ProxyOutpost>) -> Router {
|
||||
wrap_router(
|
||||
Router::new()
|
||||
.nest(
|
||||
"/outpost.goauthentik.io/ping",
|
||||
Router::new().fallback(handlers::handle_ping),
|
||||
)
|
||||
.fallback(handlers::default)
|
||||
.with_state(outpost),
|
||||
true,
|
||||
)
|
||||
}
|
||||
@@ -111,12 +111,8 @@ class TestFlowsEnroll(SeleniumTestCase):
|
||||
identification_stage = self.get_shadow_root("ak-stage-identification", flow_executor)
|
||||
wait = WebDriverWait(identification_stage, self.wait_timeout)
|
||||
|
||||
wait.until(
|
||||
ec.presence_of_element_located((By.CSS_SELECTOR, "a[data-ouia-component-id='enroll']"))
|
||||
)
|
||||
identification_stage.find_element(
|
||||
By.CSS_SELECTOR, "a[data-ouia-component-id='enroll']"
|
||||
).click()
|
||||
wait.until(ec.presence_of_element_located((By.CSS_SELECTOR, "a[ouiaId='enroll']")))
|
||||
identification_stage.find_element(By.CSS_SELECTOR, "a[ouiaId='enroll']").click()
|
||||
|
||||
# First prompt stage
|
||||
flow_executor = self.get_shadow_root("ak-flow-executor")
|
||||
|
||||
@@ -27,14 +27,8 @@ class TestFlowsRecovery(SeleniumTestCase):
|
||||
identification_stage = self.get_shadow_root("ak-stage-identification", flow_executor)
|
||||
wait = WebDriverWait(identification_stage, self.wait_timeout)
|
||||
|
||||
wait.until(
|
||||
ec.presence_of_element_located(
|
||||
(By.CSS_SELECTOR, "a[data-ouia-component-id='recovery']")
|
||||
)
|
||||
)
|
||||
identification_stage.find_element(
|
||||
By.CSS_SELECTOR, "a[data-ouia-component-id='recovery']"
|
||||
).click()
|
||||
wait.until(ec.presence_of_element_located((By.CSS_SELECTOR, "a[ouiaId='recovery']")))
|
||||
identification_stage.find_element(By.CSS_SELECTOR, "a[ouiaId='recovery']").click()
|
||||
|
||||
# First prompt stage
|
||||
flow_executor = self.get_shadow_root("ak-flow-executor")
|
||||
|
||||
126
web/package-lock.json
generated
126
web/package-lock.json
generated
@@ -66,7 +66,7 @@
|
||||
"chartjs-adapter-date-fns": "^3.0.0",
|
||||
"codemirror": "^6.0.2",
|
||||
"core-js": "^3.49.0",
|
||||
"country-flag-icons": "^1.6.17",
|
||||
"country-flag-icons": "^1.6.16",
|
||||
"date-fns": "^4.1.0",
|
||||
"deepmerge-ts": "^7.1.5",
|
||||
"dompurify": "^3.4.2",
|
||||
@@ -118,7 +118,7 @@
|
||||
"vitest": "^4.1.1",
|
||||
"webcomponent-qr-code": "^1.3.0",
|
||||
"wireit": "^0.14.12",
|
||||
"yaml": "^2.8.4"
|
||||
"yaml": "^2.8.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=24",
|
||||
@@ -4577,9 +4577,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.33.tgz",
|
||||
"integrity": "sha512-jOlwnFV2xhuuZeAUILGFULeR6vDPfijEJ57evfocwznQldLU3w2cZ9bSDryY9ip+AsM3r1NJKzf47V2NXebkeQ==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.32.tgz",
|
||||
"integrity": "sha512-/eWL0n43D64QWEUHLtTE+jDqjkJhyidjkDhv6f0uJohOUAhywxQ9wXYp845DNNds0JpCdI4Uo0a9bl+vbXf+ew==",
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
@@ -4594,18 +4594,18 @@
|
||||
"url": "https://opencollective.com/swc"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@swc/core-darwin-arm64": "1.15.33",
|
||||
"@swc/core-darwin-x64": "1.15.33",
|
||||
"@swc/core-linux-arm-gnueabihf": "1.15.33",
|
||||
"@swc/core-linux-arm64-gnu": "1.15.33",
|
||||
"@swc/core-linux-arm64-musl": "1.15.33",
|
||||
"@swc/core-linux-ppc64-gnu": "1.15.33",
|
||||
"@swc/core-linux-s390x-gnu": "1.15.33",
|
||||
"@swc/core-linux-x64-gnu": "1.15.33",
|
||||
"@swc/core-linux-x64-musl": "1.15.33",
|
||||
"@swc/core-win32-arm64-msvc": "1.15.33",
|
||||
"@swc/core-win32-ia32-msvc": "1.15.33",
|
||||
"@swc/core-win32-x64-msvc": "1.15.33"
|
||||
"@swc/core-darwin-arm64": "1.15.32",
|
||||
"@swc/core-darwin-x64": "1.15.32",
|
||||
"@swc/core-linux-arm-gnueabihf": "1.15.32",
|
||||
"@swc/core-linux-arm64-gnu": "1.15.32",
|
||||
"@swc/core-linux-arm64-musl": "1.15.32",
|
||||
"@swc/core-linux-ppc64-gnu": "1.15.32",
|
||||
"@swc/core-linux-s390x-gnu": "1.15.32",
|
||||
"@swc/core-linux-x64-gnu": "1.15.32",
|
||||
"@swc/core-linux-x64-musl": "1.15.32",
|
||||
"@swc/core-win32-arm64-msvc": "1.15.32",
|
||||
"@swc/core-win32-ia32-msvc": "1.15.32",
|
||||
"@swc/core-win32-x64-msvc": "1.15.32"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@swc/helpers": ">=0.5.17"
|
||||
@@ -4617,9 +4617,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-darwin-arm64": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.33.tgz",
|
||||
"integrity": "sha512-N+L0uXhuO7FIfzqwgxmzv0zIpV0qEp8wPX3QQs2p4atjMoywup2JTeDlXPw+z9pWJGCae3JjM+tZ6myclI+2gA==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.32.tgz",
|
||||
"integrity": "sha512-/YWMvJDPu+AAwuUsM2G+DNQ/7zhodURGzdQyewEqcvgklAdDHs3LwQmLLnyn6SJl8DT8UOxkbzK+D1PmPeelRg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -4633,9 +4633,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-darwin-x64": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.33.tgz",
|
||||
"integrity": "sha512-/Il4QHSOhV4FekbsDtkrNmKbsX26oSysvgrRswa/RYOHXAkwXDbB4jaeKq6PsJLSPkzJ2KzQ061gtBnk0vNHfA==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.32.tgz",
|
||||
"integrity": "sha512-KOTXJXdAhWL+hZ77MYP3z+4pcMFaQhQ74yqyN1uz093q0YnbxpqMtYpPISbYvMHzVRNNx5kN+9RZAXEaadhWVA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -4649,9 +4649,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm-gnueabihf": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.33.tgz",
|
||||
"integrity": "sha512-C64hBnBxq4viOPQ8hlx+2lJ23bzZBGnjw7ryALmS+0Q3zHmwO8lw1/DArLENw4Q18/0w5wdEO1k3m1wWNtKGqQ==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.32.tgz",
|
||||
"integrity": "sha512-oOoxLweljlc0A4X8ybsgxV7cVaYTwBOg2iMDJcFR3Sr48C+lsv9VzSmqdK/IVIXF4W4GjLc3VqTAdSMXlfVLuQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -4665,9 +4665,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm64-gnu": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.33.tgz",
|
||||
"integrity": "sha512-TRJfnJbX3jqpxRDRoieMzRiCBS5jOmXNb3iQXmcgjFEHKLnAgK1RZRU8Cq1MsPqO4jAJp/ld1G4O3fXuxv85uw==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.32.tgz",
|
||||
"integrity": "sha512-oDzEkdl6D6BAWdMtU5KGO7y3HR5fJcvByNLyEk9+ugj8nP5Ovb7P4kBcStBXc4MPExFGQryehiINMlmY8HlclA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -4681,9 +4681,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm64-musl": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.33.tgz",
|
||||
"integrity": "sha512-il7tYM+CpUNzieQbwAjFT1P8zqAhmGWNAGhQZBnxurXZ0aNn+5nqYFTEUKNZl7QibtT0uQXzTZrNGHCIj6Y1Og==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.32.tgz",
|
||||
"integrity": "sha512-omcqjoZP/b8D8PuczVoRwJieC6ibj7qIxTftNYokz4/aSmKFHvsd7nIFfPk5ZvtzncbH4AY7+Dkr/Lp2gWxYeA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -4697,9 +4697,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-ppc64-gnu": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.33.tgz",
|
||||
"integrity": "sha512-ZtNBwN0Z7CFj9Il0FcPaKdjgP7URyKu/3RfH46vq+0paOBqLj4NYldD6Qo//Duif/7IOtAraUfDOmp0PLAufog==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.32.tgz",
|
||||
"integrity": "sha512-KGkTMyz/Tbn3PBNu0AVZ4GTDFKnICrYcTiNPZq8DrvK42pnFsf3GNDrIG9E5AtQlTmC0YigkWKmu0eMcfTrmgA==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
@@ -4713,9 +4713,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-s390x-gnu": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.33.tgz",
|
||||
"integrity": "sha512-De1IyajoOmhOYYjw/lx66bKlyDpHZTueqwpDrWgf5O7T6d1ODeJJO9/OqMBmrBQc5C+dNnlmIufHsp4QVCWufA==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.32.tgz",
|
||||
"integrity": "sha512-G3Aa4tVS/3OGZBkoNIwUF9F6RAy+Osb4GOlo62SinLmDiErz/ykmM7KH0wkz6l9kM8jJq1HyAM6atJTUEbBk7g==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
@@ -4729,9 +4729,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-x64-gnu": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.33.tgz",
|
||||
"integrity": "sha512-mGTH0YxmUN+x6vRN/I6NOk5X0ogNktkwPnJ94IMvR7QjhRDwL0O8RXEDhyUM0YtwWrryBOqaJQBX4zruxEPRGw==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.32.tgz",
|
||||
"integrity": "sha512-ERsjfGcj6CBmj3vJnGDO8m8rTvw6RqMcWo1dogOtNx3/+/0+NNpJiXDobJrr1GwInI/BHAEkvSFIH6d2LqPcUQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -4745,9 +4745,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-x64-musl": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.33.tgz",
|
||||
"integrity": "sha512-hj628ZkSEJf6zMf5VMbYrG2O6QqyTIp2qwY6VlCjvIa9lAEZ5c2lfPblCLVGYubTeLJDxadLB/CxqQYOQABeEQ==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.32.tgz",
|
||||
"integrity": "sha512-N4Ggahe/8SUbTX50P6EdhbW9YWcgbZVb52R4cq6MK+zsoMjRq7rGvV5ztA05QnbaCYqMYx8rTY7KAIA3Crdo4Q==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -4761,9 +4761,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-win32-arm64-msvc": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.33.tgz",
|
||||
"integrity": "sha512-GV2oohtN2/5+KSccl86VULu3aT+LrISC8uzgSq0FRnikpD+Zwc+sBlXmoKQ+Db6jI57ITUOIB8jRkdGMABC29g==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.32.tgz",
|
||||
"integrity": "sha512-01yN0o9jvo8xBTP12aPK2wW8b41jmOlGbDDlAnoynotc4pO6xA0zby9f1z6j++qXDpGBttLySq1omgVrlQKYcw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -4777,9 +4777,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-win32-ia32-msvc": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.33.tgz",
|
||||
"integrity": "sha512-gtyvzSNR8DHKfFEA2uqb8Ld1myqi6uEg2jyeUq3ikn5ytYs7H8RpZYC8mdy4NXr8hfcdJfCLXPlYaqqfBXpoEQ==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.32.tgz",
|
||||
"integrity": "sha512-fLagI9XZYNpTcmlqAcp3KBtmj7E19WCmYD80Jxj1Kn5tGNa7yxNLd3NNdWxuZGUPl5iC0/KqZru7g08gF6Fsrw==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
@@ -4793,9 +4793,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-win32-x64-msvc": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.33.tgz",
|
||||
"integrity": "sha512-d6fRqQSkJI+kmMEBWaDQ7TMl8+YjLYbwRUPZQ9DY0ORBJeTzOrG0twvfvlZ2xgw6jA0ScQKgfBm4vHLSLl5Hqg==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.32.tgz",
|
||||
"integrity": "sha512-gbc2bQ/T2CiR+w0OvcVKwLOFAcPZBvmWmolbwpg1E8UrpeC03DGtyMUApOHNXNYWA3SHFrYXCQtosrcMza1YFg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -7475,9 +7475,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/country-flag-icons": {
|
||||
"version": "1.6.17",
|
||||
"resolved": "https://registry.npmjs.org/country-flag-icons/-/country-flag-icons-1.6.17.tgz",
|
||||
"integrity": "sha512-Nmik0289ZVZSI3c7mJR/amg6DyY7Z59b0sTFSKayeX72mHfPzCPJygwJs2pYgQULzuAyWeCUgwAJ+Dq8OR+JFw==",
|
||||
"version": "1.6.16",
|
||||
"resolved": "https://registry.npmjs.org/country-flag-icons/-/country-flag-icons-1.6.16.tgz",
|
||||
"integrity": "sha512-HxJVoE/aaZGcUMx1vK/u9430uKGB3ODZDDZJJOqVJQzoHk5v42c0fSp1rk4tDfyr1dVOJjwxRiaBPliBMo2Liw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/crelt": {
|
||||
@@ -10748,9 +10748,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/ip-address": {
|
||||
"version": "10.2.0",
|
||||
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz",
|
||||
"integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==",
|
||||
"version": "10.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
|
||||
"integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
@@ -19093,9 +19093,9 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/yaml": {
|
||||
"version": "2.8.4",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.4.tgz",
|
||||
"integrity": "sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==",
|
||||
"version": "2.8.3",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
|
||||
"integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"yaml": "bin.mjs"
|
||||
@@ -19280,7 +19280,7 @@
|
||||
"@rollup/plugin-node-resolve": "^16.0.3",
|
||||
"@rollup/plugin-swc": "^0.4.0",
|
||||
"@swc/cli": "^0.8.1",
|
||||
"@swc/core": "^1.15.33",
|
||||
"@swc/core": "^1.15.32",
|
||||
"@webcomponents/template": "^1.5.1",
|
||||
"base64-js": "^1.5.1",
|
||||
"core-js": "^3.49.0",
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
"chartjs-adapter-date-fns": "^3.0.0",
|
||||
"codemirror": "^6.0.2",
|
||||
"core-js": "^3.49.0",
|
||||
"country-flag-icons": "^1.6.17",
|
||||
"country-flag-icons": "^1.6.16",
|
||||
"date-fns": "^4.1.0",
|
||||
"deepmerge-ts": "^7.1.5",
|
||||
"dompurify": "^3.4.2",
|
||||
@@ -194,7 +194,7 @@
|
||||
"vitest": "^4.1.1",
|
||||
"webcomponent-qr-code": "^1.3.0",
|
||||
"wireit": "^0.14.12",
|
||||
"yaml": "^2.8.4"
|
||||
"yaml": "^2.8.3"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@esbuild/darwin-arm64": "^0.28.0",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"@rollup/plugin-node-resolve": "^16.0.3",
|
||||
"@rollup/plugin-swc": "^0.4.0",
|
||||
"@swc/cli": "^0.8.1",
|
||||
"@swc/core": "^1.15.33",
|
||||
"@swc/core": "^1.15.32",
|
||||
"@webcomponents/template": "^1.5.1",
|
||||
"base64-js": "^1.5.1",
|
||||
"core-js": "^3.49.0",
|
||||
|
||||
@@ -386,7 +386,7 @@ export class IdentificationStage extends BaseStage<
|
||||
return html`<a
|
||||
href=${url}
|
||||
class="pf-c-button pf-m-secondary pf-m-block"
|
||||
data-ouia-component-id="passwordless"
|
||||
ouiaId="passwordless"
|
||||
>
|
||||
${msg("Use a security key")}
|
||||
</a> `;
|
||||
@@ -475,12 +475,12 @@ export class IdentificationStage extends BaseStage<
|
||||
${enrollUrl
|
||||
? html`<div class="pf-c-login__main-footer-band-item">
|
||||
${msg("Need an account?")}
|
||||
<a href="${enrollUrl}" data-ouia-component-id="enroll">${msg("Sign up.")}</a>
|
||||
<a href="${enrollUrl}" ouiaId="enroll">${msg("Sign up.")}</a>
|
||||
</div>`
|
||||
: nothing}
|
||||
${recoveryUrl
|
||||
? html`<div class="pf-c-login__main-footer-band-item">
|
||||
<a href="${recoveryUrl}" data-ouia-component-id="recovery"
|
||||
<a href="${recoveryUrl}" ouiaId="recovery"
|
||||
>${msg("Forgot username or password?")}</a
|
||||
>
|
||||
</div>`
|
||||
|
||||
@@ -6255,6 +6255,18 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>Příloha autentikátoru</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>Není odesílána žádná preference</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>Neodstranitelný autentikátor, jako TouchID nebo Windows Hello</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>„Roamingový" autentikátor, jako YubiKey</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
<target>Maximální počet pokusů o registraci</target>
|
||||
@@ -6590,6 +6602,10 @@ neprojde, když jedna nebo obě z vybraných možností jsou rovny nebo nad prah
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>Vybrané zásady jsou provedeny při odeslání kroku k ověření dat.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
<target>Přesměrovat uživatele na jiný tok, potenciálně se všemi shromážděnými kontextovými informacemi</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
<target>Statický</target>
|
||||
@@ -11048,6 +11064,15 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.</tar
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -11060,140 +11085,11 @@ Vazby na skupiny/uživatele jsou kontrolovány vůči uživateli události.</tar
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -6281,6 +6281,18 @@ Beim Erstellen eines festen Auswahlfelds aktiviere „Als Ausdruck interpretiere
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>Authenticator-Anhang</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>Keine Präferenz wird gesendet</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>Ein nicht abnehmbarer Authentifikator, wie TouchID oder Windows Hello</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>Ein "Roaming"-Authentifikator, wie ein YubiKey</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
<target>Maximale Registrierungsversuche</target>
|
||||
@@ -6616,6 +6628,10 @@ Beim Erstellen eines festen Auswahlfelds aktiviere „Als Ausdruck interpretiere
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>Ausgewählte Richtlinien werden ausgeführt, wenn die Stage abgeschickt wird, um die Daten zu validieren.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
<target>Leitet den Benutzer zu einem anderen Flow weiter, ggf. mit dem gesamten gesammelten Kontext.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
<target>Statisch</target>
|
||||
@@ -11080,6 +11096,15 @@ Bindings zu Gruppen/Benutzern werden mit dem Benutzer des Ereignisses abgegliche
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -11092,140 +11117,11 @@ Bindings zu Gruppen/Benutzern werden mit dem Benutzer des Ereignisses abgegliche
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
158
web/xliff/en.xlf
158
web/xliff/en.xlf
@@ -4832,6 +4832,15 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<trans-unit id="s5fbaeb14f42815e5">
|
||||
<source>Authenticator Attachment</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
</trans-unit>
|
||||
@@ -5084,6 +5093,9 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<trans-unit id="s59691290a232c687">
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
</trans-unit>
|
||||
@@ -9065,6 +9077,15 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -9077,140 +9098,11 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -6219,6 +6219,18 @@ El valor de este campo se compara con el atributo de pertenencia del usuario.</t
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>Adjunto de Autenticador</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>No se envía ninguna preferencia</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>Un autenticador no extraíble, como TouchID o Windows Hello</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>Un autenticador "roaming", como una YubiKey</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
<target>Intentos máximos de registro</target>
|
||||
@@ -6552,6 +6564,10 @@ El valor de este campo se compara con el atributo de pertenencia del usuario.</t
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>Las políticas seleccionadas se ejecutan cuando se envía la etapa para validar los datos.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
<target>Redirigir al usuario a otro flujo, potencialmente con todo el contexto recopilado</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
<target>Estático</target>
|
||||
@@ -11005,6 +11021,15 @@ Las vinculaciones a grupos/usuarios se verifican en función del usuario del eve
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -11017,140 +11042,11 @@ Las vinculaciones a grupos/usuarios se verifican en función del usuario del eve
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -6396,6 +6396,18 @@ läpäisy estyy kun jompi kumpi tai molemmat vaihtoehdot ylittävät raja-arvon.
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>Todentajan kytkentä</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>Etusijaisuutta ei lähetetä</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>Sisäänrakennettu todentaja, joten TouchID tai Windows Hello.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>"Roaming"-tyyppinen todentaja, kuten YubiKey.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
<target>Rekisteröintiyritysten enimmäismäärä</target>
|
||||
@@ -6731,6 +6743,10 @@ läpäisy estyy kun jompi kumpi tai molemmat vaihtoehdot ylittävät raja-arvon.
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>Valitut käytännöt suoritetaan vaiheen lähettämisen yhteydessä tietojen validoimiseksi</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
<target>Ohjaa käyttäjä toiseen prosessiin, mahdollisesti kaiken kerätyn kontekstin kanssa.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
<target>Staattinen</target>
|
||||
@@ -11246,6 +11262,15 @@ Liitokset käyttäjiin/ryhmiin tarkistetaan tapahtuman käyttäjästä.</target>
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -11258,140 +11283,11 @@ Liitokset käyttäjiin/ryhmiin tarkistetaan tapahtuman käyttäjästä.</target>
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -6386,6 +6386,18 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>Lien à l'authentificateur</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>Aucune préférence n'est envoyée</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>Un authentificateur inamovible, comme TouchID ou Windows Hello</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>Un authentificateur "itinérant", comme une YubiKey</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
<target>Nombre maximal de tentatives d'inscription</target>
|
||||
@@ -6721,6 +6733,10 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>Les politiques sélectionnées sont exécutées lorsque l'étape est soumise pour valider les données.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
<target>Rediriger l'utilisateur vers un autre flux, éventuellement avec le contexte</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
<target>Statique</target>
|
||||
@@ -11235,6 +11251,15 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -11247,140 +11272,11 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -6176,6 +6176,18 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>Allegato Autenticatore</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>Nessuna preferenza viene inviata</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>Un autenticatore non rimovibile, come TouchID o Windows Hello</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>Un autenticatore "roaming", come un YubiKey</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
<target>Numero massimo di tentativi di registrazione</target>
|
||||
@@ -6508,6 +6520,10 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>Le politiche selezionate vengono eseguite quando la fase viene inviata per convalidare i dati.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
<target>Reindirizza l'utente a un altro flusso, potenzialmente con tutto il contesto raccolto</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
<target>Statico</target>
|
||||
@@ -10954,6 +10970,15 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -10966,140 +10991,11 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -6390,6 +6390,18 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>認証器の接続方法</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>希望は送信されません</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>TouchID や Windows Hello のような取り外せない認証器</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>YubiKey のようなローミング認証器</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
<target>登録試行の最大数</target>
|
||||
@@ -6728,6 +6740,10 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>選択されたポリシーは、ステージが送信されてデータを検証するときに実行されます。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
<target>ユーザーを別のフローにリダイレクトします。可能であれば、集められたすべてのコンテキストを含めます。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
<target>スタティック</target>
|
||||
@@ -11236,6 +11252,15 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -11248,140 +11273,11 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -5946,6 +5946,18 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>인증기 첨부</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>기본 설정이 전송되지 않음</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>TouchID 또는 Windows Hello와 같은 제거할 수 없는 인증기</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>YubiKey 같은 "로밍" 인증기</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
<target>최대 등록 시도</target>
|
||||
@@ -6258,6 +6270,9 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>데이터 유효성 검사를 위해 스테이지가 제출될 때 선택한 정책이 실행됩니다.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
<target>정적</target>
|
||||
@@ -10606,6 +10621,15 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -10618,140 +10642,11 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -5723,6 +5723,18 @@ slaagt niet wanneer een of beide geselecteerde opties gelijk zijn aan of boven d
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>Authenticatorbijlage</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>Geen voorkeur wordt verzonden</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>Een niet-verwijderbare authenticator, zoals TouchID of Windows Hello</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>Een "roaming" authenticator, zoals een YubiKey</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
</trans-unit>
|
||||
@@ -6021,6 +6033,9 @@ slaagt niet wanneer een of beide geselecteerde opties gelijk zijn aan of boven d
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>Geselecteerde beleidsregels worden uitgevoerd wanneer de fase wordt ingediend om de gegevens te valideren.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
</trans-unit>
|
||||
@@ -10291,6 +10306,15 @@ Bindingen naar groepen/gebruikers worden gecontroleerd tegen de gebruiker van de
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -10303,140 +10327,11 @@ Bindingen naar groepen/gebruikers worden gecontroleerd tegen de gebruiker van de
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -5962,6 +5962,18 @@ Można tu używać tylko zasad, ponieważ dostęp jest sprawdzany przed uwierzyt
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>Załącznik uwierzytelniający</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>Żadne preferencje nie są wysyłane</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>Nieusuwalny token uwierzytelniający, taki jak TouchID lub Windows Hello</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>„Mobilne” uwierzytelniacz, taki jak YubiKey</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
</trans-unit>
|
||||
@@ -6267,6 +6279,9 @@ Można tu używać tylko zasad, ponieważ dostęp jest sprawdzany przed uwierzyt
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>Wybrane zasady są wykonywane po przesłaniu etapu w celu weryfikacji danych.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
</trans-unit>
|
||||
@@ -10630,6 +10645,15 @@ Powiązania z grupami/użytkownikami są sprawdzane względem użytkownika zdarz
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -10642,140 +10666,11 @@ Powiązania z grupami/użytkownikami są sprawdzane względem użytkownika zdarz
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -6390,6 +6390,18 @@ retorne uma lista para fornecer várias opções padrão.</target>
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>Anexação do autenticador</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>Nenhuma preferência é enviada</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>Um autenticador não removível, como TouchID ou Windows Hello</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>Um autenticador "itinerante", como um YubiKey</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
<target>Máximo de tentativas de registro</target>
|
||||
@@ -6725,6 +6737,10 @@ retorne uma lista para fornecer várias opções padrão.</target>
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>As políticas selecionadas são executadas quando o estágio é enviado para validar os dados.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
<target>Redirecionar o usuário para outro fluxo, potencialmente com todo o contexto reunido</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
<target>Estático</target>
|
||||
@@ -11228,6 +11244,15 @@ por exemplo: <x id="0" equiv-text="<code>"/>oci://registry.domain.tld/path
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -11240,140 +11265,11 @@ por exemplo: <x id="0" equiv-text="<code>"/>oci://registry.domain.tld/path
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -6012,6 +6012,18 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>Вложения аутентификатора</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>Предпочтения не отправляются</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>Несъемный аутентификатор, например TouchID или Windows Hello</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>Переносной аутентификатор, например YubiKey</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
</trans-unit>
|
||||
@@ -6320,6 +6332,9 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>Выбранные политики выполняются при отправке этапа для проверки данных.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
</trans-unit>
|
||||
@@ -10716,6 +10731,15 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -10728,140 +10752,11 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -6010,6 +6010,18 @@ Belirlenen seçeneklerden biri veya her ikisi de eşiğe eşit veya eşiğin üz
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>Kimlik Doğrulayıcı Eki</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>Tercih gönderilmez</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>TouchID veya Windows Hello gibi çıkarılamayan bir kimlik doğrulayıcı</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>YubiKey gibi bir "dolaşımda" kimlik doğrulayıcı</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
</trans-unit>
|
||||
@@ -6320,6 +6332,9 @@ Belirlenen seçeneklerden biri veya her ikisi de eşiğe eşit veya eşiğin üz
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>Seçilen ilkeler, verileri doğrulamak için aşama gönderildiğinde yürütülür.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
</trans-unit>
|
||||
@@ -10706,6 +10721,15 @@ Gruplara/kullanıcılara yapılan bağlamalar, etkinliğin kullanıcısına kar
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -10718,140 +10742,11 @@ Gruplara/kullanıcılara yapılan bağlamalar, etkinliğin kullanıcısına kar
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -6459,6 +6459,18 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>身份验证器附件</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>不发送偏好</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>不可移除的身份验证器,例如 TouchID 或 Windows Hello</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>像 YubiKey 这样的“漫游”身份验证器</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
<target>最大注册尝试次数</target>
|
||||
@@ -6795,6 +6807,10 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>当阶段被提交以验证数据时,执行选定的策略。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
<target>将用户重定向到另一个流程,可能包含所有已收集的上下文</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
<target>静态</target>
|
||||
@@ -11504,6 +11520,15 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -11516,140 +11541,11 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -5772,6 +5772,18 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Authenticator Attachment</source>
|
||||
<target>身分認證器外接裝置</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s502d2473587032e1">
|
||||
<source>No preference is sent</source>
|
||||
<target>不傳送建議選項</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s60cc554fde2676cb">
|
||||
<source>A non-removable authenticator, like TouchID or Windows Hello</source>
|
||||
<target>不可移除的身分認證器,例如 TouchID 或 Windows Hello</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>外接式的身分認證器,例如 YubiKey</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sbd65aeeb8a3b9bbc">
|
||||
<source>Maximum registration attempts</source>
|
||||
</trans-unit>
|
||||
@@ -6074,6 +6086,9 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
<source>Selected policies are executed when the stage is submitted to validate the data.</source>
|
||||
<target>當階段提交時,將執行所選政策以驗證資料。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc487e11d5987dbb4">
|
||||
<source>Redirect the user to another flow, potentially with all gathered context</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sad9d5481474d4f5b">
|
||||
<source>Static</source>
|
||||
</trans-unit>
|
||||
@@ -10343,6 +10358,15 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="sdcd1a9744efdbd7e">
|
||||
<source>Choose Policy Type</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf4eb7c0c8e92e6b2">
|
||||
<source>Whether the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8ab0176c9cf77b1a">
|
||||
<source>Hide from User Dashboard</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0b5847edb7150911">
|
||||
<source>Whether this application will be shown on the User Dashboard.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saa5ed8446baaba70">
|
||||
<source>Negate Result</source>
|
||||
</trans-unit>
|
||||
@@ -10355,140 +10379,11 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="s41938ae69656ef53">
|
||||
<source>User Fields</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s02b73793e5b4e1ba">
|
||||
<source>This flag is deprecated.</source>
|
||||
<trans-unit id="s977b2dff8b9def14">
|
||||
<source>User Dashboard - Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8655c52824caac63">
|
||||
<source>If checked, the launch URL will open in a new browser tab or window from the user's application library.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9eda7101f63a8652">
|
||||
<source>Hide from My applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s30f30e9c42594a33">
|
||||
<source>If checked, this application will not be shown on the user's My applications page.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc98037ccab57d329">
|
||||
<source>No preference: the browser may offer any available authenticator</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s4611c85865abcba9">
|
||||
<source>Platform: a non-removable authenticator built into the device, such as Touch ID, Face ID, or Windows Hello</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0003d0e3fcdacabc">
|
||||
<source>Cross-platform: a roaming authenticator, such as a YubiKey or Google Titan</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc157c7dcb3d1b096">
|
||||
<source>Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1baea1b8ac34d554">
|
||||
<source>New Invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s03eef6107e28d042">
|
||||
<source>New Invitation options</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0832ff81b9665e6f">
|
||||
<source>Opens the new invitation wizard and binds the invitation to an existing enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc0819dc3d82d9320">
|
||||
<source>with Existing Enrollment Flow...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s79108cb25e7bf07b">
|
||||
<source>Opens the new invitation wizard, which will create a new enrollment flow and invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb7809157a3ccf613">
|
||||
<source>with New Enrollment Flow and Invitation Stage...</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="seb418067e7d6c6e2">
|
||||
<source>Create a new invitation with an enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfd74a380e957d0d3">
|
||||
<source>Enrollment Flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scc869d556216d748">
|
||||
<source>Invitation Details</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se1fba44a9b284052">
|
||||
<source>Invitation Link</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s967a2db7049dc90e">
|
||||
<source><x id="0" equiv-text="${step}"/> failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s971d4cc0ecd106b7">
|
||||
<source>Importing enrollment flow blueprint</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf3b89a70e20af6c8">
|
||||
<source>Blueprint validation failed</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa04b7204708f4f74">
|
||||
<source>Flow with slug "<x id="0" equiv-text="${slugToLookup}"/>" not found after import</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3354be88ad29d171">
|
||||
<source>Creating invitation</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s07f41353777196ea">
|
||||
<source>The flow selected in the previous step. The invitation will be bound to this flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7209a11f97da9aff">
|
||||
<source>No invitation available to send</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2772d8285b905006">
|
||||
<source>Failed to queue invitation emails</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s3b7910ab9c47a2e3">
|
||||
<source>No enrollment flows with invitation stages found</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sa3ca03297e00591c">
|
||||
<source>You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s06db43e56ca76be8">
|
||||
<source>Create a new enrollment flow</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8acc687c55e8ccbf">
|
||||
<source>Only enrollment flows that have an invitation stage bound to them are listed here.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s5b3bafd8ffe553ec">
|
||||
<source>Flow name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s699cd34b0dcb4c56">
|
||||
<source>Name for the new enrollment flow.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s8fb6d1bb698d32a0">
|
||||
<source>Flow slug</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s0211c07612cf8c97">
|
||||
<source>Invitation stage name</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s42b97ef63fb1a795">
|
||||
<source>Name for the new invitation stage.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="saaa9fd0d3ebc35aa">
|
||||
<source>Enrolled users are created as external (e.g. customers, guests). New users will be placed under users/external.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s726dff63487da085">
|
||||
<source>Enrolled users are created as internal (e.g. employees). New users will be placed under users/internal.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sc1358130ac327120">
|
||||
<source>If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s09fdd952c6eaf7da">
|
||||
<source>No invitation was created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s00febd85a4889bb1">
|
||||
<source>Redirect the user to a static URL or another flow, optionally with all gathered context.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdbc1d47f0f0ed54d">
|
||||
<source>The element could not be loaded. This may be due to a missing import or a version mismatch.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scf8a3d48f9969535">
|
||||
<source>An element could not be loaded. Please try refreshing the page or clearing your cache.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="se2f00b2619675217">
|
||||
<source>Failed to load element</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1cf2298d92c327a6">
|
||||
<source>My Applications</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2656433a3b1f7e86">
|
||||
<source>My applications</source>
|
||||
<trans-unit id="s190cbdd5b62e4746">
|
||||
<source>User Dashboard</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
@@ -51,12 +51,12 @@
|
||||
"@rspack/binding-darwin-arm64": "1.7.11",
|
||||
"@rspack/binding-linux-arm64-gnu": "1.7.11",
|
||||
"@rspack/binding-linux-x64-gnu": "1.7.11",
|
||||
"@swc/core-darwin-arm64": "1.15.33",
|
||||
"@swc/core-linux-arm64-gnu": "1.15.33",
|
||||
"@swc/core-linux-x64-gnu": "1.15.33",
|
||||
"@swc/html-darwin-arm64": "1.15.33",
|
||||
"@swc/html-linux-arm64-gnu": "1.15.33",
|
||||
"@swc/html-linux-x64-gnu": "1.15.33",
|
||||
"@swc/core-darwin-arm64": "1.15.32",
|
||||
"@swc/core-linux-arm64-gnu": "1.15.32",
|
||||
"@swc/core-linux-x64-gnu": "1.15.32",
|
||||
"@swc/html-darwin-arm64": "1.15.32",
|
||||
"@swc/html-linux-arm64-gnu": "1.15.32",
|
||||
"@swc/html-linux-x64-gnu": "1.15.32",
|
||||
"lightningcss-darwin-arm64": "1.32.0",
|
||||
"lightningcss-linux-arm64-gnu": "1.32.0",
|
||||
"lightningcss-linux-x64-gnu": "1.32.0"
|
||||
|
||||
@@ -8,13 +8,66 @@ Invitations are another way to create a user, by inviting someone to join your a
|
||||
|
||||
You can configure invitations either by:
|
||||
|
||||
- using [pre-built blueprints](#use-pre-built-blueprints-to-configure-invitations) (recommended for quick setup).
|
||||
- using the [invitation wizard](#use-the-invitation-wizard) (recommended; creates the enrollment flow and the invitation in one guided process).
|
||||
- using [pre-built blueprints](#use-pre-built-blueprints-to-configure-invitations) (good for showcasing multiple flow variations).
|
||||
- [manually creating flows and stages](#manual-setup-without-blueprints) (for custom configurations).
|
||||
|
||||
:::info
|
||||
You can also create a [policy](../../../customize/policies/) to see if the invitation was ever used.
|
||||
:::
|
||||
|
||||
## Use the invitation wizard
|
||||
|
||||
The invitation wizard, available from the **Directory** > **Invitations** page in the Admin interface, walks you through creating an invitation and (optionally) the enrollment flow it binds to in a single guided process.
|
||||
|
||||
### Step 1. Open the wizard
|
||||
|
||||
1. Log in to authentik as an administrator and open the authentik Admin interface.
|
||||
2. Navigate to **Directory** > **Invitations**.
|
||||
3. Click the caret (>) next to the **New Invitation** button and choose how the wizard should handle the invitation:
|
||||
- **with Existing Enrollment Flow...**: bind the new invitation to an enrollment flow you already have. Only enrollment flows that have an invitation stage bound to them are listed. This is also what the **New Invitation** button does by default.
|
||||
- **with New Enrollment Flow and Invitation Stage...**: create a new minimal enrollment flow, including an invitation stage, then bind the invitation to it. Use this option when you don't yet have an enrollment flow set up, or when you want a separate enrollment flow for an invitation.
|
||||
|
||||
:::info Automatic flow selection
|
||||
If you choose **with Existing Enrollment Flow...** and only one eligible flow exists, the wizard skips the flow selection step and takes you straight to the invitation details.
|
||||
:::
|
||||
|
||||
### Step 2. Configure the enrollment flow
|
||||
|
||||
- If you picked an existing flow, select it from the **Enrollment flow** drop-down and click **Next**.
|
||||
- If you are creating a new flow, fill in:
|
||||
- **Flow name**: display name of the new enrollment flow.
|
||||
- **Flow slug**: the slug for the flow which is included in the URL.
|
||||
- **Invitation stage name**: name of the invitation stage that will be bound to the new flow.
|
||||
- **User type**: the user type for users enrolled via this flow.
|
||||
- **Continue flow without invitation**: when enabled, the flow proceeds to the next stage even when no invitation token is supplied. When disabled, the flow is cancelled if a valid invitation is not provided.
|
||||
|
||||
### Step 3. Configure the invitation details
|
||||
|
||||
- **Name**: provide a slug-style name for your invitation object (lowercase letters, numbers, and hyphens only).
|
||||
- **Expires**: select a date and time for when the invitation should expire. Defaults to 48 hours from now.
|
||||
- **Flow**: read-only; reflects the flow chosen in the previous step.
|
||||
- **Custom attributes**: (_optional_) YAML or JSON loaded into the flow's `prompt_data` context to pre-fill user information. Field keys must match the keys configured in the flow's [prompt stage](../../add-secure-apps/flows-stages/stages/prompt/index.md). See the [example custom attributes](#step-3-create-the-invitation-object) further down for sample payloads.
|
||||
- **Single use**: when enabled, the invitation is deleted after the first successful enrollment.
|
||||
|
||||
Click **Next** to create the invitation. If you chose **with New Enrollment Flow and Invitation Stage...**, the supporting blueprint is imported at this point as well.
|
||||
|
||||
### Step 4. Share the invitation
|
||||
|
||||
After the invitation is created, the wizard's final step shows the **Link to use the invitation**. From there you can:
|
||||
|
||||
- Click **Copy Link** to copy the invitation URL to your clipboard.
|
||||
- Click **Send via Email** to open the email step inside the wizard. Enter:
|
||||
- **To**: one email per line, or comma/semicolon separated. Each recipient receives a separate email.
|
||||
- **CC** / **BCC**: (_optional_) recipients for carbon and blind carbon copies.
|
||||
- **Template**: the email template to use (the default `Invitation` template is recommended).
|
||||
|
||||
Click **Send** to queue the emails. They are sent asynchronously by the background worker. Check **System Tasks** for delivery status.
|
||||
|
||||
:::note Email configuration required
|
||||
To send invitation emails, you must have email configured in authentik. Refer to the [Email configuration](../../install-config/email.mdx) documentation for details.
|
||||
:::
|
||||
|
||||
## Use pre-built blueprints to configure invitations
|
||||
|
||||
The fastest way to configure invitations in authentik is to use our pre-defined blueprints that have the necessary flows, stages, and prompts already included.
|
||||
|
||||
60
website/package-lock.json
generated
60
website/package-lock.json
generated
@@ -41,12 +41,12 @@
|
||||
"@rspack/binding-darwin-arm64": "1.7.11",
|
||||
"@rspack/binding-linux-arm64-gnu": "1.7.11",
|
||||
"@rspack/binding-linux-x64-gnu": "1.7.11",
|
||||
"@swc/core-darwin-arm64": "1.15.33",
|
||||
"@swc/core-linux-arm64-gnu": "1.15.33",
|
||||
"@swc/core-linux-x64-gnu": "1.15.33",
|
||||
"@swc/html-darwin-arm64": "1.15.33",
|
||||
"@swc/html-linux-arm64-gnu": "1.15.33",
|
||||
"@swc/html-linux-x64-gnu": "1.15.33",
|
||||
"@swc/core-darwin-arm64": "1.15.32",
|
||||
"@swc/core-linux-arm64-gnu": "1.15.32",
|
||||
"@swc/core-linux-x64-gnu": "1.15.32",
|
||||
"@swc/html-darwin-arm64": "1.15.32",
|
||||
"@swc/html-linux-arm64-gnu": "1.15.32",
|
||||
"@swc/html-linux-x64-gnu": "1.15.32",
|
||||
"lightningcss-darwin-arm64": "1.32.0",
|
||||
"lightningcss-linux-arm64-gnu": "1.32.0",
|
||||
"lightningcss-linux-x64-gnu": "1.32.0"
|
||||
@@ -163,12 +163,12 @@
|
||||
"@rspack/binding-darwin-arm64": "1.7.11",
|
||||
"@rspack/binding-linux-arm64-gnu": "1.7.11",
|
||||
"@rspack/binding-linux-x64-gnu": "1.7.11",
|
||||
"@swc/core-darwin-arm64": "1.15.33",
|
||||
"@swc/core-linux-arm64-gnu": "1.15.33",
|
||||
"@swc/core-linux-x64-gnu": "1.15.33",
|
||||
"@swc/html-darwin-arm64": "1.15.33",
|
||||
"@swc/html-linux-arm64-gnu": "1.15.33",
|
||||
"@swc/html-linux-x64-gnu": "1.15.33",
|
||||
"@swc/core-darwin-arm64": "1.15.32",
|
||||
"@swc/core-linux-arm64-gnu": "1.15.32",
|
||||
"@swc/core-linux-x64-gnu": "1.15.32",
|
||||
"@swc/html-darwin-arm64": "1.15.32",
|
||||
"@swc/html-linux-arm64-gnu": "1.15.32",
|
||||
"@swc/html-linux-x64-gnu": "1.15.32",
|
||||
"lightningcss-darwin-arm64": "1.32.0",
|
||||
"lightningcss-linux-arm64-gnu": "1.32.0",
|
||||
"lightningcss-linux-x64-gnu": "1.32.0"
|
||||
@@ -6849,9 +6849,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-darwin-arm64": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.33.tgz",
|
||||
"integrity": "sha512-N+L0uXhuO7FIfzqwgxmzv0zIpV0qEp8wPX3QQs2p4atjMoywup2JTeDlXPw+z9pWJGCae3JjM+tZ6myclI+2gA==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.32.tgz",
|
||||
"integrity": "sha512-/YWMvJDPu+AAwuUsM2G+DNQ/7zhodURGzdQyewEqcvgklAdDHs3LwQmLLnyn6SJl8DT8UOxkbzK+D1PmPeelRg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -6897,9 +6897,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm64-gnu": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.33.tgz",
|
||||
"integrity": "sha512-TRJfnJbX3jqpxRDRoieMzRiCBS5jOmXNb3iQXmcgjFEHKLnAgK1RZRU8Cq1MsPqO4jAJp/ld1G4O3fXuxv85uw==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.32.tgz",
|
||||
"integrity": "sha512-oDzEkdl6D6BAWdMtU5KGO7y3HR5fJcvByNLyEk9+ugj8nP5Ovb7P4kBcStBXc4MPExFGQryehiINMlmY8HlclA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -6964,9 +6964,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-x64-gnu": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.33.tgz",
|
||||
"integrity": "sha512-mGTH0YxmUN+x6vRN/I6NOk5X0ogNktkwPnJ94IMvR7QjhRDwL0O8RXEDhyUM0YtwWrryBOqaJQBX4zruxEPRGw==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.32.tgz",
|
||||
"integrity": "sha512-ERsjfGcj6CBmj3vJnGDO8m8rTvw6RqMcWo1dogOtNx3/+/0+NNpJiXDobJrr1GwInI/BHAEkvSFIH6d2LqPcUQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -7127,9 +7127,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/html-darwin-arm64": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.15.33.tgz",
|
||||
"integrity": "sha512-zyO6uMBfLyCh55wundAxKX+8P/f98ecuyir4VX6nTmn6y7x37ndB8f01LUrd9Tiq6eEAvDXLiqEUvuGjEc7Pmg==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.15.32.tgz",
|
||||
"integrity": "sha512-WgY386nwyz24cTJ+Nztd4cKvfPJexLYAzurSYDmuYxS3HihWoTFZWMDomTfM8yr2UCi8SwW+zTNAWxJxUaKESg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -7175,9 +7175,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/html-linux-arm64-gnu": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.15.33.tgz",
|
||||
"integrity": "sha512-7tZ0IgmUslI9Extu/TpxJS0GjJoDx0j9zeq2cIidPdM/njSBpyRB7n4B292Q5WFVh7PcZl7WXqqqMczibQ27aA==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.15.32.tgz",
|
||||
"integrity": "sha512-gvlByySjNDWX2FUIGVBWOhd00rySz0AOydQpuXCK0ldYbFVMby9oXbp2JVmE5UsB6J4YZqZh4ajmmqCGvFHi4Q==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -7242,9 +7242,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/html-linux-x64-gnu": {
|
||||
"version": "1.15.33",
|
||||
"resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.15.33.tgz",
|
||||
"integrity": "sha512-JDNb4Uq+7g+23QuOtwWnP0/EqztWIHFFdQdeBIS5zx83YBG2dYRMdPAjnHJWh2YRZxdepd8q6S9MUIxpSrouAg==",
|
||||
"version": "1.15.32",
|
||||
"resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.15.32.tgz",
|
||||
"integrity": "sha512-IveuScZfAwDZEBs6pTvdG/MwGyMPuxp74l9ngp2PbUboVBIfUS894kATBaBuSBYXajZ4v4wqv01PGM81rUhGQg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
||||
@@ -39,12 +39,12 @@
|
||||
"@rspack/binding-darwin-arm64": "1.7.11",
|
||||
"@rspack/binding-linux-arm64-gnu": "1.7.11",
|
||||
"@rspack/binding-linux-x64-gnu": "1.7.11",
|
||||
"@swc/core-darwin-arm64": "1.15.33",
|
||||
"@swc/core-linux-arm64-gnu": "1.15.33",
|
||||
"@swc/core-linux-x64-gnu": "1.15.33",
|
||||
"@swc/html-darwin-arm64": "1.15.33",
|
||||
"@swc/html-linux-arm64-gnu": "1.15.33",
|
||||
"@swc/html-linux-x64-gnu": "1.15.33",
|
||||
"@swc/core-darwin-arm64": "1.15.32",
|
||||
"@swc/core-linux-arm64-gnu": "1.15.32",
|
||||
"@swc/core-linux-x64-gnu": "1.15.32",
|
||||
"@swc/html-darwin-arm64": "1.15.32",
|
||||
"@swc/html-linux-arm64-gnu": "1.15.32",
|
||||
"@swc/html-linux-x64-gnu": "1.15.32",
|
||||
"lightningcss-darwin-arm64": "1.32.0",
|
||||
"lightningcss-linux-arm64-gnu": "1.32.0",
|
||||
"lightningcss-linux-x64-gnu": "1.32.0"
|
||||
|
||||
Reference in New Issue
Block a user