WP Manifestindependent plugin directory
manifest / users / light-auth

ورود و ثبت‌نام یکپارچه پیامکی (Light Auth OTP)

Lightweight WordPress OTP login and registration plugin with SMS verification, Melipayamak integration, and Persian RTL support.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/hosseinrezaei80/light-auth/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

افزونه سبک ورود و ثبت‌نام با کد پیامکی برای وردپرس — نسخه 3.6.1

ورود/ثبت‌نام با شماره موبایل ایران، ارسال کد یک‌بارمصرف از طریق ملی‌پیامک، پاپ‌آپ ورود یا فرم داخلی، منوی کاربری و سازگاری پایه با ووکامرس. رابط افزونه فارسی و راست‌به‌چپ است.

English summary: A small, Persian-first WordPress OTP login and registration plugin using the Melipayamak SMS API. No frontend framework or additional database tables are required.

پیش‌نیازها

  • وردپرس 6.0 یا جدیدتر و PHP 7.4 یا جدیدتر (حداقل نسخه اعلام‌شده؛ ماتریس سازگاری کامل سرورها تأیید نشده است).
  • HTTPS برای صفحه ورود توصیه می‌شود.
  • حساب فعال ملی‌پیامک و الگوی تأییدشده با یک متغیر {0} برای ارسال کد.
  • امکان اتصال خروجی سرور به https://api.payamak-panel.com.

نصب

  1. از وب‌سایت و پایگاه داده پشتیبان بگیرید؛ ابتدا در سایت آزمایشی بررسی کنید.
  2. فایل light-auth-3.6.1.zip را در افزونه‌ها ← افزودن ← بارگذاری افزونه نصب کنید. اگر نسخه قبلی نصب است، جایگزینی آن را تأیید کنید.
  3. در تنظیمات ← تنظیمات پیامک نام کاربری، رمز/API Key و BodyId ملی‌پیامک را ثبت کنید. خالی گذاشتن فیلد رمز عبور هنگام ذخیره، رمز قبلی را حفظ می‌کند.
  4. تنظیمات طول کد (پیش‌فرض ۶ رقم)، زمان اعتبار (۳ دقیقه)، فاصله ارسال مجدد (۶۰ ثانیه)، تعداد تلاش مجاز (۵ بار) و مسیر انتقال را انتخاب کنید.
  5. از یک شماره واقعی، ثبت‌نام و ورود را آزمایش کنید؛ پیامک آزمایشی ممکن است هزینه داشته باشد.

نشان «اطلاعات درگاه ثبت شده» به معنی بررسی وجود مقادیر تنظیمات است، نه تست آنلاین اتصال یا موجودی پنل پیامک.

استفاده

شورت‌کد / روش کاربرد
[light_auth] فرم کامل داخل نوشته یا برگه
[light_auth_btn] دکمه ورود یا منوی حساب کاربر
[light_auth_btn text="ورود"] عنوان دلخواه برای دکمه
لینک #light-auth باز کردن پنجره ورود از منوی سایت
کلاس CSS la-open-modal باز کردن پنجره ورود از یک دکمه یا لینک دلخواه

فونت: یک فایل فونت فارسی همراه افزونه توزیع نمی‌شود. در صورت داشتن مجوز استفاده و توزیع، می‌توانید فونت WOFF2 دلخواه را در پوشه fonts/ قرار دهید. افزونه فونت‌های محلی را تشخیص می‌دهد؛ در غیر این صورت از فونت‌های در دسترس دستگاه/قالب استفاده می‌کند. طراحی پنل مدیریت متناسب با رنگ‌های فرم (زرشکی و صورتی) است.

ویژگی‌های امنیتی

  • کد ۵ یا ۶ رقمی با random_int() ساخته می‌شود و در سرور فقط چکیده HMAC آن، نه خود کد، در transient ذخیره می‌شود.
  • کد یک‌بارمصرف است، بعد از مدت تعیین‌شده منقضی می‌شود و بعد از چند تلاش اشتباه باطل می‌شود.
  • محدودیت‌های ساعتی و روزانه ارسال بر اساس شماره و IP، و محدودیت تأیید بر اساس IP.
  • محافظت پایه در برابر درخواست‌های هم‌زمان با قفل دیتابیسی کوتاه‌مدت.
  • وجود یا عدم وجود حساب کاربری پیش از تأیید OTP مشخص نمی‌شود.
  • برای ثبت‌نام جدید، نام کاربر تنها پس از تأیید شماره درخواست می‌شود.
  • ارتباط با درگاه پیامک با بررسی SSL انجام می‌شود.
  • ورود صرفاً پیامکی برای حساب‌های دارای مجوز مدیریتی مسدود شده است.
  • nonce برای هر نشست مرورگر به‌صورت درخواستی و غیرقابل‌کش از سرور دریافت می‌شود؛ بنابراین cache صفحه توکن منقضی را در HTML/JS باقی نمی‌گذارد.

محدودیت مهم: nonce مهم‌ترین کنترل ضد سوءاستفاده نیست؛ برای OTP عمومی، محدودیت نرخ و محافظت در سطح هاست/WAF نیز ضروری هستند. چند سرور با دیتابیس مشترک، پراکسی و object cache باید در محیط واقعی تست شوند.

