fix some for iam

This commit is contained in:
Montech
2026-10-07 16:45:36 +03:30
parent a72fa607a5
commit 5223de313a
25 changed files with 823 additions and 38 deletions
+10 -5
View File
@@ -8,7 +8,7 @@ alwaysApply: true
مستندها:
- `docs/iam-connection.md` — **نحوه ارتباط**: سه کانال داده و رفتار در خطا
- `docs/iam-sso.md` — پیکربندی، ابطال نشست، محدودیت‌ها
- `docs/iam-sso.md` — پیکربندی، ورود مشترک با همکار، ابطال نشست
- مرجع تصویری اندپوینت‌های IAM: `<IAM>/docs` (Scalar)
## اصل غیرقابل‌مذاکره
@@ -16,10 +16,15 @@ alwaysApply: true
این قابلیت **افزایشی** است. با `IAM_ENABLED=false` (پیش‌فرض) سامانه باید دقیقاً
مثل قبل رفتار کند: یک `bcrypt.compare` محلی و هیچ درخواست شبکه‌ای.
- **هیچ تغییری در رابط کاربری نیست.** نه دکمه SSO، نه ریدایرکت، نه صفحه جدید.
ادمین مثل همیشه موبایل و رمز را در همین پنل وارد می‌کند.
- پاسخ `POST /api/admin/auth/login` در هر دو حالت یکسان است (`api_token`,
`roles`, …) پس پنل ادمین تفاوتی نمی‌بیند.
- فرم ورود عوض نمی‌شود. پاسخ ورود همان `api_token` قبلی است، به‌اضافهٔ
`iamBootstrapUrl` فقط وقتی IAM بلیت مرورگر داده باشد.
- وقتی IAM روشن است و `IAM_ADMIN_REDIRECT_URI` (یا یکی از
`IAM_ADMIN_REDIRECT_URIS`) با آدرس خودِ پنل یکی است، بار اول بدون توکن یک
پرش `prompt=none` به `/auth/iam/callback` می‌رود. اپ کاربر همین کار را با
`IAM_REDIRECT_URI` و `IAM_REDIRECT_URIS` می‌کند. آدرس ناشناس جایگزین آدرس
ثبت‌شده نمی‌شود و پاسخ `enabled: false` می‌ماند.
- IAM خاموش، یا redirect ادمین خالی، یعنی این پرش شروع نمی‌شود و خروج آدرس
مرکزی برنمی‌گرداند.
## نقشه فایل‌ها