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.secret && !totp.verified) {
qr_code_scanner
No authenticator linked yet
Generate a setup key, scan it in your TOTP app, then verify the 6-digit code shown there.
auto_awesome Generate setup key
} @else if (totp.secret && !totp.verified) {
@for (row of totpQrCells; track $index) {
@for (cell of row; track $index) {
}
}
Scan in your authenticator app
1
Open Google Authenticator (or any TOTP app) and tap “Add account”.
2
Scan the code on the left, or enter the secret manually.
{{ totp.secret }}
content_copy
3
Enter the 6-digit code shown by your app to verify and register this device.
Authenticator code
= 48 && $event.charCode <= 57 ? true : $event.preventDefault()"
/>
@if (totp.errorMsg) {
{{ totp.errorMsg }}
}
verified {{ totp.busy ? 'Verifying…' : 'Verify & Register' }}
refresh Discard & restart
} @else {
check_circle
Authenticator app registered
Sign-in will require a 6-digit TOTP code from your app.
power_settings_new Unlink
}
}
@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
}
}
}
}