Verify a 10-digit Indian mobile number with a one-time passcode.
@if (sms.busy) {
}
@if (!sms.destinationConfirmed) {
info What to expect
schedule OTP arrives within 30 seconds
verified Code is valid for 5 minutes
autorenew Resend available after 30 seconds
shield Your number is encrypted at rest
} @else if (!sms.verified) {
} @else {
{{ sms.mfaEnabled ? 'check_circle' : 'pause_circle' }}
{{ sms.mfaEnabled ? 'SMS OTP active' : 'SMS OTP verified · 2FA disabled' }}
Number on file: +91 {{ sms.destination }}
@if (sms.mfaEnabled) {
— OTP will be sent on every sign-in.
} @else {
— re-enable any time without re-verifying.
}
@if (sms.mfaEnabled) {
power_settings_new Disable
} @else {
check_circle Enable for 2FA
}
}
}
@if (selectedMethod === 'email') {
Verify your email address with a one-time passcode.
@if (email.busy) {
}
@if (!email.destinationConfirmed) {
info What to expect
schedule Email arrives within 30 seconds
verified Code is valid for 10 minutes
folder Check spam / promotions folder
shield Your address is encrypted at rest
} @else if (!email.verified) {
} @else {
{{ email.mfaEnabled ? 'check_circle' : 'pause_circle' }}
{{ email.mfaEnabled ? 'Email OTP active' : 'Email OTP verified · 2FA disabled' }}
Address on file: {{ email.destination }}
@if (email.mfaEnabled) {
— OTP will be sent on every sign-in.
} @else {
— re-enable any time without re-verifying.
}
@if (email.mfaEnabled) {
power_settings_new Disable
} @else {
check_circle Enable for 2FA
}
}
}
@if (selectedMethod === 'totp') {
Generate a key, scan it in your authenticator app, then enter the 6-digit code to register this device.
@if (!totp.qrDataUri && !totp.verified) {
qr_code_scanner
No authenticator linked yet
Click Set up to generate a QR for Google Authenticator (or any TOTP app), then enter
the 6-digit code to activate.
auto_awesome {{ totp.busy ? 'Starting…' : 'Set up' }}
} @else if (totp.qrDataUri && !totp.verified) {
1
Open Google Authenticator (or any TOTP app) and tap “Add account”.
2
Scan the code on the left.
Can't scan? Enter this in your app:
{{ totp.secret }}
content_copy
3
Enter the 6-digit code shown by your app to verify and activate.
Authenticator code
= 48 && $event.charCode <= 57 ? true : $event.preventDefault()"
/>
@if (totp.errorMsg) {
{{ totp.errorMsg }}
}
verified {{ totp.busy ? 'Verifying…' : 'Verify & activate' }}
refresh Discard & restart
} @else {
check_circle
Google Authenticator linked
Sign-in will require a 6-digit code from your authenticator app.
power_settings_new Disable
}
}
@if (selectedMethod === 'hardware') {
Choose a device kind, then connect & register it.
@if (!selectedHwKind) {
@for (item of hardware; track item.kind) {
{{ item.icon }}
{{ item.title }}
{{ item.registered ? 'check_circle' : 'radio_button_unchecked' }}
{{ item.registered ? 'Registered' : 'Not Registered' }}
{{ item.description }}
@if (item.registered) {
tag {{ item.serial }}
schedule {{ item.registeredAt }}
}
{{ item.registered ? 'settings' : 'add' }}
{{ item.registered ? 'Manage' : 'Register' }}
}
} @else if (currentHwItem) {
arrow_back
Hardware Token
All devices
{{ currentHwItem.icon }}
@if (currentHwItem.busy) {
}
@if (currentHwItem.registered) {
check
}
{{ currentHwItem.title }}
{{ currentHwItem.registered ? 'check_circle' : 'cancel' }}
{{ currentHwItem.registered ? 'Registered' : currentHwItem.busy ? 'Detecting…' : 'Not Registered' }}
{{ currentHwItem.description }}
{{
currentHwItem.busy || currentHwItem.registered ? 'check_circle' : 'circle'
}}
Connect / insert the device
{{
currentHwItem.registered ? 'check_circle' : currentHwItem.busy ? 'autorenew' : 'circle'
}}
Detect & read serial number
{{ currentHwItem.registered ? 'check_circle' : 'circle' }}
Bind device to {{ username }}
@if (currentHwItem.registered) {
Serial
{{ currentHwItem.serial }}
Registered on
{{ currentHwItem.registeredAt }}
}
@if (currentHwItem.kind === 'digital-signature') {
@if (!currentHwItem.registered) {
Map DSC
} @else if (currentHwItem.mfaEnabled) {
Disable for 2FA
Revoke DSC
} @else {
Enable for 2FA
Revoke DSC
}
} @else {
@if (!currentHwItem.registered) {
{{ currentHwItem.busy ? 'autorenew' : 'usb' }}
{{ currentHwItem.busy ? 'Detecting device…' : 'Connect & Register' }}
} @else {
link_off Unregister
}
}
}
}