{"id":250237,"date":"2025-09-13T11:18:26","date_gmt":"2025-09-13T11:18:26","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/jay-login-register\/"},"modified":"2026-02-15T16:12:33","modified_gmt":"2026-02-15T16:12:33","slug":"jay-login-register","status":"publish","type":"plugin","link":"https:\/\/it.wordpress.org\/plugins\/jay-login-register\/","author":23296653,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.6.05","stable_tag":"2.6.05","tested":"6.9.4","requires":"5.5","requires_php":"","requires_plugins":null,"header_name":"JAY Login & Register","header_author":"Jayarsiech","header_description":"A secure and modern login and registration plugin using mobile number and OTP, compatible with the Digits plugin and iPanel SMS gateway.","assets_banners_color":"659e93","last_updated":"2026-02-15 16:12:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/instagram.com\/jayarsiech","rating":5,"author_block_rating":0,"active_installs":60,"downloads":2180,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"jayarsiech","date":"2025-09-13 11:22:07"},"1.1.0":{"tag":"1.1.0","author":"jayarsiech","date":"2025-09-13 11:32:24"},"1.1.1":{"tag":"1.1.1","author":"jayarsiech","date":"2025-09-13 11:28:24"},"2.1.0":{"tag":"2.1.0","author":"jayarsiech","date":"2025-09-13 12:45:36"},"2.1.1":{"tag":"2.1.1","author":"jayarsiech","date":"2025-09-18 11:23:21"},"2.1.10":{"tag":"2.1.10","author":"jayarsiech","date":"2025-10-09 09:56:27"},"2.1.11":{"tag":"2.1.11","author":"jayarsiech","date":"2025-10-11 18:15:05"},"2.1.12":{"tag":"2.1.12","author":"jayarsiech","date":"2025-10-13 13:00:05"},"2.1.13":{"tag":"2.1.13","author":"jayarsiech","date":"2025-10-13 16:46:31"},"2.1.14":{"tag":"2.1.14","author":"jayarsiech","date":"2025-10-14 15:11:50"},"2.1.15":{"tag":"2.1.15","author":"jayarsiech","date":"2025-10-15 15:05:06"},"2.1.16":{"tag":"2.1.16","author":"jayarsiech","date":"2025-10-18 16:38:59"},"2.1.17":{"tag":"2.1.17","author":"jayarsiech","date":"2025-10-19 18:14:03"},"2.1.18":{"tag":"2.1.18","author":"jayarsiech","date":"2025-10-26 23:04:59"},"2.1.19":{"tag":"2.1.19","author":"jayarsiech","date":"2025-10-30 16:37:27"},"2.1.2":{"tag":"2.1.2","author":"jayarsiech","date":"2025-09-18 17:30:26"},"2.1.20":{"tag":"2.1.20","author":"jayarsiech","date":"2025-11-06 14:46:20"},"2.1.21":{"tag":"2.1.21","author":"jayarsiech","date":"2025-11-08 11:22:28"},"2.1.3":{"tag":"2.1.3","author":"jayarsiech","date":"2025-09-20 11:58:34"},"2.1.4":{"tag":"2.1.4","author":"jayarsiech","date":"2025-09-20 12:05:04"},"2.1.6":{"tag":"2.1.6","author":"jayarsiech","date":"2025-09-22 17:08:51"},"2.1.7":{"tag":"2.1.7","author":"jayarsiech","date":"2025-09-22 17:13:50"},"2.1.8":{"tag":"2.1.8","author":"jayarsiech","date":"2025-09-29 15:39:07"},"2.1.9":{"tag":"2.1.9","author":"jayarsiech","date":"2025-09-29 17:05:53"},"2.2.01":{"tag":"2.2.01","author":"jayarsiech","date":"2025-11-30 15:46:20"},"2.3.01":{"tag":"2.3.01","author":"jayarsiech","date":"2025-12-03 15:16:58"},"2.4.01":{"tag":"2.4.01","author":"jayarsiech","date":"2025-12-06 16:54:20"},"2.5.01":{"tag":"2.5.01","author":"jayarsiech","date":"2025-12-13 07:20:00"},"2.6.01":{"tag":"2.6.01","author":"jayarsiech","date":"2025-12-24 13:29:28"},"2.6.02":{"tag":"2.6.02","author":"jayarsiech","date":"2026-01-06 12:22:03"},"2.6.03":{"tag":"2.6.03","author":"jayarsiech","date":"2026-01-06 16:20:05"},"2.6.04":{"tag":"2.6.04","author":"jayarsiech","date":"2026-02-03 12:25:18"},"2.6.05":{"tag":"2.6.05","author":"jayarsiech","date":"2026-02-15 16:12:33"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3360970,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3360991,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":{"jay-login-register\/content-lock":{"name":"jay-login-register\/content-lock","title":"\u0642\u0641\u0644 \u0645\u062d\u062a\u0648\u0627 (Jay)"}},"tagged_versions":["1.0.0","1.1.0","1.1.1","2.1.0","2.1.1","2.1.10","2.1.11","2.1.12","2.1.13","2.1.14","2.1.15","2.1.16","2.1.17","2.1.18","2.1.19","2.1.2","2.1.20","2.1.21","2.1.3","2.1.4","2.1.6","2.1.7","2.1.8","2.1.9","2.2.01","2.3.01","2.4.01","2.5.01","2.6.01","2.6.02","2.6.03","2.6.04","2.6.05"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3377545,"resolution":"1","location":"assets","locale":""},"screenshot-10.jpg":{"filename":"screenshot-10.jpg","revision":3366351,"resolution":"10","location":"assets","locale":""},"screenshot-11.jpg":{"filename":"screenshot-11.jpg","revision":3377545,"resolution":"11","location":"assets","locale":""},"screenshot-12.jpg":{"filename":"screenshot-12.jpg","revision":3377545,"resolution":"12","location":"assets","locale":""},"screenshot-13.jpg":{"filename":"screenshot-13.jpg","revision":3377545,"resolution":"13","location":"assets","locale":""},"screenshot-14.jpg":{"filename":"screenshot-14.jpg","revision":3377545,"resolution":"14","location":"assets","locale":""},"screenshot-15.jpg":{"filename":"screenshot-15.jpg","revision":3413130,"resolution":"15","location":"assets","locale":""},"screenshot-16.jpg":{"filename":"screenshot-16.jpg","revision":3413130,"resolution":"16","location":"assets","locale":""},"screenshot-17.jpg":{"filename":"screenshot-17.jpg","revision":3413130,"resolution":"17","location":"assets","locale":""},"screenshot-18.jpg":{"filename":"screenshot-18.jpg","revision":3413130,"resolution":"18","location":"assets","locale":""},"screenshot-19.jpg":{"filename":"screenshot-19.jpg","revision":3464255,"resolution":"19","location":"assets","locale":""},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3377545,"resolution":"2","location":"assets","locale":""},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3377545,"resolution":"3","location":"assets","locale":""},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3377545,"resolution":"4","location":"assets","locale":""},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3377545,"resolution":"5","location":"assets","locale":""},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3377545,"resolution":"6","location":"assets","locale":""},"screenshot-7.jpg":{"filename":"screenshot-7.jpg","revision":3361029,"resolution":"7","location":"assets","locale":""},"screenshot-8.jpg":{"filename":"screenshot-8.jpg","revision":3361061,"resolution":"8","location":"assets","locale":""},"screenshot-9.jpg":{"filename":"screenshot-9.jpg","revision":3361061,"resolution":"9","location":"assets","locale":""}},"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[187008,1655,602,9210,2059],"plugin_category":[38],"plugin_contributors":[246628],"plugin_business_model":[],"class_list":["post-250237","plugin","type-plugin","status-publish","hentry","plugin_tags-digits","plugin_tags-gravity-forms","plugin_tags-login","plugin_tags-otp","plugin_tags-register","plugin_category-authentication","plugin_contributors-jayarsiech","plugin_committers-jayarsiech"],"banners":{"banner":"https:\/\/ps.w.org\/jay-login-register\/assets\/banner-772x250.png?rev=3360991","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/jay-login-register\/assets\/icon-256x256.png?rev=3360970","icon_2x":"https:\/\/ps.w.org\/jay-login-register\/assets\/icon-256x256.png?rev=3360970","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-1.jpg?rev=3377545","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-2.jpg?rev=3377545","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-3.jpg?rev=3377545","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-4.jpg?rev=3377545","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-5.jpg?rev=3377545","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-6.jpg?rev=3377545","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-7.jpg?rev=3361029","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-8.jpg?rev=3361061","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-9.jpg?rev=3361061","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-10.jpg?rev=3366351","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-11.jpg?rev=3377545","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-12.jpg?rev=3377545","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-13.jpg?rev=3377545","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-14.jpg?rev=3377545","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-15.jpg?rev=3413130","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-16.jpg?rev=3413130","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-17.jpg?rev=3413130","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-18.jpg?rev=3413130","caption":""},{"src":"https:\/\/ps.w.org\/jay-login-register\/assets\/screenshot-19.jpg?rev=3464255","caption":""}],"raw_content":"<!--section=description-->\n<p>Developed with \u2764\ufe0f in Iran. \ud83c\uddee\ud83c\uddf7<\/p>\n\n<p>JAY Login &amp; Register is not just a login plugin; it is a <strong>complete authentication and access control ecosystem<\/strong> for WordPress.<\/p>\n\n<p>While it creates a seamless <strong>Mobile OTP (One-Time Password)<\/strong> login and registration flow compatible with Digits, its true power lies in its <strong>Advanced Content Restriction<\/strong> capabilities. Whether you are selling courses, running a membership site, or simply want to grow your user base, JAY allows you to lock specific parts of your content and unlock them effortlessly via an inline AJAX form or smart redirects.<\/p>\n\n<p><strong>Why JAY Login &amp; Register?<\/strong>\n* <strong>Performance Optimized: Built-in smart HTML Minifier automatically compresses shortcode output and AJAX responses, removing unnecessary whitespace to ensure perfect layout compatibility with all themes.\n* **Beyond Basic Login:<\/strong> Don't just verify users; engage them. Lock exclusive content inside your blog posts and reveal it instantly after a quick SMS\/Email verification.\n* <strong>Editor Friendly:<\/strong> Now featuring a native <strong>Gutenberg Container Block<\/strong> and smart Classic Editor buttons for protecting content without coding.\n* <strong>Maximum Compatibility:<\/strong> Works perfectly with <strong>Gravity Forms<\/strong> (includes a dedicated OTP field Addon), <strong>Elementor<\/strong>, and <strong>WooCommerce<\/strong>, ensuring scripts load correctly even after AJAX login.<\/p>\n\n<h3>\ud83c\udf1f NEW: Advanced User Panel &amp; Profile Builder<\/h3>\n\n<p>Transform how users interact with their profiles. We have added a powerful <strong>Drag &amp; Drop Form Builder<\/strong> for the user panel:\n* <strong>Custom Fields:<\/strong> Create unlimited fields (Text, Select, Radio, Checkbox, Date).\n* <strong>Smart Conditional Logic (The Killer Feature):<\/strong>\n    * <strong>Server-Side Logic:<\/strong> Show\/Hide fields based on existing User Meta keys (e.g., show \"Vendor Settings\" only if the user has the 'is_vendor' meta).\n    * <strong>Client-Side Logic:<\/strong> Show\/Hide fields instantly based on other fields' values (e.g., show \"Military Service Status\" only if \"Gender\" is \"Male\").\n    * Supports complex <strong>AND\/OR<\/strong> logic groups.\n* <strong>Native Avatar Upload:<\/strong> Users can upload profile pictures directly to the WordPress Media Library (compatible with standard WordPress functions like <code>get_avatar<\/code>).\n* <strong>Jalali Date Picker:<\/strong> Full support for Persian dates in profile fields.\n* <strong>Secure Validation:<\/strong> All conditional logic is re-validated on the server to prevent tampering via Inspect Element.<\/p>\n\n<h3>\ud83d\ude80 NEW: Gravity Forms OTP Add-on (Fully Integrated)<\/h3>\n\n<p>We've built a native Add-on for Gravity Forms! You can now verify user phone numbers directly inside any Gravity Form before submission.\n* <strong>Native Field:<\/strong> Adds a dedicated \"JAY Mobile Verification\" field to the Gravity Forms editor.\n* <strong>Seamless AJAX Validation:<\/strong> Verifies the OTP code via AJAX without breaking the form's natural flow.\n* <strong>Auto-Login:<\/strong> Optionally log in or register the user automatically upon successful form submission.\n* <strong>Anti-Fraud Security:<\/strong> Fully connected to JAY's global IP and Phone number Lockout system to prevent SMS bombing on your forms.<\/p>\n\n<h3>Key Features<\/h3>\n\n<ul>\n<li><strong>Protect Specific Content Sections (Shortcode):<\/strong> Use the <code>[jay_content_lock]<\/code> shortcode to restrict access to portions of your content within posts and pages, independent of the full-page meta box settings. Choose between two modes:\n\n<ul>\n<li><strong>Redirect Mode:<\/strong> Shows a blurred preview and prompts non-logged-in users to log in by redirecting them to the main login page. After successful login, they are returned to the original page, and the specific locked section can be highlighted.<\/li>\n<li><strong>Inline Mode:<\/strong> Displays a compact login\/registration form directly within the content area where the shortcode is placed. This allows users to authenticate seamlessly without navigating away from the current page, unlocking the content immediately upon success.<\/li>\n<\/ul><\/li>\n<li><p><strong>Enhanced Editor Experience (New):<\/strong><\/p>\n\n<ul>\n<li><strong>Gutenberg Container Block:<\/strong> A dedicated \"Content Lock\" block that allows you to drag and drop other blocks (images, forms, text) inside it effortlessly.<\/li>\n<li><strong>Smart Classic Editor:<\/strong> Simply click on any existing shortcode to edit its settings instantly. No need to select the text manually.<\/li>\n<li><strong>Advanced Compatibility:<\/strong> Solves loading issues with complex plugins like Gravity Forms or Elementor inside locked content by using smart page reloading.\n<strong>Advanced User Data Collection (New)<\/strong><\/li>\n<\/ul><\/li>\n<li><p><strong>Custom Fields Builder:<\/strong> Easily add unlimited custom fields to your registration form directly from the settings. Supports:<\/p>\n\n<ul>\n<li>Text Inputs<\/li>\n<li>Dropdown Selects<\/li>\n<li>Radio Buttons<\/li>\n<li>Checkboxes<\/li>\n<\/ul><\/li>\n<li><strong>Custom Username Support:<\/strong> Allow users to choose a unique \"Username\" during registration with live AJAX availability checking.<\/li>\n<li><strong>Smart Login:<\/strong> Users can now log in using their <strong>Mobile Number<\/strong>, <strong>Email<\/strong>, or <strong>Username<\/strong> seamlessly.<\/li>\n<\/ul>\n\n<p><strong>Core Login &amp; Registration Features<\/strong><\/p>\n\n<ul>\n<li><p><strong>Smart Login &amp; Registration:<\/strong> Automatically detects if a user's mobile number is new (directing to registration) or existing (directing to login).<\/p><\/li>\n<li><p><strong>Digits Plugin Compatibility:<\/strong> Seamlessly recognizes and logs in users previously registered with the Digits plugin.<\/p><\/li>\n<li><p><strong>Optional Identity Verification:<\/strong> Enable or disable the requirement for users to provide a National ID or Passport number during registration, with built-in duplicate ID prevention. The system intelligently asks for this information only once.<\/p><\/li>\n<li><p><strong>Password &amp; Phone Management:<\/strong> Logged-in users can easily change their registered mobile number or update their password through a dedicated shortcode.<\/p><\/li>\n<li><p><strong>Profile Details:<\/strong> Option to enable \"First Name\" and \"Last Name\" fields in the final registration step to collect user details.<\/p><\/li>\n<\/ul>\n\n<p><strong>Advanced Security &amp; Anti-Fraud<\/strong><\/p>\n\n<ul>\n<li><p><strong>Multiple CAPTCHA Options:<\/strong> Choose from four levels of protection to prevent bot attacks:<\/p><\/li>\n<li><p><strong>Disabled:<\/strong> No CAPTCHA.<\/p><\/li>\n<li><p><strong>Simple Math CAPTCHA:<\/strong> A basic math question (addition, subtraction, multiplication, division).<\/p><\/li>\n<li><p><strong>Invisible Honeypot:<\/strong> An invisible security trap for bots that doesn't interrupt the user experience.<\/p><\/li>\n<li><p><strong>Google reCAPTCHA v3 (Recommended):<\/strong> The most secure, invisible option to intelligently identify bots without user friction.<\/p><\/li>\n<\/ul>\n\n<h3>Social &amp; Gateway Support<\/h3>\n\n<ul>\n<li><strong>Google Social Login:<\/strong> Enable one-click login and registration using Google accounts. This provides a fast, secure, and password-free authentication method, automatically creating an account for new users or logging in existing ones based on their email.<\/li>\n<li><strong>Bale OTP (Safir API):<\/strong> A cost-effective alternative to SMS. Users who have the Bale messenger app can choose to receive their verification code directly in the app.<\/li>\n<li><strong>Eitaa Social Login:<\/strong> Seamless and automatic login\/registration for users coming from Eitaa Mini Apps. Provides a frictionless experience with secure authentication using the official Eitaa SDK.<\/li>\n<li><strong>Multi-Gateway SMS Support:<\/strong> Natively integrates with popular Iranian SMS providers:<\/li>\n<li>iPPanel (and providers like FarazSMS, ModirPayamak, Taban SMS)<\/li>\n<li>Kavenegar<\/li>\n<li>SMS.ir<\/li>\n<li><p>melipayamak<\/p><\/li>\n<li><p><strong>Voice OTP Support:<\/strong> In addition to SMS, deliver verification codes via automated voice calls using the Kavenegar gateway.<\/p><\/li>\n<\/ul>\n\n<p><strong>Advanced Email &amp; SMTP Features<\/strong><\/p>\n\n<ul>\n<li><strong>Email OTP for Login &amp; Registration:<\/strong> Allow users to register and log in securely using a one-time password sent to their email. The registration flow now requires email verification before password creation for enhanced security.<\/li>\n<li><strong>Built-in SMTP Mailer:<\/strong> Configure the plugin to send emails directly via SMTP for maximum reliability and deliverability, bypassing the default WordPress mail function.<\/li>\n<li><strong>Customizable Email Templates:<\/strong> Full control over the subject and body of the OTP email using a rich text editor and helpful shortcodes.<\/li>\n<li><strong>Test Email Functionality:<\/strong> Easily send a test email from the settings panel to verify that your SMTP configuration is working correctly.<\/li>\n<\/ul>\n\n<p><strong>Advanced Brute-Force Protection:<\/strong><\/p>\n\n<ul>\n<li><p><strong>Protect against OTP and CAPTCHA guessing attacks with configurable settings for:<\/strong><\/p><\/li>\n<li><p>Maximum failed attempts.<\/p><\/li>\n<li>Lockout duration (in minutes).<\/li>\n<li><p>Blocking method (by phone number, IP address, or both).<\/p><\/li>\n<li><p><strong>Hide wp-login.php:<\/strong> Secure your site by completely hiding the default WordPress login page and redirecting all access to your custom login page.<\/p><\/li>\n<li><strong>Secure by Design:<\/strong> Built with WordPress security standards in mind, utilizing nonces in all AJAX communications and proper data sanitization.<\/li>\n<li><strong>Configurable OTP Settings:<\/strong> Customize the length of the OTP code and its validity period (in minutes), complete with a resend timer on the form.<\/li>\n<\/ul>\n\n<p><strong>Powerful Admin &amp; User Management<\/strong><\/p>\n\n<ul>\n<li><strong>Admin Area Access Control:<\/strong> Restrict access to the WordPress dashboard (\/wp-admin) based on specific user roles.<\/li>\n<li><strong>User Switching:<\/strong> For administrators and support staff, easily switch to any user's account to view the site from their perspective without needing their password.<\/li>\n<li><p><strong>Customizable User Columns:<\/strong> Take full control of the \"Users\" table in the admin area:<\/p><\/li>\n<li><p>Adds sortable \"Mobile Number\" and \"Jalali Registration Date\" columns.<\/p><\/li>\n<li>Allows hiding of default WordPress columns.<\/li>\n<li>Allows creating new custom columns based on any user meta key.<\/li>\n<\/ul>\n\n<h3>Seamless User Experience (UX)<\/h3>\n\n<ul>\n<li><strong>Smart Redirects:<\/strong> Automatically redirects users back to the page they were trying to access before logging in, creating a seamless and uninterrupted browsing experience.<\/li>\n<li><strong>Modern &amp; Customizable Form:<\/strong> A beautifully designed, modern form with an optional logo that can be uploaded from the settings panel.<\/li>\n<li><strong>Custom Landing Page:<\/strong> Set a specific default page to redirect users to after they log in or register.<\/li>\n<li><strong>Custom Logout URL:<\/strong> Create a user-friendly logout link (e.g., yoursite.com\/logout).<\/li>\n<li><strong>Logged-in Welcome:<\/strong> Users who are already logged in see a welcoming message with a countdown and an automatic redirect to their dashboard, instead of the login form.<\/li>\n<\/ul>\n\n<p><strong>Powerful Content &amp; Access Control<\/strong><\/p>\n\n<ul>\n<li><p><strong>Content Protection Meta Box:<\/strong> A powerful meta box on the post\/page editor allows you to restrict access to content based on:<\/p><\/li>\n<li><p>Whether the user is logged in.<\/p><\/li>\n<li>Specific user roles.<\/li>\n<li>Whether the user has a specific meta key in their profile.<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to third-party services to provide its full range of features. These are optional and only active when configured by the site administrator.<\/p>\n\n<ul>\n<li><p><strong>Bale (Safir OTP Service)<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Bale Messenger (developers.bale.ai).<\/li>\n<li><strong>Purpose:<\/strong> To send verification codes (OTP) directly to the user's Bale app as an alternative to SMS.<\/li>\n<li><strong>Data Sent:<\/strong> User's mobile number.<\/li>\n<li><strong>Link:<\/strong> <a href=\"https:\/\/developers.bale.ai\/otp-service\/getting-started\">Bale OTP Service Docs<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>iPPanel (and related gateways)<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> iPPanel (ippanel.com) and providers using its infrastructure (FarazSMS, ModirPayamak, etc.).<\/li>\n<li><strong>Purpose:<\/strong> To send SMS verification codes (OTP).<\/li>\n<li><strong>Data Sent:<\/strong> User's mobile number.<\/li>\n<li><strong>Link:<\/strong> <a href=\"https:\/\/ippanel.com\/privacy-policy\/\">iPPanel Privacy Policy<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Kavenegar<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Kavenegar (kavenegar.com).<\/li>\n<li><strong>Purpose:<\/strong> To send SMS or Voice verification codes (OTP).<\/li>\n<li><strong>Data Sent:<\/strong> User's mobile number.<\/li>\n<li><strong>Link:<\/strong> <a href=\"https:\/\/kavenegar.com\/rules.html\">Kavenegar Terms of Service<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>SMS.ir<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> SMS.ir (sms.ir).<\/li>\n<li><strong>Purpose:<\/strong> To send SMS verification codes (OTP).<\/li>\n<li><strong>Data Sent:<\/strong> User's mobile number.<\/li>\n<li><strong>Link:<\/strong> <a href=\"https:\/\/sms.ir\/\">SMS.ir Website<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>MeliPayamak<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> MeliPayamak (melipayamak.com).<\/li>\n<li><strong>Purpose:<\/strong> To send SMS verification codes (OTP).<\/li>\n<li><strong>Data Sent:<\/strong> User's mobile number.<\/li>\n<li><strong>Link:<\/strong> <a href=\"https:\/\/www.melipayamak.com\/\">MeliPayamak Website<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Google reCAPTCHA v3<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Google reCAPTCHA (google.com).<\/li>\n<li><strong>Purpose:<\/strong> To protect the login\/registration form from automated bots.<\/li>\n<li><strong>Data Sent:<\/strong> Hardware and software information, device data, and the user's IP address are sent to Google for analysis.<\/li>\n<li><strong>Links:<\/strong> <a href=\"https:\/\/policies.google.com\/privacy\">Google Privacy Policy<\/a> &amp; <a href=\"https:\/\/policies.google.com\/terms\">Google Terms of Service<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Service:<\/strong> Google Identity Services (Sign in with Google)<\/p>\n\n<ul>\n<li><strong>Provider:<\/strong> Google (google.com)<\/li>\n<li><strong>Purpose:<\/strong> To allow users to log in or register on your website with one click using their existing Google account.<\/li>\n<li><strong>Data Sent\/Received:<\/strong> When a user clicks the \"Sign in with Google\" button, they are redirected to Google for authentication. After a successful login, Google provides the website with an authorization code. Your server exchanges this code to securely receive the user's basic profile information (email address, name, and profile picture) to automatically create or log into their account.<\/li>\n<li><strong>Links:<\/strong> <a href=\"https:\/\/policies.google.com\/privacy\">Google Privacy Policy<\/a> &amp; <a href=\"https:\/\/policies.google.com\/terms\">Google Terms of Service<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Eitaa WebApp API<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Eitaa (eitaa.com).<\/li>\n<li><strong>Purpose:<\/strong> To provide social login functionality for users coming from Eitaa Mini Apps.<\/li>\n<li><strong>Data Sent:<\/strong> When a user authenticates, data is securely exchanged with Eitaa's servers for validation.<\/li>\n<li><strong>Link:<\/strong> <a href=\"https:\/\/developer.eitaa.com\/\">Eitaa Developer Docs<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Service:<\/strong> RayganSMS<\/p>\n\n<ul>\n<li><strong>Provider:<\/strong> RayganSMS (raygansms.com)<\/li>\n<li><strong>Purpose:<\/strong> To send SMS verification codes (OTP).<\/li>\n<li><strong>Data Sent:<\/strong> User's mobile number.<\/li>\n<li><strong>Link:<\/strong> <a href=\"https:\/\/raygansms.com\/\">RayganSMS Website<\/a><\/li>\n<\/ul><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>\u067e\u0648\u0634\u0647 <code>jay_login_register<\/code> \u0631\u0627 \u062f\u0631 \u0645\u0633\u06cc\u0631 <code>\/wp-content\/plugins\/<\/code> \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0627\u0641\u0632\u0648\u0646\u0647 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0645\u0646\u0648\u06cc '\u0627\u0641\u0632\u0648\u0646\u0647\u200c\u0647\u0627' \u062f\u0631 \u0648\u0631\u062f\u067e\u0631\u0633 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0628\u0647 \u0645\u0646\u0648\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a 'jay_login_register' \u062f\u0631 \u067e\u06cc\u0634\u062e\u0648\u0627\u0646 \u0631\u0641\u062a\u0647 \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0644\u0627\u0632\u0645 (API Key\u060c \u06a9\u062f \u067e\u062a\u0631\u0646 \u0648 ...) \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0634\u0648\u0631\u062a\u200c\u06a9\u062f <code>[jay_login_register_form]<\/code> \u0631\u0627 \u062f\u0631 \u0628\u0631\u06af\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \/ \u0639\u0636\u0648\u06cc\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f\u060c \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/li>\n<li>\u0634\u0648\u0631\u062a \u06a9\u062f <code>[jay_login_register_user_panel]<\/code> \u0631\u0627 \u062f\u0631 \u0628\u0631\u06af\u0647 \u0627\u06cc \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u067e\u0646\u0644 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f<\/li>\n<li>\u0628\u0631\u0627\u06cc \u0645\u062d\u0627\u0641\u0638\u062a \u0627\u0632 \u0645\u062d\u062a\u0648\u0627\u060c \u062f\u0631 \u0635\u0641\u062d\u0647 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0628\u0631\u06af\u0647 \u06cc\u0627 \u0646\u0648\u0634\u062a\u0647\u060c \u0627\u0632 \u00ab\u0628\u0627\u06a9\u0633 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u0633\u062a\u0631\u0633\u06cc jay_login_register\u00bb \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0627\u06cc\u06cc\u062f \u067e\u06cc\u0627\u0645\u06a9\u06cc \u062f\u0631 \u0641\u0631\u0645\u200c\u0633\u0627\u0632 \u06af\u0631\u0627\u0648\u06cc\u062a\u06cc\u060c \u0628\u0647 \u0645\u0646\u0648\u06cc \"\u0627\u062f\u0627\u0646\u200c\u0647\u0627\" \u062f\u0631 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0641\u0632\u0648\u0646\u0647 \u0628\u0631\u0648\u06cc\u062f \u0648 \u0627\u062f\u0627\u0646 Gravity Forms \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"%D8%A7%D8%B2%20%DA%86%D9%87%20%D8%B3%D8%B1%D9%88%DB%8C%D8%B3%E2%80%8C%D9%87%D8%A7%DB%8C%DB%8C%20%D8%A8%D8%B1%D8%A7%DB%8C%20%D8%A7%D8%B1%D8%B3%D8%A7%D9%84%20%DA%A9%D8%AF%20%D8%AA%D8%A7%DB%8C%DB%8C%D8%AF%20%D9%BE%D8%B4%D8%AA%DB%8C%D8%A8%D8%A7%D9%86%DB%8C%20%D9%85%DB%8C%E2%80%8C%D8%B4%D9%88%D8%AF%D8%9F\"><h3>\u0627\u0632 \u0686\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u062f \u062a\u0627\u06cc\u06cc\u062f \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f\u061f<\/h3><\/dt>\n<dd><p>\u0627\u06cc\u0646 \u0627\u0641\u0632\u0648\u0646\u0647 \u0627\u0632 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u062f \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f:\n* <strong>\u067e\u06cc\u0627\u0645\u06a9:<\/strong> \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u0646\u0644\u200c\u0647\u0627\u06cc iPPanel, \u0641\u0631\u0627\u0632 \u0627\u0633 \u0627\u0645 \u0627\u0633, \u0645\u062f\u06cc\u0631 \u067e\u06cc\u0627\u0645\u06a9, \u062a\u0627\u0628\u0627\u0646 \u0627\u0633 \u0627\u0645 \u0627\u0633, \u06a9\u0627\u0648\u0647 \u0646\u06af\u0627\u0631, \u0645\u0644\u06cc \u067e\u06cc\u0627\u0645\u06a9, SMS.ir, RayganSMS\n* <strong>\u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646 \u0628\u0644\u0647:<\/strong> \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0633\u0631\u0648\u06cc\u0633 OTP \u0633\u0641\u06cc\u0631 \u0628\u0644\u0647 (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0627\u0631\u0632\u0627\u0646\u200c\u062a\u0631 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u0645\u06a9).\n* <strong>\u062a\u0645\u0627\u0633 \u0635\u0648\u062a\u06cc:<\/strong> \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u0646\u0644 \u06a9\u0627\u0648\u0647 \u0646\u06af\u0627\u0631.\n* <strong>\u0627\u06cc\u0645\u06cc\u0644:<\/strong> \u0627\u0632 \u0637\u0631\u06cc\u0642 SMTP \u06cc\u0627 \u062a\u0627\u0628\u0639 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0648\u0631\u062f\u067e\u0631\u0633.<\/p><\/dd>\n<dt id=\"%D8%A2%DB%8C%D8%A7%20%D9%85%DB%8C%E2%80%8C%D8%AA%D9%88%D8%A7%D9%86%D9%85%20%D8%B7%D9%88%D9%84%20%DA%A9%D8%AF%20%D8%AA%D8%A7%DB%8C%DB%8C%D8%AF%20%D8%B1%D8%A7%20%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1%20%D8%AF%D9%87%D9%85%D8%9F\"><h3>\u0622\u06cc\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0645 \u0637\u0648\u0644 \u06a9\u062f \u062a\u0627\u06cc\u06cc\u062f \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u0645\u061f<\/h3><\/dt>\n<dd><p>\u0628\u0644\u0647\u060c \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0635\u0641\u062d\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0641\u0632\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0637\u0648\u0644 \u06a9\u062f \u062a\u0627\u06cc\u06cc\u062f \u0631\u0627 \u0628\u06cc\u0646 \u06f4 \u062a\u0627 \u06f8 \u0631\u0642\u0645 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f.<\/p><\/dd>\n<dt id=\"%DA%A9%D9%BE%DA%86%D8%A7%DB%8C%20honey%20pot\"><h3>\u06a9\u067e\u0686\u0627\u06cc honey pot<\/h3><\/dt>\n<dd><p>\u0627\u06cc\u0646 \u06a9\u067e\u0686\u0627 \u06cc\u06a9 \u0641\u06cc\u0644\u062f \u0628\u0631\u0627\u06cc \u0631\u0628\u0627\u062a \u0647\u0627 \u0645\u06cc\u0633\u0627\u0632\u062f \u0627\u0645\u0627 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0622\u0646 \u0628\u06cc \u062e\u0628\u0631 \u0627\u0633\u062a \n\u0646\u06a9\u062a\u0647: \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0641\u06cc\u0644\u062f \u0632\u0645\u0627\u0646 \u067e\u0631 \u06a9\u0631\u062f\u0646 \u0641\u06cc\u0644\u062f \u0647\u0627 \u0647\u0645 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u0634\u0648\u062f \u06cc\u0639\u0646\u06cc \u0686\u0646\u0627\u0646\u0686\u0647 \u0631\u0628\u0627\u062a \u0647\u0627 \u0641\u06cc\u0644\u062f \u0645\u062e\u0641\u06cc \u0634\u0645\u0627 \u0631\u0627 \u067e\u0631 \u0646\u06a9\u0646\u0646\u062f \u0628\u0627\u06cc\u062f \u0633\u0631\u0639\u062a \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u067e\u0631 \u06a9\u0631\u062f\u0646 \u0641\u06cc\u0644\u062f \u0627\u0635\u0644\u06cc \u0631\u0639\u0627\u06cc\u062a \u06a9\u0646\u0646\u062f \u0645\u06af\u0631\u0646\u0647 \u0627\u0632 \u0637\u0631\u0641 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0627\u0632 \u0647\u0645 \u0628\u0644\u0627\u06a9 \u0645\u06cc\u0634\u0648\u062f\n\u067e\u0633 \u0627\u0632 \u0641\u0639\u0627\u0644 \u0633\u0627\u0632\u06cc \u0627\u06af\u0631 \u0627\u0632 \u0627\u0641\u0632\u0648\u0646\u0647 \u0647\u0627\u06cc \u06a9\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u06a9\u0646\u06cc\u062f \u06cc\u06a9\u0628\u0627\u0631 \u06a9\u0634 \u0631\u0627 \u067e\u0627\u06a9 \u06a9\u0646\u06cc\u062f<\/p><\/dd>\n<dt id=\"%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D8%A7%D9%81%D8%B2%D9%88%D9%86%D9%87\"><h3>\u0622\u0645\u0648\u0632\u0634 \u0627\u0641\u0632\u0648\u0646\u0647<\/h3><\/dt>\n<dd><p>\u0628\u0639\u062f \u0627\u0632 \u0646\u0635\u0628 \u0627\u0641\u0632\u0648\u0646\u0647 \u062f\u0631 \u0632\u06cc\u0631 \u0645\u0646\u0648 \u0628\u0647 \u0646\u0627\u0645 \u0622\u0645\u0648\u0632\u0634 \u062f\u0627\u0631\u062f \u06a9\u0647 \u062a\u0645\u0627\u0645\u06cc \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u0631 \u0622\u0646\u062c\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0628\u0627 \u0632\u0628\u0627\u0646 \u0631\u0627\u062d\u062a \u0622\u0645\u0648\u0632\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20up%20google%20login%3F\"><h3>How do I set up Google Login?<\/h3><\/dt>\n<dd><p>Setting up Google Login involves creating credentials in the Google Cloud Console. Follow these steps carefully:<\/p>\n\n<ol>\n<li><strong>Go to Google Cloud Console:<\/strong> Log in to the <a href=\"https:\/\/console.cloud.google.com\/apis\/credentials\">Google Cloud Console Credentials page<\/a>.<\/li>\n<li><strong>Configure Consent Screen (if needed):<\/strong> If this is your first time, you may need to configure your \"OAuth consent screen\".\n\n<ul>\n<li>Choose <strong>External<\/strong> as the User Type and click CREATE.<\/li>\n<li>Fill in the required fields: \"App name\" and \"User support email\".<\/li>\n<li>Click \"SAVE AND CONTINUE\" at the bottom. You don't need to fill out the other steps.<\/li>\n<li>Navigate back to the <strong>Credentials<\/strong> tab from the left-hand menu.<\/li>\n<\/ul><\/li>\n<li><strong>Create Credentials:<\/strong>\n\n<ul>\n<li>At the top of the page, click <strong>+ CREATE CREDENTIALS<\/strong>.<\/li>\n<li>Select <strong>OAuth client ID<\/strong> from the dropdown.<\/li>\n<\/ul><\/li>\n<li><strong>Configure Client ID:<\/strong>\n\n<ul>\n<li>For <strong>Application type<\/strong>, you <strong>must<\/strong> select <strong>Web application<\/strong>.<\/li>\n<li>For <strong>Name<\/strong>, enter a descriptive name for your own reference (e.g., My Website Login). This is not shown to users.<\/li>\n<\/ul><\/li>\n<li><strong>Add Redirect URI:<\/strong>\n\n<ul>\n<li>Under the <strong>Authorized redirect URIs<\/strong> section, click <strong>ADD URI<\/strong>.<\/li>\n<li>Paste the redirect URL exactly as it is shown in your plugin's settings page (under the Google Login instructions). It will look like this: <code>https:\/\/yourwebsite.com\/?jay-google-auth=1<\/code><\/li>\n<\/ul><\/li>\n<li><strong>Create and Copy Keys:<\/strong>\n\n<ul>\n<li>Click the blue <strong>CREATE<\/strong> button.<\/li>\n<li>A pop-up will appear showing your <strong>Client ID<\/strong> and <strong>Client Secret<\/strong>.<\/li>\n<li>Copy these two values and paste them into the corresponding fields in the plugin's settings under the \"Social Login\" tab.<\/li>\n<\/ul><\/li>\n<\/ol><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.6.05<\/h4>\n\n<ul>\n<li><strong>New Feature:<\/strong> Added official <strong>Gravity Forms Add-on<\/strong>. Easily add mobile OTP verification to any Gravity Form.<\/li>\n<li><strong>Feature:<\/strong> Built-in Auto-login &amp; Auto-register option for users verifying their number via Gravity Forms.<\/li>\n<li><strong>Security:<\/strong> Integrated Gravity Forms verification with the global IP\/Phone Lockout and Brute-Force protection system.<\/li>\n<li><strong>Improvement:<\/strong> Introduced an elegant and isolated UI for the Add-ons manager inside the WordPress dashboard.<\/li>\n<li><strong>Improvement:<\/strong> Replaced external icons with high-performance inline SVG vectors.<\/li>\n<li><strong>Fix:<\/strong> Resolved WordPress Plugin Checker warnings regarding Nonce Verification and Database direct queries using safe practices.<\/li>\n<\/ul>\n\n<h4>2.6.04<\/h4>\n\n<p>Release Date: February 3, 2026<\/p>\n\n<p>Security Update<\/p>\n\n<p>SECURITY: Fixed authenticated privilege escalation vulnerability (CVE-2025-15100)<\/p>\n\n<p>Implemented three-layer meta key validation (Blacklist + Whitelist protection)\nAdded wildcard protection for all wp_* keys\nEnhanced profile update AJAX handler security\nEnhanced registration meta field handling security\nEnhanced inline form registration security\nFixed: Added explicit whitelist validation for custom user meta fields\nFixed: Blocked sensitive WordPress meta keys from being modified\nFixed: Implemented developer hooks for field customization\nFixed: Added security action hook for monitoring suspicious attempts\nImproved: Enhanced input validation across all user meta update operations\nCompatibility<\/p>\n\n<p>Tested up to: WordPress 6.9\nDevelopers<\/p>\n\n<p>Added filter: jay_login_register_allowed_profile_fields - Customize allowed meta fields\nAdded filter: jay_login_register_disallowed_meta_keys - Customize blocked meta keys\nAdded action: jay_login_register_suspicious_meta_update - Monitor suspicious attempts<\/p>\n\n<h4>2.6.01<\/h4>\n\n<ul>\n<li><strong>Performance:<\/strong> Introduced a smart on-the-fly <strong>HTML Minifier<\/strong> engine to strip whitespace from shortcodes and AJAX responses, ensuring clean rendering and compatibility with all themes.<\/li>\n<li><strong>Security &amp; Standards:<\/strong> Extensive codebase refactoring to strictly follow <strong>WordPress.org Coding Standards<\/strong>.<\/li>\n<li><strong>Security:<\/strong> Applied rigorous input sanitization, unslashing, and output escaping across all AJAX handlers and settings pages.<\/li>\n<li><strong>Improvement:<\/strong> Optimized database queries in the User Permission module to prevent slow query warnings.<\/li>\n<li><strong>Fix:<\/strong> Resolved Regex delimiter issues in the minification logic to prevent server warnings.<\/li>\n<\/ul>\n\n<h4>2.5.01<\/h4>\n\n<ul>\n<li><strong>SECURITY FIX:<\/strong> Addressed WordPress coding standards regarding input sanitization (phpcs warnings).<\/li>\n<li><strong>Fix:<\/strong> Minor improvements in the Ajax handler for file uploads.<\/li>\n<\/ul>\n\n<h4>2.5.0<\/h4>\n\n<ul>\n<li><strong>SECURITY FIX:<\/strong> Critical authentication bypass vulnerability fixed in the User Switching module (CVE-2025-14440). Special thanks to kr0d and the WP Security Team.<\/li>\n<li><strong>New Feature:<\/strong> Advanced <strong>User Panel Form Builder<\/strong> with Drag &amp; Drop interface.<\/li>\n<li><strong>New Feature:<\/strong> <strong>Conditional Logic<\/strong> for User Panel fields (Show\/Hide fields based on Meta Keys or other field values with AND\/OR support).<\/li>\n<li><strong>New Feature:<\/strong> Native <strong>Avatar Upload<\/strong> integrated with WordPress Media Library.<\/li>\n<li><strong>New Feature:<\/strong> Repeater functionality for conditional logic rules.<\/li>\n<li><strong>Improvement:<\/strong> Enhanced security validation for all user panel inputs (Server-side logic checks).<\/li>\n<li><strong>Improvement:<\/strong> Fixed RTL styling issues for Select boxes in the User Panel.<\/li>\n<\/ul>\n\n<h4>2.4.01<\/h4>\n\n<ul>\n<li><strong>New Feature:<\/strong> Added a <strong>Global Custom Fields Builder<\/strong>. Admins can now add Text, Select, Radio, and Checkbox fields to the registration form via settings.<\/li>\n<li><strong>New Feature:<\/strong> Added optional <strong>Username<\/strong> field for registration with live AJAX validation (availability &amp; format check).<\/li>\n<li><strong>Improvement:<\/strong> Enhanced the main login form to accept <strong>Mobile<\/strong>, <strong>Email<\/strong>, or <strong>Username<\/strong> intelligently in a single input field.<\/li>\n<li><strong>Improvement:<\/strong> Unified \"First Name\" and \"Last Name\" settings into a single toggle for better UX.<\/li>\n<li><strong>Style:<\/strong> Applied modern glassmorphism styling to custom Radio buttons and Checkboxes.<\/li>\n<li><strong>Fix:<\/strong> Resolved session errors when requesting OTP for a user logged in via Username.<\/li>\n<li><strong>Fix:<\/strong> Fixed \"0\" response issue in AJAX handlers for logged-in administrators during testing.<\/li>\n<li><strong>Security:<\/strong> Enhanced sanitization for custom field data storage.<\/li>\n<li><strong>New Feature:<\/strong> Added options to collect First Name and Last Name during registration.<\/li>\n<li><strong>Fix:<\/strong> Resolved the issue where the \"Content Lock\" button was missing in the Gutenberg block editor.<\/li>\n<li><strong>Improvement:<\/strong> Optimized editor scripts for better performance and security.<\/li>\n<\/ul>\n\n<h4>2.3.01<\/h4>\n\n<ul>\n<li><strong>Feature:<\/strong> Introduced a new <strong>Gutenberg Container Block<\/strong> for easier content locking. You can now drag and drop content inside the lock block.<\/li>\n<li><strong>Improvement:<\/strong> Enhanced Classic Editor button with <strong>Smart Detection<\/strong>. Clicking inside a shortcode now automatically switches the button to \"Edit Mode\".<\/li>\n<li><strong>Fix:<\/strong> Resolved AJAX loading issues for third-party scripts (like Gravity Forms, Elementor, and WooCommerce) inside inline forms by implementing a smart page reload logic with scroll retention.<\/li>\n<li><strong>UX:<\/strong> Improved the \"Custom Fields\" UI in the settings modal to prevent layout overflow.<\/li>\n<li><strong>Security:<\/strong> Added strict sanitization and unslashing to all AJAX handlers to meet WordPress.org standards.<\/li>\n<\/ul>\n\n<h4>2.2.01<\/h4>\n\n<ul>\n<li><strong>New Feature:<\/strong> Added options to collect First Name and Last Name during registration.<\/li>\n<li><strong>Fix:<\/strong> Resolved the issue where the \"Content Lock\" button was missing in the Gutenberg block editor.<\/li>\n<li><strong>Improvement:<\/strong> Optimized editor scripts for better performance and security.<\/li>\n<\/ul>\n\n<h4>2.1.16<\/h4>\n\n<ul>\n<li><strong>New Feature:<\/strong> Added support for Bale's Safir OTP service, allowing users to receive verification codes directly in the Bale messenger app as a cost-effective alternative to SMS.<\/li>\n<li><strong>Improvement:<\/strong> The user interface now provides a choice between SMS and Bale for receiving the code during registration if the Bale OTP feature is enabled.<\/li>\n<li><strong>Fix:<\/strong> Correctly handled the JSON response from the MeliPayamak API to prevent incorrect error messages on successful sends.<\/li>\n<\/ul>\n\n<h4>2.1.13<\/h4>\n\n<ul>\n<li><strong>New Feature:<\/strong> Added one-click login\/registration with Google (Gmail) accounts.<\/li>\n<li><strong>Tweak:<\/strong> Added a detailed step-by-step guide for generating Google OAuth credentials within the plugin settings.<\/li>\n<\/ul>\n\n<h4>2.1.12<\/h4>\n\n<ul>\n<li><strong>New Feature:<\/strong> Added support for the SMS.ir gateway.<\/li>\n<li><strong>Fix:<\/strong> Resolved a bug where Eitaa social login settings were sometimes erased when saving other settings tabs.<\/li>\n<li><strong>Tweak:<\/strong> Corrected the main form shortcode in the readme file.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>\u0627\u0646\u062a\u0634\u0627\u0631 \u0627\u0648\u0644\u06cc\u0647 \u0627\u0641\u0632\u0648\u0646\u0647.<\/li>\n<\/ul>\n\n<p>\u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647\n\u062c\u0644\u0627\u0644 \u0631\u0636\u0627\u06cc\u06cc \u0686\u0627\u0647\u0648\u06a9\u06cc<\/p>","raw_excerpt":"All-in-One Mobile OTP Login, Registration &amp; Content Restriction plugin. Supports SMS, Email, Google, Digits &amp; WooCommerce with Inline Forms.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/250237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=250237"}],"author":[{"embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jayarsiech"}],"wp:attachment":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=250237"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=250237"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=250237"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=250237"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=250237"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=250237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}