FIXED: OTP login failing on hosts with mod_security (Bluehost, HostGator, Newfold) that strip non-standard POST parameters from wp-login.php.
IMPROVED: Login JS now sets fallback sentinel values in standard username/password fields so the OTP reaches the server even when custom POST parameters are blocked.
IMPROVED: Server-side fallback detects sentinel username and extracts OTP from password field when primary POST parameter is unavailable.
IMPROVED: Core WordPress auth handlers are removed during fallback to prevent confusing “invalid username” errors.
IMPROVED: Login form sets novalidate when OTP is entered to prevent browser HTML5 validation from blocking submission with empty username/password.
IMPROVED: Fallback usage is logged as otp_fallback_used event for diagnosing hosting compatibility issues.
1.0.5
NEW: Admin Menu Restrictions: Block temp users from specific admin pages with a visual picker.
NEW: Per-Plugin Submenu Restrictions: Granular control over sub-pages (WooCommerce tabs, EDD sections, any plugin).
NEW: Direct URL Access Blocking: Restricted pages are blocked even when accessed by direct URL.
NEW: Hide Admin Bar: Option to hide the WordPress admin bar for temporary users.
NEW: Main Admin Protection: Temp users cannot see, edit, or delete the token creator.
NEW: Plugin Self-Protection: HappyAccess is hidden from the plugins list for temp users.
NEW: User Bulk Action Protection: Temp users cannot bulk-delete or bulk-modify real admin accounts.
NEW: Activate/Deactivate Toggle: Suspend and reactivate temp user access without deleting.
NEW: Deactivation blocks all login paths (OTP, magic link) and destroys active sessions.
SECURITY: Magic link login now blocked for deactivated temp users.
SECURITY: OTP login now blocked for deactivated temp users.
SECURITY: Access guard enforces restrictions server-side with current_screen hook.
SECURITY: Complex submenu slugs with query strings (e.g., edit.php?post_type=product) are properly blocked.
SECURITY: All access denial attempts are logged with full URL for audit trail.
IMPROVED: Menu picker shows nested parent/child structure with auto-check-all behavior.
IMPROVED: Audit log auto-cleanup now also prunes old log entries (was only pruning tokens).
IMPROVED: IP allowlist parsing now trims whitespace consistently across OTP and magic link paths.
IMPROVED: All JS strings are fully localized for translation readiness.
FIXED: Missing access_deactivated error message in magic link redirect handler.
1.0.4
SECURITY: Added nonce verification to CSV export to prevent CSRF attacks.
SECURITY: Hardened IP detection to prefer REMOTE_ADDR over spoofable proxy headers.
SECURITY: Added happyaccess_client_ip filter for sites behind load balancers.
SECURITY: Elevated capability requirement from list_users to manage_options.
SECURITY: Removed raw token hash from generate response.
SECURITY: Replaced inline JavaScript with wp_add_inline_script() for Emergency Lock.
SECURITY: Escaped all AJAX response messages with esc_html__() and esc_html().
SECURITY: Rate limiter now keyed on IP only — prevents brute-force via per-OTP bypass.
SECURITY: Atomic UPDATE for token use_count prevents race condition on single-use tokens.
SECURITY: Fixed time()/current_time() timezone mismatch in magic link and share link hashes.
SECURITY: reCAPTCHA now fails closed when misconfigured or on network errors (no fake score 1.0).
SECURITY: Added rate limiting to OTP share link verification.