- Full control over all verification settings
- Configure link lifetime, OTP length, resend timers
- Auto-delete unverified users via CRON
- Mark all legacy accounts as pre-verified
- Choose whether vendor/admin registration requires OTP
- View verification status columns on user profile pages
- OTP popup before registration form submits
- Receives email with verification link after registration
- Resend OTP button with countdown timer
- Can set up TOTP 2FA from their profile page
- Download or re-generate 2FA backup codes
- Secure login with 2FA code on subsequent sign-ins
- Optional email verification on guest checkout orders
- Verification link sent to the order email address
- Guest verification status tracked in separate table
- Verified guests are automatically trusted on account creation
- User fills email on registration form
- Clicks "Confirm Email" button — OTP popup appears
- Digits-only OTP code arrives by email
- User enters OTP → verified status stored in session
- Form submit proceeds → account created already verified
- Account created without OTP — marked not verified
- Unique token generated and stored in DB
- Email sent with secure verification link
- User clicks link → verified status updated
- Optional: block login until verified
- Guest places order on storefront
- Verification link sent to order's email
- Guest clicks link → guest verified flag set
- If guest later registers with same email → auto-verified
A fully self-contained TOTP (Time-based One-Time Password) system built directly into the addon — no external service required. Implements RFC 6238 with AES-256-CBC encrypted secret storage using CS-Cart's own CRYPT_KEY.
3-step setup wizard: download authenticator app → scan QR code → enter first verification code. Works with Google Authenticator, Authy, and any RFC 6238-compatible app.
10 single-use backup codes generated on 2FA setup. Each code can only be used once. Users are prompted to download them. Used backup codes are permanently invalidated.
TOTP secret key is encrypted with AES-256-CBC before storage. Encryption key derived from CS-Cart's own CRYPT_KEY via SHA-256. IV is random per encryption, prepended to ciphertext, base64-encoded.
Verification window of ±8 time steps (±4 minutes) ensures codes work even with server/client clock differences. Window is configurable via setting override. Min: 1, Max: 12 steps.
2FA is enforced on password recovery and ekey login flows. A pending recovery state is stored in session so the recovery page requests the 2FA code before proceeding.
Users can disable 2FA from their profile by entering their current account password as confirmation. A strong warning popup explains the security implications before proceeding.
OTP send requests are limited to 3 per hour per email. Exceeding the limit returns a user-friendly error and blocks further sends for the remainder of that hour. Prevents email flood abuse.
5 failed OTP attempts triggers a 15-minute account lock on successive verifications. The attempt counter is tracked per OTP record in the DB. Prevents brute-force attacks.
OTP codes expire after 10 minutes. Email verification links expire after a configurable number of hours (default 5h). Tokens are cryptographically random (alphanumeric, default 15 chars) with collision check.
CRON job deletes users who never verified their email after a configurable number of days (default 30). Users with placed orders are never deleted. Setting to 0 disables deletion entirely.
The resend OTP/link button shows a live countdown timer (default 60 seconds). The resend action is blocked server-side as well — not just in UI — until the timer expires. Countdown is configurable in settings.
Admin can allow login even for unverified users (softer mode). When disabled, unverified users are blocked at login with a clear notification to check their email. Separation of registration and auth flows.
cscart_zks_email_verification
— Token & link tracking
cscart_zks_email_otp
— OTP pre-registration codes
cscart_zks_user_2fa
— Two-Factor Authentication
zks_email_verified INT(1)
email_notifications_useremail_notifications_vendoremail_notifications_guestemail_notifications_otp…?cron_password=YOUR_PASS. Default: cron_password- Deletes unverified users older than N days
- Cleans up expired OTP records from
zks_email_otp - Skips users who have placed any orders
- Respects "don't delete old accounts" setting
- CS-Cart Multi-Vendor / Ultimate
- CS-Cart core version 4.17.1+
- Core addon
tagsmust be active - PHP
opensslextension (for AES-256 2FA) - InnoDB MySQL engine, utf8mb4 charset
Install function checks for column existence before ALTER TABLE — safe to re-run on upgrade. Secret_key column is auto-extended from varchar(32) → varchar(255) if legacy install is detected. Includes UpgradeCenter integration.
By default, uninstall does not drop tables or the zks_email_verified column to preserve data. Enable the "Delete verification data on uninstall" setting first if you want a clean removal.
| Compatible | Youpitheme | 12% |
* Daily Value not established.
- Unitheme
- Youpitheme
- 4.18.x ,
- 4.17.x ,
- 4.16.x ,
- 4.15.x
- Store Builder
- Multi-vendor
- Admin
- Vendor
- Customer
No reviews found