{"id":109408,"date":"2019-09-27T22:44:38","date_gmt":"2019-09-27T22:44:38","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dologin\/"},"modified":"2025-06-11T14:21:24","modified_gmt":"2025-06-11T14:21:24","slug":"dologin","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/dologin\/","author":17454176,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"4.3","stable_tag":"4.3","tested":"6.8.5","requires":"4.0","requires_php":"","requires_plugins":null,"header_name":"DoLogin Security","header_author":"WPDO","header_description":"Login helper","assets_banners_color":"","last_updated":"2025-06-11 14:21:24","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":4.5,"author_block_rating":0,"active_installs":7000,"downloads":163805,"num_ratings":13,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","changelog"],"tags":{"1.0":{"tag":"1.0","author":"wpdo5ea","date":"2019-09-27 22:44:26"},"1.1":{"tag":"1.1","author":"wpdo5ea","date":"2019-09-28 05:20:32"},"1.1.1":{"tag":"1.1.1","author":"wpdo5ea","date":"2019-09-28 05:26:16"},"1.2":{"tag":"1.2","author":"wpdo5ea","date":"2019-09-28 21:20:09"},"1.2.1":{"tag":"1.2.1","author":"wpdo5ea","date":"2019-09-30 14:08:22"},"1.2.2":{"tag":"1.2.2","author":"wpdo5ea","date":"2019-10-01 18:00:17"},"1.3":{"tag":"1.3","author":"wpdo5ea","date":"2019-10-21 03:45:23"},"1.3.1":{"tag":"1.3.1","author":"wpdo5ea","date":"2019-10-21 03:51:47"},"1.3.2":{"tag":"1.3.2","author":"wpdo5ea","date":"2019-10-21 20:08:30"},"1.3.3":{"tag":"1.3.3","author":"wpdo5ea","date":"2019-10-21 21:34:56"},"1.3.4":{"tag":"1.3.4","author":"wpdo5ea","date":"2019-10-31 17:47:29"},"1.3.5":{"tag":"1.3.5","author":"wpdo5ea","date":"2019-10-31 19:42:50"},"1.4":{"tag":"1.4","author":"wpdo5ea","date":"2019-11-13 00:05:33"},"1.4.1":{"tag":"1.4.1","author":"wpdo5ea","date":"2019-11-14 16:46:44"},"1.4.2":{"tag":"1.4.2","author":"wpdo5ea","date":"2019-11-14 19:45:26"},"1.4.3":{"tag":"1.4.3","author":"wpdo5ea","date":"2019-11-14 22:48:07"},"1.4.4":{"tag":"1.4.4","author":"wpdo5ea","date":"2019-11-18 16:53:52"},"1.4.5":{"tag":"1.4.5","author":"wpdo5ea","date":"2019-11-18 17:48:02"},"1.4.6":{"tag":"1.4.6","author":"wpdo5ea","date":"2019-11-19 14:42:24"},"1.4.7":{"tag":"1.4.7","author":"wpdo5ea","date":"2019-11-19 16:42:41"},"1.5":{"tag":"1.5","author":"wpdo5ea","date":"2019-11-21 23:04:58"},"1.6":{"tag":"1.6","author":"wpdo5ea","date":"2019-11-28 01:17:14"},"1.7":{"tag":"1.7","author":"wpdo5ea","date":"2019-11-30 17:34:35"},"1.7.1":{"tag":"1.7.1","author":"wpdo5ea","date":"2019-12-06 21:04:06"},"1.8":{"tag":"1.8","author":"wpdo5ea","date":"2020-02-18 19:22:49"},"1.9":{"tag":"1.9","author":"wpdo5ea","date":"2020-02-26 21:15:46"},"2.0":{"tag":"2.0","author":"wpdo5ea","date":"2020-03-11 21:14:42"},"2.1":{"tag":"2.1","author":"wpdo5ea","date":"2020-03-19 01:57:35"},"2.2":{"tag":"2.2","author":"wpdo5ea","date":"2020-03-24 15:47:52"},"2.2.1":{"tag":"2.2.1","author":"wpdo5ea","date":"2020-03-24 15:53:17"},"2.2.2":{"tag":"2.2.2","author":"wpdo5ea","date":"2020-03-25 18:12:05"},"2.3":{"tag":"2.3","author":"wpdo5ea","date":"2020-03-29 16:27:27"},"2.4":{"tag":"2.4","author":"wpdo5ea","date":"2020-04-06 18:35:14"},"2.5":{"tag":"2.5","author":"wpdo5ea","date":"2020-04-20 15:09:10"},"2.6":{"tag":"2.6","author":"wpdo5ea","date":"2020-05-06 14:33:59"},"2.7":{"tag":"2.7","author":"wpdo5ea","date":"2020-05-15 01:01:11"},"2.7.1":{"tag":"2.7.1","author":"wpdo5ea","date":"2020-05-20 02:02:31"},"2.8":{"tag":"2.8","author":"wpdo5ea","date":"2020-05-27 01:54:32"},"2.9":{"tag":"2.9","author":"wpdo5ea","date":"2020-08-14 15:13:28"},"2.9.2":{"tag":"2.9.2","author":"wpdo5ea","date":"2020-09-21 17:42:36"},"2.9.3":{"tag":"2.9.3","author":"wpdo5ea","date":"2020-09-22 15:04:41"},"2.9.4":{"tag":"2.9.4","author":"wpdo5ea","date":"2020-10-14 15:20:20"},"3.0":{"tag":"3.0","author":"wpdo5ea","date":"2021-02-03 20:32:46"},"3.1":{"tag":"3.1","author":"wpdo5ea","date":"2021-07-23 16:32:27"},"3.2":{"tag":"3.2","author":"wpdo5ea","date":"2022-01-18 12:57:08"},"3.3":{"tag":"3.3","author":"wpdo5ea","date":"2022-05-04 14:08:14"},"3.4":{"tag":"3.4","author":"wpdo5ea","date":"2022-05-27 19:21:47"},"3.5":{"tag":"3.5","author":"wpdo5ea","date":"2022-09-01 02:08:43"},"3.5.1":{"tag":"3.5.1","author":"wpdo5ea","date":"2022-09-01 16:25:14"},"3.5.2":{"tag":"3.5.2","author":"wpdo5ea","date":"2023-02-10 15:50:31"},"3.6":{"tag":"3.6","author":"wpdo5ea","date":"2023-07-12 21:42:32"},"3.7":{"tag":"3.7","author":"wpdo5ea","date":"2023-08-18 20:05:06"},"3.7.1":{"tag":"3.7.1","author":"wpdo5ea","date":"2023-09-13 16:50:31"},"3.8":{"tag":"3.8","author":"wpdo5ea","date":"2024-03-07 21:42:58"},"4.0":{"tag":"4.0","author":"wpdo5ea","date":"2025-05-27 03:07:36"},"4.1":{"tag":"4.1","author":"wpdo5ea","date":"2025-05-27 04:35:48"},"4.1.1":{"tag":"4.1.1","author":"wpdo5ea","date":"2025-05-27 04:42:36"},"4.2":{"tag":"4.2","author":"wpdo5ea","date":"2025-05-29 23:00:12"},"4.3":{"tag":"4.3","author":"wpdo5ea","date":"2025-06-11 14:21:24"}},"upgrade_notice":[],"ratings":{"1":0,"2":2,"3":0,"4":0,"5":11},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":2173350,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.1","1.1.1","1.2","1.2.1","1.2.2","1.3","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.4","1.4.1","1.4.2","1.4.3","1.4.4","1.4.5","1.4.6","1.4.7","1.5","1.6","1.7","1.7.1","1.8","1.9","2.0","2.1","2.2","2.2.1","2.2.2","2.3","2.4","2.5","2.6","2.7","2.7.1","2.8","2.9","2.9.2","2.9.3","2.9.4","3.0","3.1","3.2","3.3","3.4","3.5","3.5.1","3.5.2","3.6","3.7","3.7.1","3.8","4.0","4.1","4.1.1","4.2","4.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3301086,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3301086,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3301086,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3301086,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3301086,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3301086,"resolution":"6","location":"assets","locale":""},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3301086,"resolution":"7","location":"assets","locale":""},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3301086,"resolution":"8","location":"assets","locale":""},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3301086,"resolution":"9","location":"assets","locale":""}},"screenshots":{"1":"Plugin Site Connections","2":"Plugin Settings","3":"Plugin Passwordless Login","4":"Plugin Login Attempts Log","5":"Login Page (After sent dynamic code to mobile text message)","6":"Login Page (2 times left)","7":"Login Page (Too many failure)","8":"Login Page (Blacklist blocked)","9":"WooCommerce login protection"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[211218,243088,125445,176732,1229],"plugin_category":[],"plugin_contributors":[175324],"plugin_business_model":[],"class_list":["post-109408","plugin","type-plugin","status-publish","hentry","plugin_tags-2fa-login","plugin_tags-cloudflare-turnstile-recaptcha","plugin_tags-easy-login","plugin_tags-geolocation-login-limit","plugin_tags-login-security","plugin_contributors-wpdo","plugin_committers-wpdo5ea"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/dologin\/assets\/icon-256x256.png?rev=2173350","icon_2x":"https:\/\/ps.w.org\/dologin\/assets\/icon-256x256.png?rev=2173350","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/dologin\/assets\/screenshot-1.png?rev=3301086","caption":"Plugin Site Connections"},{"src":"https:\/\/ps.w.org\/dologin\/assets\/screenshot-2.png?rev=3301086","caption":"Plugin Settings"},{"src":"https:\/\/ps.w.org\/dologin\/assets\/screenshot-3.png?rev=3301086","caption":"Plugin Passwordless Login"},{"src":"https:\/\/ps.w.org\/dologin\/assets\/screenshot-4.png?rev=3301086","caption":"Plugin Login Attempts Log"},{"src":"https:\/\/ps.w.org\/dologin\/assets\/screenshot-5.png?rev=3301086","caption":"Login Page (After sent dynamic code to mobile text message)"},{"src":"https:\/\/ps.w.org\/dologin\/assets\/screenshot-6.png?rev=3301086","caption":"Login Page (2 times left)"},{"src":"https:\/\/ps.w.org\/dologin\/assets\/screenshot-7.png?rev=3301086","caption":"Login Page (Too many failure)"},{"src":"https:\/\/ps.w.org\/dologin\/assets\/screenshot-8.png?rev=3301086","caption":"Login Page (Blacklist blocked)"},{"src":"https:\/\/ps.w.org\/dologin\/assets\/screenshot-9.png?rev=3301086","caption":"WooCommerce login protection"}],"raw_content":"<!--section=description-->\n<p>In one click, your WordPress login page will be pretected with the smart brute force attack protection! Any login attempts more than 6 in 10 minutes (default value) will be limited.<\/p>\n\n<p>Limit the number of login attempts through both the login and the auth cookies.<\/p>\n\n<ul>\n<li><p>Two-factor Authentication login.<\/p><\/li>\n<li><p>Text SMS message passcode for 2nd step verification support.<\/p><\/li>\n<li><p>Cloudflare Turnstile (better than Google reCAPTCHA).<\/p><\/li>\n<li><p>GeoLocation (Continent\/Country\/City) or IP range to limit login attempts.<\/p><\/li>\n<li><p>Passwordless login link.<\/p><\/li>\n<li><p>Support Whitelist and Blacklist.<\/p><\/li>\n<li><p>GDPR compliant. With this feature turned on, all logged IPs get obfuscated (md5-hashed).<\/p><\/li>\n<li><p>WooCommerce Login supported.<\/p><\/li>\n<li><p>XMLRPC gateway protection.<\/p><\/li>\n<\/ul>\n\n<h4>API<\/h4>\n\n<ul>\n<li><p>Call the function <code>$link = function_exists( 'dologin_gen_link' ) ? dologin_gen_link( 'your plugin name or tag' ) : '';<\/code> to generate one passwordless login link for the current user.<\/p><\/li>\n<li><p>Call the function <code>$link = function_exists( 'dologin_gen_link' ) ? dologin_gen_link( 'note\/tip for this generation', $user_id ) : '';<\/code> to generate a passwordless login link for the user which ID is <code>$user_id<\/code>.<\/p><\/li>\n<\/ul>\n\n<p>The generated one-time used link will be expired after 7 days.<\/p>\n\n<ul>\n<li>Define const <code>SILENCE_INSTALL<\/code> to avoid redirecting to setting page after installtion.<\/li>\n<\/ul>\n\n<h4>CLI<\/h4>\n\n<ul>\n<li><p>List all passwordless links: <code>wp dologin list<\/code><\/p><\/li>\n<li><p>Generate a passwordless link for one username (for the login name <code>root<\/code>): <code>wp dologin gen root<\/code><\/p><\/li>\n<li><p>Delete a passwordless link w\/ the ID in list (for the record w\/ ID 5): <code>wp dologin del 5<\/code><\/p><\/li>\n<\/ul>\n\n<h4>How GeoLocation works<\/h4>\n\n<p>When visitors hit the login page, this plugin will lookup the Geolocation info from API, compare the Geolocation setting (if has) with the whitelist\/blacklist to decide if allow login attempts.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The online IP lookup service is provided by https:\/\/www.doapi.us. The provider's privacy policy is https:\/\/www.doapi.us\/privacy.<\/p>\n\n<p>Based on the original code from Limit Login Attemps plugin and Limit Login Attemps Reloaded plugin.<\/p>\n\n<!--section=changelog-->\n<h4>4.3 - Jun 11 2025<\/h4>\n\n<ul>\n<li>Generating passwordless link will redirect to the corresponding tab now.<\/li>\n<\/ul>\n\n<h4>4.2 - May 31 2025<\/h4>\n\n<ul>\n<li>\ud83c\udf40 Cloudflare Turnstile reCAPTCHA.<\/li>\n<li>\ud83d\udc1e Fixed 2FA conflict w\/ reCAPTCHA.<\/li>\n<\/ul>\n\n<h4>4.1.1 - May 27 2025<\/h4>\n\n<ul>\n<li>Resolved WooCommerce HPOS feature warning.<\/li>\n<\/ul>\n\n<h4>4.1 - May 27 2025<\/h4>\n\n<ul>\n<li>Showed the easy login confirmation landing page.<\/li>\n<li>Disallowed reuse of login link to prevent possible replay attack.<\/li>\n<li>Fixed root site pk\/sk clear issue in easy login when saving conf.<\/li>\n<li>Restored reCAPTCHA to previous version.<\/li>\n<\/ul>\n\n<h4>4.0 - May 26 2025<\/h4>\n\n<ul>\n<li>\ud83c\udf40 <code>Easy Login<\/code> feature! Allow one root WordPress to easy login to multi child WordPress sites.<\/li>\n<\/ul>\n\n<h4>3.8<\/h4>\n\n<ul>\n<li>Security patch per patchstack report.<\/li>\n<\/ul>\n\n<h4>3.7.1<\/h4>\n\n<ul>\n<li>IP vulnerability patch for dashboard widget. (Bob@Jetpack)<\/li>\n<\/ul>\n\n<h4>3.7<\/h4>\n\n<ul>\n<li>IP vulnerability patch. (Bob@Jetpack)<\/li>\n<\/ul>\n\n<h4>3.6<\/h4>\n\n<ul>\n<li>Fixed Google reCAPTCHA authentication failure. (mandotr)<\/li>\n<\/ul>\n\n<h4>3.5.2<\/h4>\n\n<ul>\n<li>Fixed auto upgrade PHP warning. (lavacano)<\/li>\n<\/ul>\n\n<h4>3.5.1<\/h4>\n\n<ul>\n<li>Banner to install qrcode plugin to enable 2FA.<\/li>\n<\/ul>\n\n<h4>3.5<\/h4>\n\n<ul>\n<li>\ud83c\udf40 Two-factor Authentication.<\/li>\n<\/ul>\n\n<h4>3.4<\/h4>\n\n<ul>\n<li>Bypassed version check to speed up WP6 loading.<\/li>\n<\/ul>\n\n<h4>3.3<\/h4>\n\n<ul>\n<li>Fixed potential duration value in string conversion issue. (wpcrono)<\/li>\n<\/ul>\n\n<h4>3.2<\/h4>\n\n<ul>\n<li>API <code>dologin_admin_menu_access<\/code> to allow other users to config dologin settings. (franfal)<\/li>\n<\/ul>\n\n<h4>3.1<\/h4>\n\n<ul>\n<li>Compatibility improvement when communication failed between client wordpress and DoAPI.us API. (@matteocuellar @ecomturbo @thesaintindiano)<\/li>\n<\/ul>\n\n<h4>3.0<\/h4>\n\n<ul>\n<li>\ud83c\udf40 Dashboard widget.<\/li>\n<li>New API for free text message gateway.<\/li>\n<\/ul>\n\n<h4>2.9.4<\/h4>\n\n<ul>\n<li>Fixed IXR_Error PHP notice for XMLRPC login failure.<\/li>\n<\/ul>\n\n<h4>2.9.3<\/h4>\n\n<ul>\n<li>Support translation for login text message. (@merkwert)<\/li>\n<\/ul>\n\n<h4>2.9.2<\/h4>\n\n<ul>\n<li>More accurate to detect IP.<\/li>\n<\/ul>\n\n<h4>2.9.1<\/h4>\n\n<ul>\n<li>\ud83c\udf40 New setting Google reCAPTCHA on Lost Password Page.<\/li>\n<\/ul>\n\n<h4>2.9<\/h4>\n\n<ul>\n<li>WordPress v5.5 Rest compatibility.<\/li>\n<\/ul>\n\n<h4>2.8<\/h4>\n\n<ul>\n<li>Avoid duplicated login attempt records for one IP in a short time.<\/li>\n<li>GUI enhancement.<\/li>\n<\/ul>\n\n<h4>2.7.1<\/h4>\n\n<ul>\n<li>Added API info to GUI.<\/li>\n<\/ul>\n\n<h4>2.7<\/h4>\n\n<ul>\n<li>Login Attempts log can be cleared now.<\/li>\n<\/ul>\n\n<h4>2.6<\/h4>\n\n<ul>\n<li>Codebase reformated.<\/li>\n<\/ul>\n\n<h4>2.5<\/h4>\n\n<ul>\n<li>CLI supported.<\/li>\n<\/ul>\n\n<h4>2.4<\/h4>\n\n<ul>\n<li>Passwordless link can be copied in one click.<\/li>\n<\/ul>\n\n<h4>2.3<\/h4>\n\n<ul>\n<li>\ud83c\udf40 Reverse Matching w\/ <code>!:<\/code> feature. Now can use <code>!:<\/code> to exclude one rule. (@jacklinkers)<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Better IP detection.<\/li>\n<li>Supported empty line and single line comments for whitelist and blacklist.<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Declared WooCommerce support up to 4.0.1.<\/li>\n<\/ul>\n\n<h4>2.2<\/h4>\n\n<ul>\n<li>Whitelist and Blacklist support comments now.<\/li>\n<\/ul>\n\n<h4>2.1<\/h4>\n\n<ul>\n<li>Passwordless login will now have a confirm page to avoid auto-visited when sharing the link.<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Fresh New GUI!<\/li>\n<\/ul>\n\n<h4>1.9<\/h4>\n\n<ul>\n<li>\ud83c\udf40 New option: Show reCAPTCHA on Register page. (@ach1992)<\/li>\n<\/ul>\n\n<h4>1.8<\/h4>\n\n<ul>\n<li>\ud83c\udf40 Show Phone Number field on Register page if Force SMS Auth setting is ON. (@ach1992)<\/li>\n<\/ul>\n\n<h4>1.7.1<\/h4>\n\n<ul>\n<li>\ud83d\udc1e Will now honor the timezone setting when showing date of sent. (@ducpl)<\/li>\n<\/ul>\n\n<h4>1.7<\/h4>\n\n<ul>\n<li>Supported DoDebug now.<\/li>\n<li>Bypassed whitelist check for WooCommerce clients on checkout page.<\/li>\n<li>\ud83d\udc1e WooCommerce checkout page can now login correctly.<\/li>\n<\/ul>\n\n<h4>1.6<\/h4>\n\n<ul>\n<li>\ud83c\udf40 Google reCAPTCHA.<\/li>\n<li>\ud83d\udc1e WooCommerce can now use same login strategy settings.<\/li>\n<\/ul>\n\n<h4>1.5<\/h4>\n\n<ul>\n<li>\ud83c\udf40 Test SMS Message feature under Settings page.<\/li>\n<\/ul>\n\n<h4>1.4.7<\/h4>\n\n<ul>\n<li>Language supported.<\/li>\n<\/ul>\n\n<h4>1.4.5<\/h4>\n\n<ul>\n<li>PHP5.3 supported.<\/li>\n<\/ul>\n\n<h4>1.4.4<\/h4>\n\n<ul>\n<li>Doc updates.<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li><em>API<\/em> Silent install mode to avoid redirecting to settings by defining const <code>SILENCE_INSTALL<\/code><\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li><em>API<\/em> Generated link defaults to expire in 7 days.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li><em>API<\/em> New function <code>dologin_gen_link( 'my_plugin' )<\/code> API to generate a link for current user.<\/li>\n<\/ul>\n\n<h4>1.4<\/h4>\n\n<ul>\n<li>\ud83c\udf40 Passwordless login link.<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>SMS PHP Warning fix.<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>REST warning fix.<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>GUI cosmetic.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>\ud83d\udc1e Fixed a bug that caused not enabled SMS WP failed to login.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>PHP Notice fix.<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>\ud83c\udf40 SMS login support.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Auto redirect to setting page after activation.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Doc improvement.<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>\ud83c\udf40 XMLRPC protection.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>\ud83d\udc1e Auto upgrade can now check latest version correctly.<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>\ud83c\udf40 <em>New<\/em> Display login failure log.<\/li>\n<li>\ud83c\udf40 <em>New<\/em> GDPR compliance.<\/li>\n<li>\ud83c\udf40 <em>New<\/em> Auto upgrade.<\/li>\n<li><em>GUI<\/em> Setting link shortcut from plugin page.<\/li>\n<li><em>GUI<\/em> Display security status on login page.<\/li>\n<li>\ud83d\udc1e Stale settings shown after successfully saved.<\/li>\n<li>\ud83d\udc1e Duration setting can now be saved correctly.<\/li>\n<li>\ud83d\udc1e Fully saved geo location failure log.<\/li>\n<\/ul>\n\n<h4>1.0 - Sep 27 2019<\/h4>\n\n<ul>\n<li>Initial Release.<\/li>\n<\/ul>","raw_excerpt":"Easy Login. 2FA login. Passwordless login. Cloudflare Turnstile reCAPTCHA. GeoLocation (Continent\/Country\/City)\/IP range to limit login attempts.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/109408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=109408"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wpdo5ea"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=109408"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=109408"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=109408"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=109408"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=109408"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=109408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}