سازگاری ووکامرس و حساب‌های قدیمی

  • کاربر جدید در حضور نقش ووکامرس با نقش customer و در غیر این صورت subscriber ایجاد می‌شود و phone_number و billing_phone برای او ثبت می‌شوند.
  • ورود کاربران موجود تنها از طریق phone_number متناظر صورت می‌گیرد. شماره billing_phone به‌تنهایی برای تصاحب/اتصال خودکار حساب استفاده نمی‌شود، چون ممکن است متعلق به فرد دیگری باشد.
  • اگر دو کاربر شماره phone_number یکسان داشته باشند، ورود برای آن شماره مسدود و نیازمند رسیدگی مدیر خواهد بود.
  • برای حساب‌های مدیریتی باید از صفحه ورود عادی وردپرس استفاده شود.
  • لینک حساب کاربری ووکامرس تنها در صورت فعال بودن تابع مربوطه نمایش داده می‌شود؛ یکپارچه‌سازی checkout نیازمند تست با تنظیمات و قالب فروشگاه شماست.

حریم خصوصی

برای ارسال کد، شماره موبایل و OTP به سرویس ملی‌پیامک ارسال می‌شوند. نام و شماره موبایل کاربران ثبت‌نام‌کرده در متادیتای معمول وردپرس ذخیره می‌شوند. چکیده موقت کد و شمارنده‌های ضد سوءاستفاده در transientها باقی می‌مانند (تا زمان انقضا/حذف توسط وردپرس). ترجیح تم روشن/تیره در localStorage مرورگر ذخیره می‌شود. افزونه ابزار گزارش‌گیری یا تحلیل رفتار کاربر ندارد و خود کد را در لاگ ذخیره نمی‌کند. متن پیشنهادی برای سیاست حریم خصوصی به ابزار Privacy Policy وردپرس اضافه شده است.

مسئول سایت باید صفحه حریم خصوصی را متناسب با سیاست نگهداری و شرایط ملی‌پیامک کامل کند. غیرفعال‌سازی تنظیمات و اطلاعات حساب را حفظ می‌کند. هنگام حذف کامل افزونه از پیشخوان، تنظیمات اتصال (شامل کلید پیامک) پاک می‌شوند؛ اما شماره تلفن ثبت‌شده در حساب کاربران برای جلوگیری از حذف ناخواسته داده‌هایی که ممکن است ووکامرس/افزونه‌های دیگر استفاده کنند، باقی می‌ماند. حذف حساب باید مطابق رویه معمول وردپرس/ووکامرس انجام شود.

کش، تحویل‌پذیری و رفع اشکال

  • از نسخه 3.6.1، nonce به‌شکل درخواستی دریافت می‌شود و از کش HTML مستقل است. اگر یک افزونه بهینه‌سازی admin-ajax.php را نیز کش یا مسدود کند، درخواست‌های این افزونه را مستثنا کنید.
  • برای صفحه حساب، checkout و نمایش منوی کاربر، تنظیمات کش را با کاربران واردشده بررسی کنید؛ HTML شخصی‌سازی‌شده نباید به کاربران دیگر ارائه شود.
  • اگر پیامک نمی‌رسد، فعال بودن الگوی {0}، شناسه BodyId، اطلاعات اتصال، خروجی HTTPS، اعتبار حساب و خطاهای HTTP را بررسی کنید.
  • اگر چند سایت پشت یک IP یا NAT هستند، محدودیت‌های IP ممکن است بین افراد مشترک باشند. آدرس IP بر اساس REMOTE_ADDR است؛ فقط در صورت تنظیم امن پراکسی در لایه وب‌سرور قابل اعتماد است.
  • تغییر طول OTP کدهای هنوز تأییدنشده را نامعتبر می‌کند؛ پس از تغییر، کد تازه بگیرید.

توسعه و انتشار در GitHub

  • فایل قابل نصب: light-auth-3.6.1.zip
  • بسته سورس GitHub: light-auth-github-3.6.1.zip — شامل tests/، .github/workflows/ci.yml، مستندات و مجوز.
  • اجرای تست محلی (با PHP و Node.js):
php -l light-auth.php
node --check script.js
node --check admin.js
php tests/smoke.php

تست‌های مخزن از mockهای وردپرس استفاده می‌کنند؛ جایگزین آزمایش نصب در WordPress واقعی، ارسال زنده پیامک یا ممیزی امنیتی مستقل نیستند. ابزار Plugin Check برای بررسی تکمیلی توصیه می‌شود.

مشارکت و امنیت

  • تغییرات را با Pull Request پیشنهاد دهید.
  • برای گزارش آسیب‌پذیری از راهنمای SECURITY.md استفاده کنید. کلیدها، رمزهای API و کدهای تأیید را در Issue عمومی قرار ندهید.
  • مجوز کد GPL-2.0-or-later است؛ فایل‌های فونت شخص ثالث (در صورت اضافه‌شدن توسط صاحب سایت) تابع مجوز خودشان هستند.

محدودیت‌های فعلی

  • رابط فارسی‌محور است؛ ترجمه‌پذیری کامل تمام رشته‌ها و مدیریت چند زبان هنوز پیاده‌سازی نشده است.
  • سرویس پیامک تنها ملی‌پیامک است و تست آنلاین خودکار تنظیمات درگاه وجود ندارد.
  • روی تمام نسخه‌ها و ترکیب‌های ووکامرس، قالب‌ها و افزونه‌های کش تست یکپارچه انجام نشده است.
  • نصب از GitHub به‌تنهایی به‌روزرسانی خودکار GitHub Releases را فعال نمی‌کند.

مجوز

GNU GPL version 2 or later — see LICENSE.