web/flows: improve WebAuthn error messages (#6957)
* web/flows: improve WebAuthn error messages Signed-off-by: Jens Langhammer <jens@goauthentik.io> * include localhost Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
parent
07ca318535
commit
80e86c52e7
2
Makefile
2
Makefile
|
@ -129,7 +129,7 @@ gen: gen-build gen-clean gen-client-ts
|
||||||
web-build: web-install
|
web-build: web-install
|
||||||
cd web && npm run build
|
cd web && npm run build
|
||||||
|
|
||||||
web: web-lint-fix web-lint web-check-compile
|
web: web-lint-fix web-lint web-check-compile web-i18n-extract
|
||||||
|
|
||||||
web-install:
|
web-install:
|
||||||
cd web && npm ci
|
cd web && npm ci
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import * as base64js from "base64-js";
|
import * as base64js from "base64-js";
|
||||||
|
|
||||||
|
import { msg } from "@lit/localize";
|
||||||
|
|
||||||
export function b64enc(buf: Uint8Array): string {
|
export function b64enc(buf: Uint8Array): string {
|
||||||
return base64js.fromByteArray(buf).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
|
return base64js.fromByteArray(buf).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
|
||||||
}
|
}
|
||||||
|
@ -14,6 +16,16 @@ export function u8arr(input: string): Uint8Array {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function checkWebAuthnSupport() {
|
||||||
|
if ("credentials" in navigator) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (window.location.protocol === "http:" && window.location.hostname !== "localhost") {
|
||||||
|
throw new Error(msg("WebAuthn requires this page to be accessed via HTTPS."));
|
||||||
|
}
|
||||||
|
throw new Error(msg("WebAuthn not supported by browser."));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transforms items in the credentialCreateOptions generated on the server
|
* Transforms items in the credentialCreateOptions generated on the server
|
||||||
* into byte arrays expected by the navigator.credentials.create() call
|
* into byte arrays expected by the navigator.credentials.create() call
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import {
|
import {
|
||||||
|
checkWebAuthnSupport,
|
||||||
transformAssertionForServer,
|
transformAssertionForServer,
|
||||||
transformCredentialRequestOptions,
|
transformCredentialRequestOptions,
|
||||||
} from "@goauthentik/common/helpers/webauthn";
|
} from "@goauthentik/common/helpers/webauthn";
|
||||||
|
@ -57,6 +58,7 @@ export class AuthenticatorValidateStageWebAuthn extends BaseStage<
|
||||||
// request the authenticator to create an assertion signature using the
|
// request the authenticator to create an assertion signature using the
|
||||||
// credential private key
|
// credential private key
|
||||||
let assertion;
|
let assertion;
|
||||||
|
checkWebAuthnSupport();
|
||||||
try {
|
try {
|
||||||
assertion = await navigator.credentials.get({
|
assertion = await navigator.credentials.get({
|
||||||
publicKey: this.transformedCredentialRequestOptions,
|
publicKey: this.transformedCredentialRequestOptions,
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import {
|
import {
|
||||||
Assertion,
|
Assertion,
|
||||||
|
checkWebAuthnSupport,
|
||||||
transformCredentialCreateOptions,
|
transformCredentialCreateOptions,
|
||||||
transformNewAssertionForServer,
|
transformNewAssertionForServer,
|
||||||
} from "@goauthentik/common/helpers/webauthn";
|
} from "@goauthentik/common/helpers/webauthn";
|
||||||
|
@ -47,6 +48,7 @@ export class WebAuthnAuthenticatorRegisterStage extends BaseStage<
|
||||||
if (!this.challenge) {
|
if (!this.challenge) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
checkWebAuthnSupport();
|
||||||
// request the authenticator(s) to create a new credential keypair.
|
// request the authenticator(s) to create a new credential keypair.
|
||||||
let credential;
|
let credential;
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -5904,6 +5904,27 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sfb852dd507c25c24">
|
<trans-unit id="sfb852dd507c25c24">
|
||||||
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s028d385389b5aac0">
|
||||||
|
<source>Lock the user out of this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd2122c514f0778b5">
|
||||||
|
<source>Allow the user to log in and use this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s43fe853bf219a9b8">
|
||||||
|
<source>Temporarily assume the identity of this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se28b5f3fcadaeeb1">
|
||||||
|
<source>Enter a new password for this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s6f5bb31e2733ecd5">
|
||||||
|
<source>Create a link for this user to reset their password</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67ac11d47f1ce794">
|
||||||
|
<source>WebAuthn requires this page to be accessed via HTTPS.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se9e9e1d6799b86a5">
|
||||||
|
<source>WebAuthn not supported by browser.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
|
@ -6218,6 +6218,27 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sfb852dd507c25c24">
|
<trans-unit id="sfb852dd507c25c24">
|
||||||
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s028d385389b5aac0">
|
||||||
|
<source>Lock the user out of this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd2122c514f0778b5">
|
||||||
|
<source>Allow the user to log in and use this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s43fe853bf219a9b8">
|
||||||
|
<source>Temporarily assume the identity of this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se28b5f3fcadaeeb1">
|
||||||
|
<source>Enter a new password for this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s6f5bb31e2733ecd5">
|
||||||
|
<source>Create a link for this user to reset their password</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67ac11d47f1ce794">
|
||||||
|
<source>WebAuthn requires this page to be accessed via HTTPS.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se9e9e1d6799b86a5">
|
||||||
|
<source>WebAuthn not supported by browser.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
|
@ -5812,6 +5812,27 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sfb852dd507c25c24">
|
<trans-unit id="sfb852dd507c25c24">
|
||||||
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s028d385389b5aac0">
|
||||||
|
<source>Lock the user out of this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd2122c514f0778b5">
|
||||||
|
<source>Allow the user to log in and use this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s43fe853bf219a9b8">
|
||||||
|
<source>Temporarily assume the identity of this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se28b5f3fcadaeeb1">
|
||||||
|
<source>Enter a new password for this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s6f5bb31e2733ecd5">
|
||||||
|
<source>Create a link for this user to reset their password</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67ac11d47f1ce794">
|
||||||
|
<source>WebAuthn requires this page to be accessed via HTTPS.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se9e9e1d6799b86a5">
|
||||||
|
<source>WebAuthn not supported by browser.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
|
@ -5920,6 +5920,27 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sfb852dd507c25c24">
|
<trans-unit id="sfb852dd507c25c24">
|
||||||
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s028d385389b5aac0">
|
||||||
|
<source>Lock the user out of this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd2122c514f0778b5">
|
||||||
|
<source>Allow the user to log in and use this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s43fe853bf219a9b8">
|
||||||
|
<source>Temporarily assume the identity of this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se28b5f3fcadaeeb1">
|
||||||
|
<source>Enter a new password for this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s6f5bb31e2733ecd5">
|
||||||
|
<source>Create a link for this user to reset their password</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67ac11d47f1ce794">
|
||||||
|
<source>WebAuthn requires this page to be accessed via HTTPS.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se9e9e1d6799b86a5">
|
||||||
|
<source>WebAuthn not supported by browser.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
|
@ -6051,6 +6051,27 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sfb852dd507c25c24">
|
<trans-unit id="sfb852dd507c25c24">
|
||||||
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s028d385389b5aac0">
|
||||||
|
<source>Lock the user out of this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd2122c514f0778b5">
|
||||||
|
<source>Allow the user to log in and use this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s43fe853bf219a9b8">
|
||||||
|
<source>Temporarily assume the identity of this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se28b5f3fcadaeeb1">
|
||||||
|
<source>Enter a new password for this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s6f5bb31e2733ecd5">
|
||||||
|
<source>Create a link for this user to reset their password</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67ac11d47f1ce794">
|
||||||
|
<source>WebAuthn requires this page to be accessed via HTTPS.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se9e9e1d6799b86a5">
|
||||||
|
<source>WebAuthn not supported by browser.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
|
@ -6153,6 +6153,27 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sfb852dd507c25c24">
|
<trans-unit id="sfb852dd507c25c24">
|
||||||
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s028d385389b5aac0">
|
||||||
|
<source>Lock the user out of this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd2122c514f0778b5">
|
||||||
|
<source>Allow the user to log in and use this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s43fe853bf219a9b8">
|
||||||
|
<source>Temporarily assume the identity of this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se28b5f3fcadaeeb1">
|
||||||
|
<source>Enter a new password for this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s6f5bb31e2733ecd5">
|
||||||
|
<source>Create a link for this user to reset their password</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67ac11d47f1ce794">
|
||||||
|
<source>WebAuthn requires this page to be accessed via HTTPS.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se9e9e1d6799b86a5">
|
||||||
|
<source>WebAuthn not supported by browser.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
|
@ -5805,6 +5805,27 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sfb852dd507c25c24">
|
<trans-unit id="sfb852dd507c25c24">
|
||||||
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s028d385389b5aac0">
|
||||||
|
<source>Lock the user out of this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd2122c514f0778b5">
|
||||||
|
<source>Allow the user to log in and use this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s43fe853bf219a9b8">
|
||||||
|
<source>Temporarily assume the identity of this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se28b5f3fcadaeeb1">
|
||||||
|
<source>Enter a new password for this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s6f5bb31e2733ecd5">
|
||||||
|
<source>Create a link for this user to reset their password</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67ac11d47f1ce794">
|
||||||
|
<source>WebAuthn requires this page to be accessed via HTTPS.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se9e9e1d6799b86a5">
|
||||||
|
<source>WebAuthn not supported by browser.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" ?><xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
<?xml version="1.0"?><xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||||
<file target-language="zh-Hans" source-language="en" original="lit-localize-inputs" datatype="plaintext">
|
<file target-language="zh-Hans" source-language="en" original="lit-localize-inputs" datatype="plaintext">
|
||||||
<body>
|
<body>
|
||||||
<trans-unit id="s4caed5b7a7e5d89b">
|
<trans-unit id="s4caed5b7a7e5d89b">
|
||||||
|
@ -613,9 +613,9 @@
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="saa0e2675da69651b">
|
<trans-unit id="saa0e2675da69651b">
|
||||||
<source>The URL "<x id="0" equiv-text="${this.url}"/>" was not found.</source>
|
<source>The URL "<x id="0" equiv-text="${this.url}"/>" was not found.</source>
|
||||||
<target>未找到 URL "
|
<target>未找到 URL "
|
||||||
<x id="0" equiv-text="${this.url}"/>"。</target>
|
<x id="0" equiv-text="${this.url}"/>"。</target>
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s58cd9c2fe836d9c6">
|
<trans-unit id="s58cd9c2fe836d9c6">
|
||||||
|
@ -1067,8 +1067,8 @@
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sa8384c9c26731f83">
|
<trans-unit id="sa8384c9c26731f83">
|
||||||
<source>To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have.</source>
|
<source>To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have.</source>
|
||||||
<target>要允许任何重定向 URI,请将此值设置为 ".*"。请注意这可能带来的安全影响。</target>
|
<target>要允许任何重定向 URI,请将此值设置为 ".*"。请注意这可能带来的安全影响。</target>
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s55787f4dfcdce52b">
|
<trans-unit id="s55787f4dfcdce52b">
|
||||||
|
@ -1814,8 +1814,8 @@
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sa90b7809586c35ce">
|
<trans-unit id="sa90b7809586c35ce">
|
||||||
<source>Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test".</source>
|
<source>Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test".</source>
|
||||||
<target>输入完整 URL、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 "fa-test"。</target>
|
<target>输入完整 URL、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 "fa-test"。</target>
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s0410779cb47de312">
|
<trans-unit id="s0410779cb47de312">
|
||||||
|
@ -3238,8 +3238,8 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s76768bebabb7d543">
|
<trans-unit id="s76768bebabb7d543">
|
||||||
<source>Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...'</source>
|
<source>Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...'</source>
|
||||||
<target>包含组成员的字段。请注意,如果使用 "memberUid" 字段,则假定该值包含相对可分辨名称。例如,'memberUid=some-user' 而不是 'memberUid=cn=some-user,ou=groups,...'</target>
|
<target>包含组成员的字段。请注意,如果使用 "memberUid" 字段,则假定该值包含相对可分辨名称。例如,'memberUid=some-user' 而不是 'memberUid=cn=some-user,ou=groups,...'</target>
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s026555347e589f0e">
|
<trans-unit id="s026555347e589f0e">
|
||||||
|
@ -4031,8 +4031,8 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s7b1fba26d245cb1c">
|
<trans-unit id="s7b1fba26d245cb1c">
|
||||||
<source>When using an external logging solution for archiving, this can be set to "minutes=5".</source>
|
<source>When using an external logging solution for archiving, this can be set to "minutes=5".</source>
|
||||||
<target>使用外部日志记录解决方案进行存档时,可以将其设置为 "minutes=5"。</target>
|
<target>使用外部日志记录解决方案进行存档时,可以将其设置为 "minutes=5"。</target>
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s44536d20bb5c8257">
|
<trans-unit id="s44536d20bb5c8257">
|
||||||
|
@ -4041,8 +4041,8 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s3bb51cabb02b997e">
|
<trans-unit id="s3bb51cabb02b997e">
|
||||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
||||||
<target>格式:"weeks=3;days=2;hours=3,seconds=2"。</target>
|
<target>格式:"weeks=3;days=2;hours=3,seconds=2"。</target>
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s04bfd02201db5ab8">
|
<trans-unit id="s04bfd02201db5ab8">
|
||||||
|
@ -4238,10 +4238,10 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sa95a538bfbb86111">
|
<trans-unit id="sa95a538bfbb86111">
|
||||||
<source>Are you sure you want to update <x id="0" equiv-text="${this.objectLabel}"/> "<x id="1" equiv-text="${this.obj?.name}"/>"?</source>
|
<source>Are you sure you want to update <x id="0" equiv-text="${this.objectLabel}"/> "<x id="1" equiv-text="${this.obj?.name}"/>"?</source>
|
||||||
<target>您确定要更新
|
<target>您确定要更新
|
||||||
<x id="0" equiv-text="${this.objectLabel}"/>"
|
<x id="0" equiv-text="${this.objectLabel}"/>"
|
||||||
<x id="1" equiv-text="${this.obj?.name}"/>" 吗?</target>
|
<x id="1" equiv-text="${this.obj?.name}"/>" 吗?</target>
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sc92d7cfb6ee1fec6">
|
<trans-unit id="sc92d7cfb6ee1fec6">
|
||||||
|
@ -5342,7 +5342,7 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sdf1d8edef27236f0">
|
<trans-unit id="sdf1d8edef27236f0">
|
||||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||||
<target>像 YubiKey 这样的“漫游”身份验证器</target>
|
<target>像 YubiKey 这样的“漫游”身份验证器</target>
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
@ -5677,10 +5677,10 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s2d5f69929bb7221d">
|
<trans-unit id="s2d5f69929bb7221d">
|
||||||
<source><x id="0" equiv-text="${prompt.name}"/> ("<x id="1" equiv-text="${prompt.fieldKey}"/>", of type <x id="2" equiv-text="${prompt.type}"/>)</source>
|
<source><x id="0" equiv-text="${prompt.name}"/> ("<x id="1" equiv-text="${prompt.fieldKey}"/>", of type <x id="2" equiv-text="${prompt.type}"/>)</source>
|
||||||
<target>
|
<target>
|
||||||
<x id="0" equiv-text="${prompt.name}"/>("
|
<x id="0" equiv-text="${prompt.name}"/>("
|
||||||
<x id="1" equiv-text="${prompt.fieldKey}"/>",类型为
|
<x id="1" equiv-text="${prompt.fieldKey}"/>",类型为
|
||||||
<x id="2" equiv-text="${prompt.type}"/>)</target>
|
<x id="2" equiv-text="${prompt.type}"/>)</target>
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
@ -5729,7 +5729,7 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s1608b2f94fa0dbd4">
|
<trans-unit id="s1608b2f94fa0dbd4">
|
||||||
<source>If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here.</source>
|
<source>If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here.</source>
|
||||||
<target>如果设置时长大于 0,用户可以选择“保持登录”选项,这将使用户的会话延长此处设置的时间。</target>
|
<target>如果设置时长大于 0,用户可以选择“保持登录”选项,这将使用户的会话延长此处设置的时间。</target>
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
@ -7790,6 +7790,27 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
<trans-unit id="sfb852dd507c25c24">
|
<trans-unit id="sfb852dd507c25c24">
|
||||||
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
||||||
<target>避免:身份验证器不应该创建专用凭据</target>
|
<target>避免:身份验证器不应该创建专用凭据</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s028d385389b5aac0">
|
||||||
|
<source>Lock the user out of this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd2122c514f0778b5">
|
||||||
|
<source>Allow the user to log in and use this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s43fe853bf219a9b8">
|
||||||
|
<source>Temporarily assume the identity of this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se28b5f3fcadaeeb1">
|
||||||
|
<source>Enter a new password for this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s6f5bb31e2733ecd5">
|
||||||
|
<source>Create a link for this user to reset their password</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67ac11d47f1ce794">
|
||||||
|
<source>WebAuthn requires this page to be accessed via HTTPS.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se9e9e1d6799b86a5">
|
||||||
|
<source>WebAuthn not supported by browser.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
|
@ -5857,6 +5857,27 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sfb852dd507c25c24">
|
<trans-unit id="sfb852dd507c25c24">
|
||||||
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s028d385389b5aac0">
|
||||||
|
<source>Lock the user out of this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd2122c514f0778b5">
|
||||||
|
<source>Allow the user to log in and use this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s43fe853bf219a9b8">
|
||||||
|
<source>Temporarily assume the identity of this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se28b5f3fcadaeeb1">
|
||||||
|
<source>Enter a new password for this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s6f5bb31e2733ecd5">
|
||||||
|
<source>Create a link for this user to reset their password</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67ac11d47f1ce794">
|
||||||
|
<source>WebAuthn requires this page to be accessed via HTTPS.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se9e9e1d6799b86a5">
|
||||||
|
<source>WebAuthn not supported by browser.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
|
@ -5856,6 +5856,27 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sfb852dd507c25c24">
|
<trans-unit id="sfb852dd507c25c24">
|
||||||
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
<source>Discouraged: The authenticator should not create a dedicated credential</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s028d385389b5aac0">
|
||||||
|
<source>Lock the user out of this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd2122c514f0778b5">
|
||||||
|
<source>Allow the user to log in and use this system</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s43fe853bf219a9b8">
|
||||||
|
<source>Temporarily assume the identity of this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se28b5f3fcadaeeb1">
|
||||||
|
<source>Enter a new password for this user</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s6f5bb31e2733ecd5">
|
||||||
|
<source>Create a link for this user to reset their password</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s67ac11d47f1ce794">
|
||||||
|
<source>WebAuthn requires this page to be accessed via HTTPS.</source>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="se9e9e1d6799b86a5">
|
||||||
|
<source>WebAuthn not supported by browser.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
Reference in New Issue