/**
 * EN: JWT configuration object with secrets and expiration times
 * VI: Đối tượng cấu hình JWT với secrets và thời gian hết hạn
 */
export const jwtConfig = {
  /** EN: Secret key for signing access tokens / VI: Khóa bí mật để ký access tokens */
  secret: process.env.JWT_SECRET || 'default-secret-change-in-production',
  /** EN: Access token expiration time / VI: Thời gian hết hạn của access token */
  expiresIn: process.env.JWT_EXPIRES_IN || '15m',
  /** EN: Secret key for signing refresh tokens / VI: Khóa bí mật để ký refresh tokens */
  refreshSecret: process.env.JWT_REFRESH_SECRET || 'default-refresh-secret-change-in-production',
  /** EN: Refresh token expiration time / VI: Thời gian hết hạn của refresh token */
  refreshExpiresIn: process.env.JWT_REFRESH_EXPIRES_IN || '7d',
  /** EN: Secret key for signing ID tokens (OIDC) / VI: Khóa bí mật để ký ID tokens (OIDC) */
  idSecret: process.env.JWT_ID_SECRET || 'default-id-secret-change-in-production',
  /** EN: ID token expiration time / VI: Thời gian hết hạn của ID token */
  idExpiresIn: process.env.JWT_ID_EXPIRES_IN || '1h',
  /** EN: JWT issuer / VI: Người phát hành JWT */
  issuer: process.env.JWT_ISSUER || 'goodgo-auth',
  /** EN: JWT audience / VI: Đối tượng JWT */
  audience: process.env.JWT_AUDIENCE || 'goodgo-api',
};

// EN: Block default JWT secrets in production
// VI: Chặn JWT secrets mặc định trong production
const isProduction = process.env.NODE_ENV === 'production';

if (isProduction) {
  if (!process.env.JWT_SECRET || process.env.JWT_SECRET === 'default-secret-change-in-production') {
    throw new Error('🚨 CRITICAL: Cannot use default JWT_SECRET in production! Configure a strong, unique JWT_SECRET.');
  }
  if (!process.env.JWT_REFRESH_SECRET || process.env.JWT_REFRESH_SECRET === 'default-refresh-secret-change-in-production') {
    throw new Error('🚨 CRITICAL: Cannot use default JWT_REFRESH_SECRET in production! Configure a strong, unique JWT_REFRESH_SECRET.');
  }
  if (!process.env.JWT_ID_SECRET || process.env.JWT_ID_SECRET === 'default-id-secret-change-in-production') {
    throw new Error('🚨 CRITICAL: Cannot use default JWT_ID_SECRET in production! Configure a strong, unique JWT_ID_SECRET.');
  }
} else {
  // EN: Warn about default JWT secret in development
  // VI: Cảnh báo về JWT secret mặc định trong môi trường phát triển
  if (!process.env.JWT_SECRET || process.env.JWT_SECRET === 'default-secret-change-in-production') {
    console.warn('⚠️  WARNING: Using default JWT_SECRET. Change it in production! / ⚠️  CẢNH BÁO: Đang sử dụng JWT_SECRET mặc định. Hãy thay đổi trong production!');
  }
}
