<?php
// ============================================================
// Application Configuration — Shopee Auth System (PHP)
// ============================================================

define('APP_NAME',    'Sarin Shop');
define('APP_URL',     'http://localhost');
define('APP_ENV',     'development'); // 'production' | 'development'
define('APP_VERSION', '1.0.0');

// ─── Database — Auto-detect Local vs Hosting ──────────────
$_isLocal = in_array($_SERVER['HTTP_HOST'] ?? '', ['localhost', '127.0.0.1', ''])
            || (php_sapi_name() === 'cli');

if ($_isLocal) {
    // XAMPP localhost
    define('DB_HOST',    'localhost');
    define('DB_USER',    'root');
    define('DB_PASS',    '');
    define('DB_NAME',    'sarin_shop');
} else {
    // Web Hosting (webapp69.cm.in.th)
    define('DB_HOST',    'localhost');
    define('DB_USER',    'u69319090038');
    define('DB_PASS',    '@6938');
    define('DB_NAME',    'shop69319090038');
}
define('DB_PORT',    '3306');
define('DB_CHARSET', 'utf8mb4');

// ─── JWT Secrets (CHANGE THESE IN PRODUCTION!) ───────────
define('JWT_ACCESS_SECRET',  'shopee_access_secret_key_change_in_production_2025!@#');
define('JWT_REFRESH_SECRET', 'shopee_refresh_secret_key_change_in_production_2025$%^');
define('JWT_ACCESS_TTL',      15 * 60);           // 15 minutes (seconds)
define('JWT_REFRESH_TTL',     7  * 24 * 60 * 60); // 7 days (seconds)
define('JWT_REFRESH_TTL_SHORT', 2 * 60 * 60);     // 2 hours — non-remember-me

// ─── Security ─────────────────────────────────────────────
define('BCRYPT_COST',        10);
define('OTP_LENGTH',          6);
define('OTP_TTL_MINS',        5);
define('COOKIE_SECURE',       false);   // true in production (HTTPS)
define('COOKIE_SAMESITE',    'Lax');
define('COOKIE_PATH',        '/');

// ─── Rate Limits ──────────────────────────────────────────
define('RL_LOGIN_MAX',       5);   // per window
define('RL_LOGIN_WINDOW',    15);  // minutes
define('RL_OTP_MAX',         3);
define('RL_OTP_WINDOW',      10);  // minutes
define('RL_REGISTER_MAX',    10);
define('RL_REGISTER_WINDOW', 60);  // minutes
