Commit Graph
77 Commits
Author SHA1 Message Date
Mahdi 48649a6a79 fix(settings-proxy): prefer SMS shared secret for product push auth 2026-08-14 17:44:53 +03:30
MahdiandCursor 9cfd38ef99 feat(get_user): expose subscription_alerts for admin expiry modals
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 16:31:44 +03:30
MahdiandCursor aec5e08a1e fix(settings-proxy): send SMS shared secret as Bearer for CDN
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 19:53:30 +03:30
MahdiandCursor 8fe7d59c1b fix(settings-proxy): push kill-switch with SMS shared HMAC
When remoteApiToken is empty, sign SuperAdmin→product /super/settings
with the same SMS_REMOTE_SHARED_SECRET + domain headers used by SMS.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 19:33:13 +03:30
MahdiandCursor 51e350405a feat: per-tenant server access kill switch
Add Tenant.serverAccessBlocked, toggle API with appVersion bump and settings push, and expose stealth server_reachable in get_user.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 16:05:04 +03:30
MahdiandCursor af1e217a68 feat(auth): add module read/write admin RBAC
Introduce permission catalog, PermissionsGuard, JWT/me payload with
role+permissions, and gate all module controllers. Admins CRUD accepts
role/permissions with safety rules; migrate existing users to super_admin.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 15:29:04 +03:30
MahdiandCursor e9067eb70e fix: allow localhost/LAN CORS for SuperAdmin public APIs
Local Vite frontends can call production adm.montzar.ir get_user/get_version without running a local API.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 13:30:22 +03:30
MahdiandCursor a589c7f0c2 fix: normalize Khanegi newTheme ui config for userTheme schema
Map sidebar+bottom→both, products→buyProduct, ensure header.variant. Repair script + get_user normalize so colors apply instead of Zod fallback.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 12:34:07 +03:30
MahdiandCursor e025496595 feat: bump appVersion when branding changes to invalidate get_user cache
Appearance/avatar/name/uiVariant updates auto-increment Tenant.appVersion so clients refetch get_user only after get_version changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 17:42:50 +03:30
MahdiandCursor 501bcd0894 fix: prefer primary Tenant.domain in get_user/get_version matching
When multiple tenants claim the same host via domains aliases, resolve the tenant whose primary domain matches first so branding edits apply to the expected version.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 16:36:10 +03:30
MahdiandCursor be50c99f65 feat: public GET /manifest.json from tenant branding
Serve PWA/APK web manifest per domain (name, theme colors, multi-size icons from avatar), exclude from api prefix, and proxy via nginx.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 15:41:50 +03:30
MahdiandCursor 1adaef5d18 Add Khanegi uiVariant modular/newTheme with get_user payload split.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 12:58:45 +03:30
MahdiandCursor b9a33505e4 Allow negative SMS auto-block threshold in API.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 14:55:15 +03:30
MahdiandCursor 8eba9a9b8f Add optional SMS auto-block threshold below balance.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 14:12:29 +03:30
MahdiandCursor f9b77ceaac Show SMS money labels in tomans; keep remote APIs in rials.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 13:27:31 +03:30
MahdiandCursor db66a44527 Add support subscription panel API with optional free periods.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 11:20:25 +03:30
MahdiandCursor f61d10e07b Allow multiple hosting servers per sold version.
Drop unique tenant_id on server_accounts and add create/update/delete/renew APIs per server account, with list/expiring using the worst status.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 19:23:37 +03:30
MahdiandCursor 12513e4967 Allow SMS send with negative balance; only block switch stops sending.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 22:24:20 +03:30
MahdiandCursor 17a54774ae Add remote SMS panel sync API and product MySQL import script.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 20:53:59 +03:30
MahdiandCursor 57654e295c Add shared HMAC+domain auth for remote SMS wallet API.
Products can authenticate with one shared secret and tenant domain instead of per-version tokens; Bearer token remains as fallback.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 17:11:55 +03:30
Mahdi 14d9c5d143 Implementing SMS panel in Super Admin 2026-08-05 14:13:44 +03:30
MahdiandCursor b66e47c3b3 Add Khanegi default appearance snapshot seed and strip SA meta from get_user.
Mirrors Hamkar so each khanegi tenant can restore its factory ui-config without exposing defaultSnapshot publicly.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 21:13:46 +03:30
MahdiandCursor 1586725a5b Allow HTTPS tenant origins for cross-origin get_user CORS.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 19:47:54 +03:30
MahdiandCursor 3156093305 Track uploads util; ignore only runtime /uploads directory.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 20:39:58 +03:30
MahdiandCursor a6b3457779 Add production-ready SuperAdmin API features for tenants, SMS, servers, and plugins.
Includes mobile auth, get_user/get_version, SMS wallet parity endpoints, appearance backfill, and related Prisma migrations.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 18:19:53 +03:30
Mahdi ddf36f8470 Creating a control panel infrastructure 2026-07-23 19:41:21 +03:30
SuperAdmin 7fbc47766c Initial SuperAdmin API (NestJS + Prisma) 2026-07-23 10:25:32 +03:30