HelpingHand admin logins use an authenticator app as a second factor. Shop and customer logins are unchanged.
New admin accounts created after this feature shipped are required to finish enrolment before they can use /admin. After email and password they are sent to the setup page and cannot skip it.
Legacy admin accounts that already existed (or any admin whose is_totp_required flag is off) can use the admin after password login without a code. A reminder stays on the admin until they enrol. They can choose Remind me later, which hides the reminder for 24 hours on that browser. After that it comes back. There is no permanent dismiss.
Once any admin has enrolled, later logins ask for a 6-digit code after the password.
After enrolment, each admin login asks for a fresh 6-digit code after your password. The code changes every 30 seconds.
The code screen has a Don't ask for a code on this device for 2 weeks tick box. Ticking it stores a signed cookie in that browser, and for the next 14 days that browser goes straight in after your password.
Some things worth knowing:
Resetting two-factor authentication - from your account page or with the console command below - immediately cancels this on every device you ticked it on. So does changing APP_SECRET.
Once you are signed in, open the user menu (top right) and choose Two-factor authentication. That page shows that 2FA is enabled. To enrol a new device, enter a current code and choose Reset two-factor authentication. You will be sent through enrolment again.
If you cannot produce a code, ask a technical contact to reset your account from the server:
docker compose exec php bin/console app:admin:reset-2fa you@example.com
The next admin login follows the same policy as an unenrolled account (forced setup for required admins, reminder for legacy admins). Shop and customer logins are not affected.