Configuring access rights in the CRM Super Admin

This commit is contained in:
2026-09-20 11:24:14 +03:30
parent 04d37a9d12
commit 4a9fe0b07c
29 changed files with 1235 additions and 35 deletions
@@ -0,0 +1,45 @@
# BillingAccount + Modules Implementation Plan
> **For agentic workers:** Execute task-by-task. Checkboxes track progress.
**Goal:** Owner-level `BillingAccount` (plans/expiry/max orgs), per-org `enabledModules`, CRM enforcement + remaining-days UI, `/adm` controls and polish.
**Architecture:** Shared module catalog; Prisma `BillingAccount` + `Organization.enabledModules`; billing checks on login/org-create; module guards on API + filtered nav; platform admin APIs/UI for plans and modules.
**Tech Stack:** NestJS, Prisma, Vue 3, `@mento/shared`, existing CRM CSS tokens.
## Global Constraints
- Manual activation only (no payment gateway).
- Existing owners: trial 15 days; `maxOrganizations >=` current owned org count.
- Expiry: block CRM login; header days remaining; warn ≤3 days.
- Vue + CRM CSS only for `/adm`.
---
## Task 1: Shared catalog + DTOs
- [ ] Add `ORG_MODULE_KEYS`, labels, plan presets, billing DTOs to `packages/shared/src/index.ts`
- [ ] Extend org/login DTOs with `enabledModules` + `subscription` summary
## Task 2: Prisma
- [ ] `BillingAccount` model; `Organization.enabledModules String[]`
- [ ] Migration SQL + data backfill (trial 15d, full modules)
## Task 3: Billing service + auth/org enforcement
- [ ] `BillingService` resolve/require active for org; apply plan; ensure account
- [ ] Hook login / switch org / create org
- [ ] Module require helper for key controllers (or lightweight guard)
## Task 4: Platform API + /adm UI
- [ ] Endpoints: get/apply billing, patch org modules
- [ ] Adm users: billing card; adm orgs: module checklist; light shell polish
## Task 5: Web CRM
- [ ] Filter nav hubs by modules
- [ ] Header subscription chip + warn
- [ ] Router guard for disabled modules