Install
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افزونه سبک ورود و ثبتنام با کد پیامکی برای وردپرس — نسخه 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.
نصب
- از وبسایت و پایگاه داده پشتیبان بگیرید؛ ابتدا در سایت آزمایشی بررسی کنید.
- فایل
light-auth-3.6.1.zipرا در افزونهها ← افزودن ← بارگذاری افزونه نصب کنید. اگر نسخه قبلی نصب است، جایگزینی آن را تأیید کنید. - در تنظیمات ← تنظیمات پیامک نام کاربری، رمز/API Key و BodyId ملیپیامک را ثبت کنید. خالی گذاشتن فیلد رمز عبور هنگام ذخیره، رمز قبلی را حفظ میکند.
- تنظیمات طول کد (پیشفرض ۶ رقم)، زمان اعتبار (۳ دقیقه)، فاصله ارسال مجدد (۶۰ ثانیه)، تعداد تلاش مجاز (۵ بار) و مسیر انتقال را انتخاب کنید.
- از یک شماره واقعی، ثبتنام و ورود را آزمایش کنید؛ پیامک آزمایشی ممکن است هزینه داشته باشد.
نشان «اطلاعات درگاه ثبت شده» به معنی بررسی وجود مقادیر تنظیمات است، نه تست آنلاین اتصال یا موجودی پنل پیامک.
استفاده
| شورتکد / روش | کاربرد |
|---|---|
[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.