Allow org owners to inspect any member's data scope via dual JWT; server blocks mutations and team page stays reachable for return. Co-authored-by: Cursor <cursoragent@cursor.com>
35 lines
2.1 KiB
Markdown
35 lines
2.1 KiB
Markdown
# مشاهده بهجای کاربر (فقطخواندنی برای مالک)
|
|
|
|
تاریخ: ۲۰۲۶-۱۰-۱۷
|
|
وضعیت: پیادهسازیشده.
|
|
|
|
## هدف
|
|
|
|
مالک محیط بتواند از جدول کاربران صفحهٔ تیم، با هویت هر عضو همان محیط وارد شود و همان دید داده/منو/نقش او را ببیند، بدون امکان ایجاد، ویرایش یا حذف.
|
|
|
|
## قواعد
|
|
|
|
- فقط نقش `owner` میتواند وارد حالت مشاهده شود.
|
|
- هدف: هر عضو همان `organizationId` (فهرست کاربران تیم).
|
|
- توکن دو هویت دارد: `userId` = کاربر مشاهدهشده، `impersonatorUserId` = مالک واقعی، `viewAsReadOnly: true`.
|
|
- دید داده و نقش ظاهری مثل کاربر مشاهدهشده است.
|
|
- هر متد تغییردهنده (POST/PATCH/PUT/DELETE بهجز استثناها) با پیام فارسی رد میشود:
|
|
«در حالت مشاهده بهجای کاربر دیگر امکان تغییر وجود ندارد.»
|
|
- ظاهر UI مثل حالت عادی میماند؛ فقط سرور خطا میدهد.
|
|
- برگشت: کلیک روی ردیف خود مالک در جدول کاربران تیم.
|
|
- در حالت مشاهده، دسترسی به صفحهٔ تیم برای مالک واقعی باز میماند.
|
|
- خروج از سیستم مشاهده را تمام میکند؛ ورود بعدی فقط حساب مالک است.
|
|
|
|
## استثناهای مجاز در حالت مشاهده
|
|
|
|
- `POST`/`PATCH` مربوط به شروع/پایان مشاهده (impersonate / stop)
|
|
- `POST` خروج (`logout` اگر باشد)
|
|
- خواندنها: GET
|
|
- در صورت نیاز: سوئیچ لنز بایگانی اطلاعات قبل (خواندنی برای دیدن همان دید کاربر)
|
|
|
|
## خارج از محدوده
|
|
|
|
- مشاهده برای غیرمالک
|
|
- نوار بنر بازگشت (عمداً حذف شد؛ برگشت از جدول تیم)
|
|
- مخفی کردن دکمههای ویرایش در UI
|