Confirm login from new country
Hold sign-in from a new GeoIP country until the member confirms by email. Default off. First country is auto-trusted.
Confirm login from new country
When on, a sign-in from a country not yet on the member's known list is held until they open a confirmation email. No session cookie until they confirm.
Where to find it
Admin → Settings → Mods → Security → Confirm login from new country
Setting key: toggle.mod_sec_confirm_login_fn_country
Default: off
How it works
1. After password / 2FA, the app looks up the IP country (GeoLite2).
2. If that country is already on the account's known list, login continues.
3. If it is new, the app creates a short-lived challenge, emails a link (/api/auth/confirm-login?token=...), and returns needs_country_confirm (no session).
4. Opening the link adds the country and completes login.
There is no admin country whitelist - only the per-member known list. An empty list means the first successful country is auto-trusted (no email on that first login). Missing GeoIP is treated as known (challenge skipped).
Email template
Template key: security.login_country_confirm
Useful vars: %confirm_login_url%, %ip%, %country%, %username%, %site_name%
Edit under Settings → Emails. Outbound mail must work or the challenge fails and login errors.
Common problems
Travelers look banned
They must open the confirm email. Check spam and Email delivery.
VPN flips countries constantly
Confirm emails every hop. Leave this off for casual communities.