Files
CRM_Montzar/docs/superpowers/specs/2026-10-17-owner-view-as-user-design.md
T
MahdiandCursor f7b07f6b7a feat: owner read-only view-as from team users table
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>
2026-10-17 19:57:26 +03:30

2.1 KiB

مشاهده به‌جای کاربر (فقط‌خواندنی برای مالک)

تاریخ: ۲۰۲۶-۱۰-۱۷
وضعیت: پیاده‌سازی‌شده.

هدف

مالک محیط بتواند از جدول کاربران صفحهٔ تیم، با هویت هر عضو همان محیط وارد شود و همان دید داده/منو/نقش او را ببیند، بدون امکان ایجاد، ویرایش یا حذف.

قواعد

  • فقط نقش owner می‌تواند وارد حالت مشاهده شود.
  • هدف: هر عضو همان organizationId (فهرست کاربران تیم).
  • توکن دو هویت دارد: userId = کاربر مشاهده‌شده، impersonatorUserId = مالک واقعی، viewAsReadOnly: true.
  • دید داده و نقش ظاهری مثل کاربر مشاهده‌شده است.
  • هر متد تغییردهنده (POST/PATCH/PUT/DELETE به‌جز استثناها) با پیام فارسی رد می‌شود:
    «در حالت مشاهده به‌جای کاربر دیگر امکان تغییر وجود ندارد.»
  • ظاهر UI مثل حالت عادی می‌ماند؛ فقط سرور خطا می‌دهد.
  • برگشت: کلیک روی ردیف خود مالک در جدول کاربران تیم.
  • در حالت مشاهده، دسترسی به صفحهٔ تیم برای مالک واقعی باز می‌ماند.
  • خروج از سیستم مشاهده را تمام می‌کند؛ ورود بعدی فقط حساب مالک است.

استثناهای مجاز در حالت مشاهده

  • POST/PATCH مربوط به شروع/پایان مشاهده (impersonate / stop)
  • POST خروج (logout اگر باشد)
  • خواندن‌ها: GET
  • در صورت نیاز: سوئیچ لنز بایگانی اطلاعات قبل (خواندنی برای دیدن همان دید کاربر)

خارج از محدوده

  • مشاهده برای غیرمالک
  • نوار بنر بازگشت (عمداً حذف شد؛ برگشت از جدول تیم)
  • مخفی کردن دکمه‌های ویرایش در UI