web/admin: fix admins not able to delete MFA devices (#7660)
Signed-off-by: Jens Langhammer <jens@goauthentik.io> # Conflicts: # web/xliff/zh-Hans.xlf
This commit is contained in:
parent
7c3d60ec3a
commit
1eb1f4e0b8
|
@ -15,6 +15,8 @@ export class UserDeviceTable extends Table<Device> {
|
||||||
@property({ type: Number })
|
@property({ type: Number })
|
||||||
userId?: number;
|
userId?: number;
|
||||||
|
|
||||||
|
checkbox = true;
|
||||||
|
|
||||||
async apiEndpoint(): Promise<PaginatedResponse<Device>> {
|
async apiEndpoint(): Promise<PaginatedResponse<Device>> {
|
||||||
return new AuthenticatorsApi(DEFAULT_CONFIG)
|
return new AuthenticatorsApi(DEFAULT_CONFIG)
|
||||||
.authenticatorsAdminAllList({
|
.authenticatorsAdminAllList({
|
||||||
|
@ -64,6 +66,21 @@ export class UserDeviceTable extends Table<Device> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderToolbarSelected(): TemplateResult {
|
||||||
|
const disabled = this.selectedElements.length < 1;
|
||||||
|
return html`<ak-forms-delete-bulk
|
||||||
|
objectLabel=${msg("Device(s)")}
|
||||||
|
.objects=${this.selectedElements}
|
||||||
|
.delete=${(item: Device) => {
|
||||||
|
return this.deleteWrapper(item);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger">
|
||||||
|
${msg("Delete")}
|
||||||
|
</button>
|
||||||
|
</ak-forms-delete-bulk>`;
|
||||||
|
}
|
||||||
|
|
||||||
renderToolbar(): TemplateResult {
|
renderToolbar(): TemplateResult {
|
||||||
return html` <ak-spinner-button
|
return html` <ak-spinner-button
|
||||||
.callAction=${() => {
|
.callAction=${() => {
|
||||||
|
|
|
@ -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">
|
||||||
|
@ -1057,8 +1057,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">
|
||||||
|
@ -1799,8 +1799,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">
|
||||||
|
@ -2562,31 +2562,6 @@
|
||||||
<source>If the password's score is less than or equal this value, the policy will fail.</source>
|
<source>If the password's score is less than or equal this value, the policy will fail.</source>
|
||||||
<target>如果密码分数小于等于此值,则策略失败。</target>
|
<target>如果密码分数小于等于此值,则策略失败。</target>
|
||||||
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s1bfe7505059d164f">
|
|
||||||
<source>0: Too guessable: risky password. (guesses < 10^3)</source>
|
|
||||||
<target>0:过于易猜测:密码有风险。(猜测次数 < 10^3)</target>
|
|
||||||
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s423d1f2477998d0b">
|
|
||||||
<source>1: Very guessable: protection from throttled online attacks. (guesses < 10^6)</source>
|
|
||||||
<target>1:非常易猜测:可以防范受限的在线攻击。(猜测次数 < 10^6)</target>
|
|
||||||
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s33849cc046eb901d">
|
|
||||||
<source>2: Somewhat guessable: protection from unthrottled online attacks. (guesses < 10^8)</source>
|
|
||||||
<target>2:有些易猜测:可以防范不受限的在线攻击。(猜测次数 < 10^8)</target>
|
|
||||||
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s578dcce295718e1b">
|
|
||||||
<source>3: Safely unguessable: moderate protection from offline slow-hash scenario. (guesses < 10^10)</source>
|
|
||||||
<target>3:难以猜测:适度防范离线慢速哈希场景。(猜测次数 < 10^10)</target>
|
|
||||||
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="s7a46de49f4eba5d7">
|
|
||||||
<source>4: Very unguessable: strong protection from offline slow-hash scenario. (guesses >= 10^10)</source>
|
|
||||||
<target>4:非常难以猜测:高度防范离线慢速哈希场景。(猜测次数 >= 10^10)</target>
|
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="sd6cd7ce2310a73a4">
|
<trans-unit id="sd6cd7ce2310a73a4">
|
||||||
<source>Checks the value from the policy request against several rules, mostly used to ensure password strength.</source>
|
<source>Checks the value from the policy request against several rules, mostly used to ensure password strength.</source>
|
||||||
|
@ -3013,8 +2988,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">
|
||||||
|
@ -3806,8 +3781,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">
|
||||||
|
@ -3816,8 +3791,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">
|
||||||
|
@ -4013,10 +3988,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">
|
||||||
|
@ -5102,7 +5077,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>
|
||||||
|
@ -5437,10 +5412,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>
|
||||||
|
@ -5489,7 +5464,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>
|
||||||
|
@ -6585,9 +6560,9 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s96b3cddf33e1c853">
|
<trans-unit id="s96b3cddf33e1c853">
|
||||||
<source>You're currently impersonating <x id="0" equiv-text="${this.user.user.username}"/>. Click to stop.</source>
|
<source>You're currently impersonating <x id="0" equiv-text="${this.impersonation}"/>. Click to stop.</source>
|
||||||
<target>您目前正在模拟
|
<target>您目前正在模拟
|
||||||
<x id="0" equiv-text="${this.user.user.username}"/>的身份。点击以停止。</target>
|
<x id="0" equiv-text="${this.impersonation}"/>的身份。点击以停止。</target>
|
||||||
|
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="s7031e6928c44cedd">
|
<trans-unit id="s7031e6928c44cedd">
|
||||||
|
@ -7941,7 +7916,79 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||||
<trans-unit id="s32babfed740fd3c1">
|
<trans-unit id="s32babfed740fd3c1">
|
||||||
<source>User type used for newly created users.</source>
|
<source>User type used for newly created users.</source>
|
||||||
<target>新创建用户使用的用户类型。</target>
|
<target>新创建用户使用的用户类型。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s4a34a6be4c68ec87">
|
||||||
|
<source>Users created</source>
|
||||||
|
<target>已创建用户</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s275c956687e2e656">
|
||||||
|
<source>Failed logins</source>
|
||||||
|
<target>失败登录</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sb35c08e3a541188f">
|
||||||
|
<source>Also known as Client ID.</source>
|
||||||
|
<target>也称为客户端 ID。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd46fd9b647cfea10">
|
||||||
|
<source>Also known as Client Secret.</source>
|
||||||
|
<target>也称为客户端密钥。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s4476e9c50cfd13f4">
|
||||||
|
<source>Global status</source>
|
||||||
|
<target>全局状态</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd21a971eea208533">
|
||||||
|
<source>Vendor</source>
|
||||||
|
<target>供应商</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sadadfe9dfa06d7dd">
|
||||||
|
<source>No sync status.</source>
|
||||||
|
<target>无同步状态。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s2b1c81130a65a55b">
|
||||||
|
<source>Sync currently running.</source>
|
||||||
|
<target>当前正在同步。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sf36170f71cea38c2">
|
||||||
|
<source>Connectivity</source>
|
||||||
|
<target>连接性</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd94e99af8b41ff54">
|
||||||
|
<source>0: Too guessable: risky password. (guesses &lt; 10^3)</source>
|
||||||
|
<target>0:过于易猜测:密码有风险。(猜测次数 &lt; 10^3)</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sc926385d1a624c3a">
|
||||||
|
<source>1: Very guessable: protection from throttled online attacks. (guesses &lt; 10^6)</source>
|
||||||
|
<target>1:非常易猜测:可以防范受限的在线攻击。(猜测次数 &lt; 10^6)</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s8aae61c41319602c">
|
||||||
|
<source>2: Somewhat guessable: protection from unthrottled online attacks. (guesses &lt; 10^8)</source>
|
||||||
|
<target>2:有些易猜测:可以防范不受限的在线攻击。(猜测次数 &lt; 10^8)</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sc1f4b57e722a89d6">
|
||||||
|
<source>3: Safely unguessable: moderate protection from offline slow-hash scenario. (guesses &lt; 10^10)</source>
|
||||||
|
<target>3:难以猜测:适度防范离线慢速哈希场景。(猜测次数 &lt; 10^10)</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="sd47f3d3c9741343d">
|
||||||
|
<source>4: Very unguessable: strong protection from offline slow-hash scenario. (guesses &gt;= 10^10)</source>
|
||||||
|
<target>4:非常难以猜测:高度防范离线慢速哈希场景。(猜测次数 &gt;= 10^10)</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s3d2a8b86a4f5a810">
|
||||||
|
<source>Successfully created user and added to group <x id="0" equiv-text="${this.group.name}"/></source>
|
||||||
|
<target>成功创建用户并添加到组 <x id="0" equiv-text="${this.group.name}"/></target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s824e0943a7104668">
|
||||||
|
<source>This user will be added to the group "<x id="0" equiv-text="${this.targetGroup.name}"/>".</source>
|
||||||
|
<target>此用户将会被添加到组 &quot;<x id="0" equiv-text="${this.targetGroup.name}"/>&quot;。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s62e7f6ed7d9cb3ca">
|
||||||
|
<source>Pretend user exists</source>
|
||||||
|
<target>假作用户存在</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="s52bdc80690a9a8dc">
|
||||||
|
<source>When enabled, the stage will always accept the given user identifier and continue.</source>
|
||||||
|
<target>启用时,此阶段总是会接受指定的用户 ID 并继续。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
|
Reference in New Issue