chore: commit pending admin-panel, api auth and parity doc changes
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Haiku 5.5
parent
55856cac89
commit
cf014e1f6c
@@ -1513,3 +1513,40 @@ act-as را پاک میکند و او را از سیستم بیرون نمی
|
||||
(در مرجع این مسئله وجود نداشت چون کل نشست با توکن عوض میشد.)
|
||||
|
||||
ثبت شده در `ISSUES.md` بهعنوان EXP-01.
|
||||
|
||||
## D30 — بخشهای «فقط سوپر ادمین» در پنل مدیریت (۲۰۲۶/۱۰/۱۴)
|
||||
|
||||
**خواسته مالک:** این بخشها فقط به سوپر ادمین (۰۹۱۲۸۰۸۱۳۹۲) نشان داده شوند و در
|
||||
سطح دسترسیها هم نباشند: لیست مشتریان تک، لیست بنکداران، لیست مغازهداران حضوری،
|
||||
شعب و کارگاه، تب «مشتری تک» در افزودن شخص، فیلد «سینی ها» در فرم محصول، ثبت
|
||||
سفارش تک و لیست سفارشهای تک، «افزودن تخفیف تک»، و «مدیریت کیف پول».
|
||||
|
||||
**پاسخهای مالک:**
|
||||
- سوپر ادمین = **فقط حساب با موبایل ۰۹۱۲۸۰۸۱۳۹۲**، نه هر ادمینی که نقش `SUPER_ADMIN` دارد.
|
||||
- اعمال **کامل**: مخفی در پنل + بستن آدرس مستقیم صفحه + ۴۰۳ از API.
|
||||
- «سینی ها» در **هر دو جا**: فیلد فرم محصول و تب «مدیریت ثابت ها».
|
||||
- تخفیف تک: **افزودن + ویرایش + حذف**، و هر سه از سطح دسترسیها حذف.
|
||||
|
||||
**سازوکار.** `@SuperAdminOnly()` در `apps/api/src/modules/auth/guards.ts`، که
|
||||
`PermissionsGuard` سراسری آن را اعمال میکند؛ شماره و فهرست rid ها در
|
||||
`auth/super-admin.ts`. به سوپر ادمین rid های این بخشها همیشه داده میشود
|
||||
(`withSuperAdminRids`) تا با ذخیرهی دوبارهی سطح دسترسیاش از دست نروند. در پنل:
|
||||
`users.isSuperAdmin` (از `is_super_admin` در login و `users/show`)، `superAdminOnly`
|
||||
روی منو و route، و حذف این rid ها از درخت صفحه دسترسیها برای غیر سوپر ادمین.
|
||||
|
||||
**تصمیمهای جانبی (برای نشکستن چیزهای دیگر):**
|
||||
- **پنل شعبه** همان endpoint های مشتری تک و سفارش تک را صدا میزند؛ این endpoint ها
|
||||
برای ادمینِ دارای `branchId` هم باز ماند (`allowBranch`). بدون این، کارکنان شعبه
|
||||
قفل میشدند. پیامد: ادمینی که شعبه دارد از API به این چهار endpoint دسترسی دارد.
|
||||
- **سوپر ادمین در درخت دسترسیها همه را میبیند** تا بتواند این rid ها را به سطح
|
||||
دسترسی کارکنان شعبه بدهد. دیگران آنها را نمیبینند، و rid هایی که سطح از قبل
|
||||
دارد هنگام ذخیره توسط آنها **حفظ** میشود (حذف بیصدا نمیشود).
|
||||
- `admin/orders/:id`، `status` و `status-options` بین سفارش تک، عمده و تامین مشترکاند
|
||||
و `order.list` میخواستند؛ حالا هر کدام از `order.list` / `order.omde` / `order.tamin`
|
||||
کافی است (`RequirePermission` چند rid میپذیرد).
|
||||
- لیست کارگاهها (`admin/workshops/list`) **باز ماند**: انتخاب کارگاه در «سفارش های
|
||||
ساختنی» از آن است. بقیهی endpoint های کارگاه و همهی شعب بسته شدند.
|
||||
- **تخفیف تک فقط در پنل بسته شد، نه در API**: API تک و عمده را از هم تشخیص نمیدهد
|
||||
(PROMO-TAK-01).
|
||||
- بنکداران/مغازهداران و سینیها rid مشترک با بخشهای دیگر دارند (`persons.list.client.omde`،
|
||||
`collection.*`)؛ پس از درخت حذف نشدند و با `@SuperAdminOnly` / `isSuperAdmin` بسته شدند.
|
||||
|
||||
Reference in New Issue
Block a user