2021-10-21 23:30:25 +02:00
|
|
|
<div class="modal fade" role="dialog" aria-modal="true" aria-labelledby="2faYubiKeyTitle">
|
2019-10-11 17:47:41 +02:00
|
|
|
<div class="modal-dialog modal-lg" role="document">
|
2018-06-27 19:45:11 +02:00
|
|
|
<div class="modal-content">
|
|
|
|
<div class="modal-header">
|
2019-10-11 17:47:41 +02:00
|
|
|
<h2 class="modal-title" id="2faYubiKeyTitle">
|
2018-06-27 19:45:11 +02:00
|
|
|
{{ "twoStepLogin" | i18n }}
|
2018-06-27 23:50:31 +02:00
|
|
|
<small>YubiKey</small>
|
2018-06-27 19:45:11 +02:00
|
|
|
</h2>
|
2019-10-11 17:22:21 +02:00
|
|
|
<button
|
|
|
|
type="button"
|
|
|
|
class="close"
|
|
|
|
data-dismiss="modal"
|
|
|
|
appA11yTitle="{{ 'close' | i18n }}"
|
|
|
|
>
|
2018-06-27 19:45:11 +02:00
|
|
|
<span aria-hidden="true">×</span>
|
|
|
|
</button>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2019-02-21 22:50:37 +01:00
|
|
|
<app-two-factor-verify
|
|
|
|
[organizationId]="organizationId"
|
|
|
|
[type]="type"
|
|
|
|
(onAuthed)="auth($event)"
|
|
|
|
*ngIf="!authed"
|
2021-12-17 15:57:11 +01:00
|
|
|
>
|
2018-06-28 05:55:50 +02:00
|
|
|
</app-two-factor-verify>
|
2021-12-17 15:57:11 +01:00
|
|
|
<form
|
|
|
|
#form
|
2019-02-21 22:50:37 +01:00
|
|
|
(ngSubmit)="submit()"
|
|
|
|
[appApiAction]="formPromise"
|
|
|
|
ngNativeValidate
|
|
|
|
*ngIf="authed"
|
|
|
|
autocomplete="off"
|
2021-12-17 15:57:11 +01:00
|
|
|
>
|
2018-06-27 19:45:11 +02:00
|
|
|
<div class="modal-body">
|
|
|
|
<app-callout
|
|
|
|
type="success"
|
|
|
|
title="{{ 'enabled' | i18n }}"
|
2022-01-27 18:25:58 +01:00
|
|
|
icon="bwi bwi-check-circle"
|
2018-06-27 19:45:11 +02:00
|
|
|
*ngIf="enabled"
|
2021-12-17 15:57:11 +01:00
|
|
|
>
|
2018-06-27 19:45:11 +02:00
|
|
|
{{ "twoStepLoginProviderEnabled" | i18n }}
|
|
|
|
</app-callout>
|
|
|
|
<app-callout type="warning">
|
|
|
|
<p>{{ "twoFactorYubikeyWarning" | i18n }}</p>
|
|
|
|
<ul class="mb-0">
|
|
|
|
<li>{{ "twoFactorYubikeySupportUsb" | i18n }}</li>
|
|
|
|
<li>{{ "twoFactorYubikeySupportMobile" | i18n }}</li>
|
2021-12-17 15:57:11 +01:00
|
|
|
</ul>
|
2018-06-27 19:45:11 +02:00
|
|
|
</app-callout>
|
2021-10-08 00:47:32 +02:00
|
|
|
<img class="float-right mfaType3" alt="YubiKey OTP security key logo" />
|
2018-06-27 19:45:11 +02:00
|
|
|
<p>{{ "twoFactorYubikeyAdd" | i18n }}:</p>
|
2021-12-17 15:57:11 +01:00
|
|
|
<ol>
|
2018-06-27 19:45:11 +02:00
|
|
|
<li>{{ "twoFactorYubikeyPlugIn" | i18n }}</li>
|
|
|
|
<li>{{ "twoFactorYubikeySelectKey" | i18n }}</li>
|
|
|
|
<li>{{ "twoFactorYubikeyTouchButton" | i18n }}</li>
|
|
|
|
<li>{{ "twoFactorYubikeySaveForm" | i18n }}</li>
|
2021-12-17 15:57:11 +01:00
|
|
|
</ol>
|
|
|
|
<hr />
|
2018-06-27 19:45:11 +02:00
|
|
|
<div class="row">
|
|
|
|
<div class="form-group col-6" *ngFor="let k of keys; let i = index">
|
|
|
|
<label for="key{{ i + 1 }}">{{ "yubikeyX" | i18n: i + 1 }}</label>
|
2021-12-17 15:57:11 +01:00
|
|
|
<input
|
2019-02-21 22:50:37 +01:00
|
|
|
id="key{{ i + 1 }}"
|
|
|
|
type="password"
|
|
|
|
name="Key{{ i + 1 }}"
|
|
|
|
class="form-control"
|
|
|
|
[(ngModel)]="k.key"
|
|
|
|
*ngIf="!k.existingKey"
|
|
|
|
appInputVerbatim
|
|
|
|
autocomplete="new-password"
|
2021-12-17 15:57:11 +01:00
|
|
|
/>
|
2018-06-27 19:45:11 +02:00
|
|
|
<div class="d-flex" *ngIf="k.existingKey">
|
|
|
|
<span class="mr-2">{{ k.existingKey }}</span>
|
2021-12-17 15:57:11 +01:00
|
|
|
<button
|
2019-02-21 22:50:37 +01:00
|
|
|
type="button"
|
|
|
|
class="btn btn-link text-danger ml-auto"
|
|
|
|
(click)="remove(k)"
|
2019-10-11 16:35:24 +02:00
|
|
|
appA11yTitle="{{ 'remove' | i18n }}"
|
2021-12-17 15:57:11 +01:00
|
|
|
>
|
2022-01-27 18:25:58 +01:00
|
|
|
<i class="bwi bwi-minus-circle bwi-lg" aria-hidden="true"></i>
|
2018-06-27 19:45:11 +02:00
|
|
|
</button>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-06-27 19:45:11 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<strong class="d-block mb-2">{{ "nfcSupport" | i18n }}</strong>
|
|
|
|
<div class="form-check">
|
2019-02-21 22:50:37 +01:00
|
|
|
<input type="checkbox" class="form-check-input" id="nfc" name="Nfc" [(ngModel)]="nfc" />
|
2018-06-27 19:45:11 +02:00
|
|
|
<label class="form-check-label" for="nfc">{{
|
2018-07-21 15:50:50 +02:00
|
|
|
"twoFactorYubikeySupportsNfc" | i18n
|
|
|
|
}}</label>
|
2018-06-27 19:45:11 +02:00
|
|
|
</div>
|
2019-10-11 16:35:24 +02:00
|
|
|
<small class="form-text text-muted">{{ "twoFactorYubikeySupportsNfcDesc" | i18n }}</small>
|
2018-06-27 19:45:11 +02:00
|
|
|
</div>
|
|
|
|
<div class="modal-footer">
|
2018-07-18 05:21:23 +02:00
|
|
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
2022-01-27 18:25:58 +01:00
|
|
|
<i
|
|
|
|
class="bwi bwi-spinner bwi-spin"
|
|
|
|
title="{{ 'loading' | i18n }}"
|
|
|
|
aria-hidden="true"
|
|
|
|
></i>
|
2018-06-27 19:45:11 +02:00
|
|
|
<span>{{ "save" | i18n }}</span>
|
|
|
|
</button>
|
2021-12-17 15:57:11 +01:00
|
|
|
<button
|
2019-02-21 22:50:37 +01:00
|
|
|
#disableBtn
|
|
|
|
type="button"
|
|
|
|
class="btn btn-outline-secondary btn-submit"
|
|
|
|
[appApiAction]="disablePromise"
|
|
|
|
[disabled]="disableBtn.loading"
|
|
|
|
(click)="disable()"
|
|
|
|
*ngIf="enabled"
|
2021-12-17 15:57:11 +01:00
|
|
|
>
|
2022-01-27 18:25:58 +01:00
|
|
|
<i
|
|
|
|
class="bwi bwi-spinner bwi-spin"
|
|
|
|
title="{{ 'loading' | i18n }}"
|
|
|
|
aria-hidden="true"
|
|
|
|
></i>
|
2018-06-27 19:45:11 +02:00
|
|
|
<span>{{ "disableAllKeys" | i18n }}</span>
|
|
|
|
</button>
|
2019-02-21 22:50:37 +01:00
|
|
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
|
|
|
{{ "close" | i18n }}
|
2018-06-27 19:45:11 +02:00
|
|
|
</button>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
|
|
|
</form>
|
2018-06-27 19:45:11 +02:00
|
|
|
</div>
|
2021-12-17 15:57:11 +01:00
|
|
|
</div>
|
2018-06-27 19:45:11 +02:00
|
|
|
</div>
|