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>
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>
Includes mobile auth, get_user/get_version, SMS wallet parity endpoints, appearance backfill, and related Prisma migrations.
Co-authored-by: Cursor <cursoragent@cursor.com>