=== Vazin ID Connect ===
Contributors: vazin
Tags: vazin id, login, oauth, pkce, woocommerce
Requires at least: 6.6
Requires PHP: 8.0
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

ورود و اتصال حساب‌های WordPress و WooCommerce به Vazin ID با Authorization Code و PKCE S256.

== Description ==

Vazin ID Connect امکان ورود با Vazin ID، اتصال صریح حساب کاربر محلی، نمایش دکمه ورود در WordPress و WooCommerce و استفاده از شورت‌کد `[vazin_id_login]` را فراهم می‌کند.

مرزهای اصلی:

* این افزونه فقط به Vazin ID متصل می‌شود و هیچ وابستگی یا اتصالی به Vazin License ندارد.
* نگاشت هویت فقط با شناسه پایدار `sub` انجام می‌شود؛ ایمیل باعث اتصال یا ادغام خودکار حساب موجود نمی‌شود.
* اتصال حساب موجود نیازمند تأیید رمز فعلی WordPress است و در همان نشست مرورگر تکمیل می‌شود.
* ایجاد خودکار حساب به‌صورت پیش‌فرض غیرفعال است و فقط برای ایمیل یکتا و تأییدشده ممکن است.
* برای هر سایت باید Client ID مستقل صادر شود و callback دقیق نمایش‌داده‌شده در تنظیمات ثبت شود.
* صدور Client ID در نسخه 1.0.0 دستی است؛ Client Secret استفاده نمی‌شود.
* نسخه 1.0.0 روی WordPress Multisite فعال نمی‌شود.
* ورود عادی WordPress همچنان در دسترس می‌ماند.

WooCommerce اختیاری است. در صورت فعال‌بودن آن، دکمه ورود و پنل اتصال در ناحیه حساب کاربری ووکامرس نیز نمایش داده می‌شود.

== Installation ==

1. فایل ZIP افزونه را در بخش «افزونه‌ها ← افزودن افزونه تازه» بارگذاری و فعال کنید.
2. به «تنظیمات ← Vazin ID Connect» بروید.
3. callback دقیق HTTPS نمایش‌داده‌شده را کپی کنید.
4. برای همین سایت یک Client ID مستقل از تیم Vazin دریافت کنید و callback را بدون تغییر ثبت کنید.
5. Client ID را ذخیره و تست فقط‌خواندنی metadata سرویس را اجرا کنید؛ این تست اعتبار Client ID را ثابت نمی‌کند.
6. یک ورود آزمایشی کامل انجام دهید تا Client ID و callback تأیید شوند.
7. ایجاد خودکار حساب را فقط در صورت نیاز و پس از بررسی سیاست عضویت سایت فعال کنید.

Client ID را می‌توان در `wp-config.php` نیز تعریف کرد:

`define('VAZIN_ID_CONNECT_CLIENT_ID', 'client-id-for-this-site');`

== Frequently Asked Questions ==

= آیا افزونه به Vazin License متصل می‌شود؟ =

خیر. Vazin License سامانه‌ای مستقل است و این افزونه آن را فراخوانی نمی‌کند.

= آیا می‌توان یک Client ID را روی چند سایت استفاده کرد؟ =

خیر. هر سایت باید Client ID مستقل خود را با callback دقیق همان سایت داشته باشد.

= آیا حساب کاربر با ایمیل مشابه خودکار متصل می‌شود؟ =

خیر. ایمیل هرگز مبنای اتصال خودکار به حساب موجود نیست. کاربر باید ابتدا محلی وارد شود و اتصال را صریحاً انجام دهد.

= ایجاد خودکار حساب چه زمانی انجام می‌شود؟ =

فقط وقتی مدیر سایت آن را فعال کرده باشد و Vazin ID یک ایمیل یکتا و تأییدشده ارائه کند.

= قطع اتصال چه اثری دارد؟ =

قطع اتصال فقط نگاشت محلی WordPress را حذف می‌کند و مجوز مرکزی Vazin ID را لغو نمی‌کند. حساب‌های ایجادشده خودکار پیش از قطع اتصال باید رمز محلی تنظیم کنند.

= آیا فعال‌سازی شبکه‌ای Multisite پشتیبانی می‌شود؟ =

خیر. نسخه 1.0.0 فقط برای نصب تک‌سایته است و فعال‌سازی آن روی Multisite مسدود می‌شود.

= آیا نسخه 1.0.0 در محیط واقعی تست شده است؟ =

بله، نصب و فعال‌سازی روی WordPress 6.6.7 و SQLite Database Integration رسمی انجام شده و smoke رفتاری 31/31 پاس شده است. اجرای واقعی WooCommerce و ورود سرتاسری Vazin ID هنوز به staging دارای HTTPS و Client ID یکتای ثبت‌شده نیاز دارد و در این انتشار تأیید نشده است.

== Privacy ==

افزونه شناسه `sub`، زمان اتصال، وضعیت‌های داخلی لازم و گزارش امنیتی حداقلی با نگهداری ۳۰روزه را ذخیره می‌کند. توکن دسترسی و ایمیل کاربران در گزارش امنیتی ذخیره نمی‌شوند. ابزارهای خروجی و حذف داده وردپرس پشتیبانی می‌شوند. هنگام uninstall، جریان‌های موقت و audit همیشه حذف می‌شوند؛ حذف تنظیمات و نگاشت هویت به گزینه مدیر سایت وابسته است.

== Changelog ==

= 1.0.0 =

* انتشار اولیه اتصال Vazin ID برای WordPress و WooCommerce.
* Authorization Code با PKCE S256 و callback دقیق HTTPS.
* اتصال مبتنی بر `sub` و ایجاد اختیاری حساب فقط با ایمیل verified یکتا.
* صدور دستی Client ID مستقل برای هر سایت.

== Upgrade Notice ==

= 1.0.0 =

انتشار اولیه. پیش از فعال‌سازی در محیط اصلی، callback و Client ID اختصاصی سایت را تأیید و جریان ورود را در یک محیط آزمایشی بررسی کنید.
