|
| 1 | + |
| 2 | +extends ../../layout |
| 3 | + |
| 4 | +block body |
| 5 | + #authenticator-apps-modal(tabindex='-1', role='dialog').modal.fade |
| 6 | + .modal-dialog(role='document') |
| 7 | + .modal-content |
| 8 | + .modal-header.d-block.text-center |
| 9 | + h6.modal-title.d-inline-block.ml-4= t('Authentication Apps') |
| 10 | + button(type='button', data-dismiss='modal', aria-label='Close').close |
| 11 | + span(aria-hidden='true') × |
| 12 | + .modal-body.text-center |
| 13 | + = t('Recommendations are listed below:') |
| 14 | + .flex-wrap.flex-fill.text-center |
| 15 | + = t('Free and Open-Source Software:') |
| 16 | + ul.list-group.text-center.mb-3 |
| 17 | + li.list-group-item.border-0 |
| 18 | + a(href='https://freeotp.github.io/', rel='noopener', target='_blank') FreeOTP |
| 19 | + ul.list-inline |
| 20 | + li.list-inline-item |
| 21 | + a(href='https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp', rel='noopener', target='_blank').btn.btn-sm.btn-outline-secondary |
| 22 | + i.fab.fa-google-play |
| 23 | + = ' ' |
| 24 | + = t('Google Play') |
| 25 | + li.list-inline-item |
| 26 | + a(href='https://itunes.apple.com/us/app/freeotp-authenticator/id872559395?mt=8', rel='noopener', target='_blank').btn.btn-sm.btn-outline-secondary |
| 27 | + i.fab.fa-app-store-ios |
| 28 | + = ' ' |
| 29 | + = t('App Store') |
| 30 | + li.list-group-item.border-0 |
| 31 | + a(href='https://f-droid.org/en/packages/org.shadowice.flocke.andotp', rel='noopener', target='_blank') andOTP |
| 32 | + ul.list-inline |
| 33 | + li.list-inline-item |
| 34 | + a(href='https://f-droid.org/repo/org.shadowice.flocke.andotp_28.apk', rel='noopener', target='_blank').btn.btn-sm.btn-outline-secondary |
| 35 | + i.fab.fa-google-play |
| 36 | + = ' ' |
| 37 | + = t('Google Play') |
| 38 | + = t('Closed-Source Software:') |
| 39 | + ul.list-group.text-center |
| 40 | + li.list-group-item.border-0 |
| 41 | + a(href='https://authy.com/', rel='noopener', target='_blank') Authy |
| 42 | + ul.list-inline |
| 43 | + li.list-inline-item |
| 44 | + a(href='https://play.google.com/store/apps/details?id=com.authy.authy', rel='noopener', target='_blank').btn.btn-sm.btn-outline-secondary |
| 45 | + i.fab.fa-google-play |
| 46 | + = ' ' |
| 47 | + = t('Google Play') |
| 48 | + li.list-inline-item |
| 49 | + a(href='https://itunes.apple.com/us/app/authy/id494168017', rel='noopener', target='_blank').btn.btn-sm.btn-outline-secondary |
| 50 | + i.fab.fa-app-store-ios |
| 51 | + = ' ' |
| 52 | + = t('App Store') |
| 53 | + li.list-group-item.border-0.mb-4 |
| 54 | + a(href='https://support.google.com/accounts/answer/1066447', rel='noopener', target='_blank') Google Authenticator |
| 55 | + ul.list-inline |
| 56 | + li.list-inline-item |
| 57 | + a(href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2', rel='noopener', target='_blank').btn.btn-sm.btn-outline-secondary |
| 58 | + i.fab.fa-google-play |
| 59 | + = ' ' |
| 60 | + = t('Google Play') |
| 61 | + li.list-inline-item |
| 62 | + a(href='http://appstore.com/googleauthenticator', rel='noopener', target='_blank').btn.btn-sm.btn-outline-secondary |
| 63 | + i.fab.fa-app-store-ios |
| 64 | + = ' ' |
| 65 | + = t('App Store') |
| 66 | + .container.py-3 |
| 67 | + .row |
| 68 | + .col-xs-12.col-sm-12.col-md-6.offset-md-3.col-lg-6.offset-lg-3 |
| 69 | + .card |
| 70 | + .card-body |
| 71 | + .text-center |
| 72 | + h1.card-title.h4= t('Enable OTP') |
| 73 | + p= t('Follow the below steps to enable two-factor authentication on your account.') |
| 74 | + hr |
| 75 | + .container |
| 76 | + form(action=l('/2fa/otp/verify'), method='POST').ajax-form.confirm-prompt |
| 77 | + input(type="hidden", name="_csrf", value=ctx.csrf) |
| 78 | + label(for='two-factor-step-one') |
| 79 | + b= t('Step 1: ') |
| 80 | + = t('Install an') |
| 81 | + = ' ' |
| 82 | + a.card-link(href='#' data-toggle='modal-anchor', data-target='#authenticator-apps-modal').text-primary= t('authentication app') |
| 83 | + = ' ' |
| 84 | + = t('on your device.') |
| 85 | + label(for='two-factor-step-two') |
| 86 | + b= t('Step 2: ') |
| 87 | + = t('Scan this QR code using the app:') |
| 88 | + img(src=qrcode, width=250, height=250, alt="").mx-auto.d-block |
| 89 | + hr |
| 90 | + label(for='two-factor-step-three') |
| 91 | + b= t('Step 3: ') |
| 92 | + = t('Enter the token generated from the app:') |
| 93 | + .form-group.floating-label |
| 94 | + input(type='text', name='token', required, placeholder=' ').form-control.form-control-lg#input-token |
| 95 | + label(for='input-token') Verification Token |
| 96 | + a.card-link.text-primary(href='#' data-toggle='collapse' data-target='#two-factor-copy')= t('Can’t scan the QR code? Follow alternative steps') |
| 97 | + #two-factor-copy.collapse |
| 98 | + hr |
| 99 | + p.text-secondary= t('Scan the following QR code in your authenticator app.') |
| 100 | + .input-group.input-group-sm.floating-label.form-group |
| 101 | + input(type='text', readonly, value=user[config.passport.fields.twoFactorToken]).form-control#two-factor-token |
| 102 | + .input-group-append |
| 103 | + button(type='button', data-toggle="clipboard", data-clipboard-target="#two-factor-token").btn.btn-primary |
| 104 | + i.fa.fa-clipboard |
| 105 | + = ' ' |
| 106 | + = t('Copy') |
| 107 | + hr |
| 108 | + button(type='submit').btn.btn-lg.btn-block.btn-primary= t('Enable OTP') |
0 commit comments