{"id":296332,"date":"2026-04-29T06:51:08","date_gmt":"2026-04-29T06:51:08","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/two-factor-shield\/"},"modified":"2026-04-29T06:52:21","modified_gmt":"2026-04-29T06:52:21","slug":"loginarmor-email-2fa","status":"publish","type":"plugin","link":"https:\/\/hi.wordpress.org\/plugins\/loginarmor-email-2fa\/","author":23190646,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0","stable_tag":"1.0","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"LoginArmor - Email 2FA","header_author":"TechArk Solutions","header_description":"Adds Two-Factor Authentication via Email for secure WordPress logins.","assets_banners_color":"f8faff","last_updated":"2026-04-29 06:52:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/gotechark\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":46,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"gotechark","date":"2026-04-29 06:52:21"}},"upgrade_notice":{"1.0":"<p>This version standardizes the plugin as email-only 2FA for the first public release and updates older saved settings accordingly.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3518040,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3518040,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3518030,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3518030,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3518030,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3518030,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"Configure 2FA Setting","2":"Configure Email Template"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[9211,209326,1229,261354,1909],"plugin_category":[],"plugin_contributors":[244901,237096],"plugin_business_model":[],"class_list":["post-296332","plugin","type-plugin","status-publish","hentry","plugin_tags-2fa","plugin_tags-email-otp","plugin_tags-login-security","plugin_tags-recovery-codes","plugin_tags-two-factor-authentication","plugin_contributors-gotechark","plugin_contributors-yogid","plugin_committers-gotechark"],"banners":{"banner":"https:\/\/ps.w.org\/loginarmor-email-2fa\/assets\/banner-772x250.png?rev=3518030","banner_2x":"https:\/\/ps.w.org\/loginarmor-email-2fa\/assets\/banner-1544x500.png?rev=3518030","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/loginarmor-email-2fa\/assets\/icon-128x128.png?rev=3518040","icon_2x":"https:\/\/ps.w.org\/loginarmor-email-2fa\/assets\/icon-256x256.png?rev=3518040","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/loginarmor-email-2fa\/assets\/screenshot-1.png?rev=3518030","caption":"Configure 2FA Setting"},{"src":"https:\/\/ps.w.org\/loginarmor-email-2fa\/assets\/screenshot-2.png?rev=3518030","caption":"Configure Email Template"}],"raw_content":"<!--section=description-->\n<p>LoginArmor adds an extra layer of protection to WordPress logins by requiring a one-time verification code after a valid username and password are entered.<\/p>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li>Email-based one-time passcodes for WordPress logins<\/li>\n<li>Apply 2FA to selected user roles<\/li>\n<li>Apply 2FA to specific users<\/li>\n<li>Optional grace period before activation is enforced<\/li>\n<li>Recovery codes for backup access<\/li>\n<li>Customizable email subject and login code email template<\/li>\n<li>Optional debug logging to <code>wp-content\/uploads\/loginarmor-email-2fa\/loginarmor-debug.log<\/code><\/li>\n<li>Dedicated settings screen inside the WordPress admin<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>A user enters a valid username and password.<\/li>\n<li>LoginArmor sends a one-time code to the user\u2019s email address.<\/li>\n<li>The user enters the code to complete login.<\/li>\n<li>If needed, the user can use a recovery code instead.<\/li>\n<\/ol>\n\n<h4>Recovery codes<\/h4>\n\n<p>The plugin includes recovery codes as a backup login option. Codes are stored securely as hashes in user meta. Plaintext codes are shown only temporarily so users can save or download them once.<\/p>\n\n<h4>Grace period<\/h4>\n\n<p>You can optionally set a grace period in days. During the grace period, eligible users can continue signing in while they complete activation. After the grace period ends, 2FA is enforced.<\/p>\n\n<h4>No external service required<\/h4>\n\n<p>LoginArmor uses WordPress email delivery and does not require a third-party 2FA service.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>LoginArmor does not connect to an external third-party verification service.<\/p>\n\n<p>The plugin may process and store the following data on your WordPress site:<\/p>\n\n<ul>\n<li>Email-based one-time passcodes for login verification<\/li>\n<li>Recovery code hashes stored in user meta<\/li>\n<li>Optional debug log entries in <code>wp-content\/uploads\/loginarmor-email-2fa\/loginarmor-debug.log<\/code><\/li>\n<li>Temporary transients used for login, cooldown, and verification flow<\/li>\n<\/ul>\n\n<p>This data stays on your site unless your own email delivery system or hosting stack routes it elsewhere.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/loginarmor-email-2fa\/<\/code> directory, or install the plugin through the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>LoginArmor<\/strong> in the WordPress admin menu.<\/li>\n<li>Enable two-factor authentication.<\/li>\n<li>Choose the user roles and\/or specific users who should use 2FA.<\/li>\n<li>Configure the grace period if needed.<\/li>\n<li>Customize the email subject and email template if desired.<\/li>\n<li>Save your settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20apply%202fa%20to%20only%20some%20users%3F\"><h3>Can I apply 2FA to only some users?<\/h3><\/dt>\n<dd><p>Yes. You can apply 2FA by user role, by specific users, or both.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20user%20cannot%20access%20their%20email%3F\"><h3>What happens if a user cannot access their email?<\/h3><\/dt>\n<dd><p>They can use a recovery code if one has been generated and saved.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20email%20content%3F\"><h3>Can I customize the email content?<\/h3><\/dt>\n<dd><p>Yes. You can customize the sender email address, subject line, and login code email template from the plugin settings.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20require%20a%20third-party%20account%3F\"><h3>Does the plugin require a third-party account?<\/h3><\/dt>\n<dd><p>No. It works with your WordPress site and its email sending setup.<\/p><\/dd>\n<dt id=\"where%20are%20recovery%20codes%20managed%3F\"><h3>Where are recovery codes managed?<\/h3><\/dt>\n<dd><p>Recovery codes are available from the user profile area and are intended to be saved by the user for emergency access.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Improved settings handling and login flow stability<\/li>\n<li>Refined admin UI and general plugin behavior<\/li>\n<\/ul>","raw_excerpt":"Add secure email-based 2FA authentication to WordPress logins with OTP verification, recovery codes, a grace period, and flexible user targeting.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/296332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hi.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/hi.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=296332"}],"author":[{"embeddable":true,"href":"https:\/\/hi.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gotechark"}],"wp:attachment":[{"href":"https:\/\/hi.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=296332"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=296332"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=296332"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=296332"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=296332"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=296332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}