Emit menu_icon_color and menu_icon_active_color when brandManaged so apps can theme nav icons separately.
Co-authored-by: Cursor <cursoragent@cursor.com>
HMAC k.montzar.ir matches the version that uses that admin panel. Remote buy is no longer blocked by plugin_store_enabled.
Co-authored-by: Cursor <cursoragent@cursor.com>
k.montzar.ir on Gholaktala adminUrl was selecting tenant app.gholaktala.ir. HMAC now uses primary domain (and its subdomain), not admin/app/node URLs.
Co-authored-by: Cursor <cursoragent@cursor.com>
new.gholaktala.ir is the API host of many versions. Prefer subdomain of the product domain and refuse ambiguous nodeServer ties. 403 names the matched tenant.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stops demo and shop rows that share one API URL from colliding, and skips phone-like adminUrl values when resolving X-Abshode-Domain.
Co-authored-by: Cursor <cursoragent@cursor.com>
HMAC only matched tenant.domain, so k.montzar.ir / new.gholaktala.ir missed the row. Also return an empty store when catalog tables are missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Only resolve relative /uploads/ paths; rewriting legacy hosts to SuperAdmin broke logos that still live on nerkh.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow list/expiring helpers to map rows that omit store columns so nest build passes after prisma generate.
Co-authored-by: Cursor <cursoragent@cursor.com>
Store enablement is now a tenant settings row instead of a global runtime switch, and expiring/requests endpoints degrade to empty lists when store tables are missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Catalog prices, purchase requests, and setting-key activation live on SuperAdmin so module admins can buy add-ons. Also rewrite legacy nerkh logo hosts to the SuperAdmin upload origin.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move @types/jalaali-js into dependencies and add a local module declaration so nest build works when installing without devDependencies.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pre-check uniqueness and report which field conflicts with which existing version; strip primary domain from aliases.
Co-authored-by: Cursor <cursoragent@cursor.com>
Server/plugin/support charges used Gregorian Date#setMonth, so 3 months from 1405/06/01 became 1405/09/02. Now add N Jalali months minus one day (1405/08/30).
Merge stored bottom items from the shared catalog so selected menus are not reset to the four defaults.
Co-authored-by: Cursor <cursoragent@cursor.com>
Import preview listed sms_charge_* and service_charge_percentage, but
applyImport skipped every out-of-catalog key via isSystemProgramSettingKey,
so "all projects" never persisted and the modal returned every time.
Co-authored-by: Cursor <cursoragent@cursor.com>
Parse both INSERT column orders from deploy_settings_const.sql so
price_provider, zaarbox_api_url, main_product and similar keys are
in the template. Keep template values empty for tokens and per-project IDs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Merge tenant values with the deploy template catalog so every system
setting (e.g. all montzar_* can_edit=0 keys) appears like khaneghi
advanced settings, not only rows already stored for the tenant.
Co-authored-by: Cursor <cursoragent@cursor.com>