1048 lines
34 KiB
PHP
1048 lines
34 KiB
PHP
<?php
|
|
|
|
namespace App\Services\SystemConfig;
|
|
|
|
class SettingDefinitions
|
|
{
|
|
public const ALL = [
|
|
'app_name' => [
|
|
'type' => 'string',
|
|
'group' => 'branding',
|
|
'is_public' => true,
|
|
'default' => 'Laravel',
|
|
'description' => 'Application name',
|
|
],
|
|
'enable_landing_page' => [
|
|
'type' => 'bool',
|
|
'group' => 'branding',
|
|
'is_public' => true,
|
|
'default' => true,
|
|
'description' => 'Enable/Disable the landing page (welcome page)',
|
|
],
|
|
'app_tagline' => [
|
|
'type' => 'string',
|
|
'group' => 'branding',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'Primary tagline',
|
|
],
|
|
'app_tagline1' => [
|
|
'type' => 'string',
|
|
'group' => 'branding',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'Secondary tagline',
|
|
],
|
|
'app_tagline2' => [
|
|
'type' => 'string',
|
|
'group' => 'branding',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'Description text',
|
|
],
|
|
'footer_text' => [
|
|
'type' => 'string',
|
|
'group' => 'branding',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'Footer text',
|
|
],
|
|
'default_locale' => [
|
|
'type' => 'string',
|
|
'group' => 'branding',
|
|
'is_public' => true,
|
|
'default' => 'en',
|
|
'description' => 'Default language',
|
|
],
|
|
'instance_mode' => [
|
|
'type' => 'string',
|
|
'group' => 'branding',
|
|
'is_public' => true,
|
|
'default' => 'Production',
|
|
'description' => 'Environment/Instance Mode',
|
|
],
|
|
'app_logo' => [
|
|
'type' => 'image_path',
|
|
'group' => 'branding',
|
|
'is_public' => true,
|
|
'default' => null,
|
|
'description' => 'Application logo path',
|
|
],
|
|
'app_favicon' => [
|
|
'type' => 'image_path',
|
|
'group' => 'branding',
|
|
'is_public' => true,
|
|
'default' => null,
|
|
'description' => 'Application favicon path',
|
|
],
|
|
'regional_timezone' => [
|
|
'type' => 'string',
|
|
'group' => 'regional',
|
|
'is_public' => true,
|
|
'default' => 'Asia/Jakarta',
|
|
'description' => 'System default timezone',
|
|
],
|
|
'regional_date_format' => [
|
|
'type' => 'string',
|
|
'group' => 'regional',
|
|
'is_public' => true,
|
|
'default' => 'd/m/Y',
|
|
'description' => 'Date display format',
|
|
],
|
|
'regional_time_format' => [
|
|
'type' => 'string',
|
|
'group' => 'regional',
|
|
'is_public' => true,
|
|
'default' => 'H:i',
|
|
'description' => 'Time display format (12/24 hour)',
|
|
],
|
|
'feature_notification_center' => [
|
|
'type' => 'bool',
|
|
'group' => 'feature_flags',
|
|
'is_public' => false,
|
|
'default' => true,
|
|
'description' => 'Toggle notification center feature',
|
|
],
|
|
'feature_google_oauth' => [
|
|
'type' => 'bool',
|
|
'group' => 'feature_flags',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'Toggle Google OAuth login',
|
|
],
|
|
'google_client_id' => [
|
|
'type' => 'string',
|
|
'group' => 'feature_flags',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Google Client ID',
|
|
],
|
|
'google_client_secret' => [
|
|
'type' => 'string',
|
|
'group' => 'feature_flags',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Google Client Secret',
|
|
],
|
|
'feature_facebook_oauth' => [
|
|
'type' => 'bool',
|
|
'group' => 'feature_flags',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'Toggle Facebook OAuth login',
|
|
],
|
|
'facebook_app_id' => [
|
|
'type' => 'string',
|
|
'group' => 'feature_flags',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Facebook App ID',
|
|
],
|
|
'facebook_app_secret' => [
|
|
'type' => 'string',
|
|
'group' => 'feature_flags',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Facebook App Secret',
|
|
],
|
|
'feature_github_oauth' => [
|
|
'type' => 'bool',
|
|
'group' => 'feature_flags',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'Toggle GitHub OAuth login',
|
|
],
|
|
'github_client_id' => [
|
|
'type' => 'string',
|
|
'group' => 'feature_flags',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'GitHub Client ID',
|
|
],
|
|
'github_client_secret' => [
|
|
'type' => 'string',
|
|
'group' => 'feature_flags',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'GitHub Client Secret',
|
|
],
|
|
'social_login_callback_url' => [
|
|
'type' => 'string',
|
|
'group' => 'feature_flags',
|
|
'is_public' => false,
|
|
'default' => '/auth/callback',
|
|
'description' => 'Global Social Login Callback URL',
|
|
],
|
|
// LOGIN SECURITY
|
|
'login_max_attempts' => [
|
|
'type' => 'int',
|
|
'group' => 'login_security',
|
|
'is_public' => false,
|
|
'default' => 5,
|
|
'description' => 'Maximum Login Attempts',
|
|
],
|
|
'login_lockout_duration' => [
|
|
'type' => 'int',
|
|
'group' => 'login_security',
|
|
'is_public' => false,
|
|
'default' => 15,
|
|
'description' => 'Lockout Duration (Minutes)',
|
|
],
|
|
'login_lockout_notify' => [
|
|
'type' => 'bool',
|
|
'group' => 'login_security',
|
|
'is_public' => false,
|
|
'default' => true,
|
|
'description' => 'Notify upon Lockout',
|
|
],
|
|
'two_factor_auth' => [
|
|
'type' => 'bool',
|
|
'group' => 'login_security',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'Enable 2FA',
|
|
],
|
|
'two_factor_method' => [
|
|
'type' => 'string',
|
|
'group' => 'login_security',
|
|
'is_public' => false,
|
|
'default' => 'email',
|
|
'description' => '2FA Method',
|
|
],
|
|
'captcha_enabled' => [
|
|
'type' => 'bool',
|
|
'group' => 'login_security',
|
|
'is_public' => true,
|
|
'default' => false,
|
|
'description' => 'Enable Captcha',
|
|
],
|
|
'captcha_site_key' => [
|
|
'type' => 'string',
|
|
'group' => 'login_security',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'reCAPTCHA Site Key',
|
|
],
|
|
'captcha_secret_key' => [
|
|
'type' => 'string',
|
|
'group' => 'login_security',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'reCAPTCHA Secret',
|
|
],
|
|
'captcha_version' => [
|
|
'type' => 'string',
|
|
'group' => 'login_security',
|
|
'is_public' => true,
|
|
'default' => 'v2',
|
|
'description' => 'reCAPTCHA Version',
|
|
],
|
|
'login_log_enabled' => [
|
|
'type' => 'bool',
|
|
'group' => 'login_security',
|
|
'is_public' => false,
|
|
'default' => true,
|
|
'description' => 'Log Login Activity',
|
|
],
|
|
|
|
// PASSWORD POLICY
|
|
'password_min_length' => [
|
|
'type' => 'int',
|
|
'group' => 'password_policy',
|
|
'is_public' => true,
|
|
'default' => 8,
|
|
'description' => 'Minimum Password Length',
|
|
],
|
|
'password_max_length' => [
|
|
'type' => 'int',
|
|
'group' => 'password_policy',
|
|
'is_public' => true,
|
|
'default' => 64,
|
|
'description' => 'Maximum Password Length',
|
|
],
|
|
'password_require_uppercase' => [
|
|
'type' => 'bool',
|
|
'group' => 'password_policy',
|
|
'is_public' => true,
|
|
'default' => false,
|
|
'description' => 'Require Uppercase Letters',
|
|
],
|
|
'password_require_lowercase' => [
|
|
'type' => 'bool',
|
|
'group' => 'password_policy',
|
|
'is_public' => true,
|
|
'default' => false,
|
|
'description' => 'Require Lowercase Letters',
|
|
],
|
|
'password_require_numeric' => [
|
|
'type' => 'bool',
|
|
'group' => 'password_policy',
|
|
'is_public' => true,
|
|
'default' => false,
|
|
'description' => 'Require Numbers',
|
|
],
|
|
'password_require_special' => [
|
|
'type' => 'bool',
|
|
'group' => 'password_policy',
|
|
'is_public' => true,
|
|
'default' => false,
|
|
'description' => 'Require Symbols / Special Characters',
|
|
],
|
|
'password_expiry_days' => [
|
|
'type' => 'int',
|
|
'group' => 'password_policy',
|
|
'is_public' => false,
|
|
'default' => 0, // 0 = Never expire
|
|
'description' => 'Password Validity (Days)',
|
|
],
|
|
'password_history_count' => [
|
|
'type' => 'int',
|
|
'group' => 'password_policy',
|
|
'is_public' => false,
|
|
'default' => 0, // 0 = No history
|
|
'description' => 'Prevent Password Reuse (Count)',
|
|
],
|
|
'password_reset_link_expiry' => [
|
|
'type' => 'int',
|
|
'group' => 'password_policy',
|
|
'is_public' => false,
|
|
'default' => 60,
|
|
'description' => 'Password Reset Link Expiry (Minutes)',
|
|
],
|
|
|
|
// SESSION SECURITY
|
|
'session_driver' => [
|
|
'type' => 'string',
|
|
'group' => 'session_security',
|
|
'is_public' => false,
|
|
'default' => 'redis',
|
|
'description' => 'Session Driver (file/redis/database)',
|
|
],
|
|
'session_lifetime' => [
|
|
'type' => 'int',
|
|
'group' => 'session_security',
|
|
'is_public' => false,
|
|
'default' => 120,
|
|
'description' => 'Session Lifetime / Idle Timeout (Minutes)',
|
|
],
|
|
'session_single_session' => [
|
|
'type' => 'bool',
|
|
'group' => 'session_security',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'Only allow 1 active session per user',
|
|
],
|
|
'session_auto_logout_idle' => [
|
|
'type' => 'int',
|
|
'group' => 'session_security',
|
|
'is_public' => false,
|
|
'default' => 30,
|
|
'description' => 'Auto Logout Idle (Minutes)',
|
|
],
|
|
'session_allow_remember_me' => [
|
|
'type' => 'bool',
|
|
'group' => 'session_security',
|
|
'is_public' => true,
|
|
'default' => true,
|
|
'description' => 'Allow Remember Me on Login',
|
|
],
|
|
'session_remember_me_duration' => [
|
|
'type' => 'int',
|
|
'group' => 'session_security',
|
|
'is_public' => false,
|
|
'default' => 30,
|
|
'description' => 'Remember Me Duration (Days)',
|
|
],
|
|
'session_secure_cookie' => [
|
|
'type' => 'bool',
|
|
'group' => 'session_security',
|
|
'is_public' => true,
|
|
'default' => false,
|
|
'description' => 'Secure Cookie (HTTPS Only)',
|
|
],
|
|
'session_encrypt' => [
|
|
'type' => 'bool',
|
|
'group' => 'session_security',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'Encrypt Session Data',
|
|
],
|
|
'session_concurrent_limit' => [
|
|
'type' => 'int',
|
|
'group' => 'session_security',
|
|
'is_public' => false,
|
|
'default' => 0, // 0 = Unlimited
|
|
'description' => 'Concurrent Session Limit (Per User)',
|
|
],
|
|
|
|
// 2FA ENHANCEMENT
|
|
'two_factor_trust_days' => [
|
|
'type' => 'int',
|
|
'group' => 'login_security',
|
|
'is_public' => false,
|
|
'default' => 30,
|
|
'description' => 'Remember Trusted Devices (Days)',
|
|
],
|
|
|
|
// WEBAUTHN (PASSKEYS)
|
|
'webauthn_enabled' => [
|
|
'type' => 'bool',
|
|
'group' => 'login_security',
|
|
'is_public' => true,
|
|
'default' => false,
|
|
'description' => 'Enable Passkeys (Biometric/FIDO2)',
|
|
],
|
|
|
|
// IP & ACCESS CONTROL
|
|
'ip_whitelist_admin' => [
|
|
'type' => 'string',
|
|
'group' => 'ip_access',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Admin IP Whitelist (Comma separated)',
|
|
],
|
|
'ip_blacklist' => [
|
|
'type' => 'string',
|
|
'group' => 'ip_access',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Global IP Blacklist (Comma separated)',
|
|
],
|
|
'rate_limit_per_ip' => [
|
|
'type' => 'int',
|
|
'group' => 'ip_access',
|
|
'is_public' => false,
|
|
'default' => 60,
|
|
'description' => 'Max requests per minute per IP',
|
|
],
|
|
'auto_block_ip' => [
|
|
'type' => 'bool',
|
|
'group' => 'ip_access',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'Automatically block suspicious IPs',
|
|
],
|
|
'threshold_auto_block' => [
|
|
'type' => 'int',
|
|
'group' => 'ip_access',
|
|
'is_public' => false,
|
|
'default' => 100,
|
|
'description' => 'Hits threshold before auto-block',
|
|
],
|
|
'force_https' => [
|
|
'type' => 'bool',
|
|
'group' => 'ip_access',
|
|
'is_public' => true,
|
|
'default' => false,
|
|
'description' => 'Force HTTPS redirection',
|
|
],
|
|
'hsts_enabled' => [
|
|
'type' => 'bool',
|
|
'group' => 'ip_access',
|
|
'is_public' => true,
|
|
'default' => false,
|
|
'description' => 'Enable HTTP Strict Transport Security',
|
|
],
|
|
'cors_origins' => [
|
|
'type' => 'string',
|
|
'group' => 'ip_access',
|
|
'is_public' => false,
|
|
'default' => '*',
|
|
'description' => 'Allowed CORS Origins',
|
|
],
|
|
'cors_methods' => [
|
|
'type' => 'string',
|
|
'group' => 'ip_access',
|
|
'is_public' => false,
|
|
'default' => '*',
|
|
'description' => 'Allowed CORS Methods',
|
|
],
|
|
'cors_headers' => [
|
|
'type' => 'string',
|
|
'group' => 'ip_access',
|
|
'is_public' => false,
|
|
'default' => '*',
|
|
'description' => 'Allowed CORS Headers',
|
|
],
|
|
|
|
// NOTIFICATIONS (EMAIL)
|
|
'mail_driver' => [
|
|
'type' => 'string',
|
|
'group' => 'notifications',
|
|
'is_public' => false,
|
|
'default' => 'smtp',
|
|
'description' => 'Email Driver (smtp, mailgun, ses)',
|
|
],
|
|
'mail_host' => [
|
|
'type' => 'string',
|
|
'group' => 'notifications',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'SMTP Host Server',
|
|
],
|
|
'mail_port' => [
|
|
'type' => 'int',
|
|
'group' => 'notifications',
|
|
'is_public' => false,
|
|
'default' => 587,
|
|
'description' => 'SMTP Port (587/465/25)',
|
|
],
|
|
'mail_username' => [
|
|
'type' => 'string',
|
|
'group' => 'notifications',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'SMTP Username',
|
|
],
|
|
'mail_password' => [
|
|
'type' => 'string',
|
|
'group' => 'notifications',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'SMTP Password',
|
|
],
|
|
'mail_encryption' => [
|
|
'type' => 'string',
|
|
'group' => 'notifications',
|
|
'is_public' => false,
|
|
'default' => 'tls',
|
|
'description' => 'Encryption (tls/ssl/null)',
|
|
],
|
|
'mail_from_address' => [
|
|
'type' => 'string',
|
|
'group' => 'notifications',
|
|
'is_public' => false,
|
|
'default' => 'noreply@example.com',
|
|
'description' => 'Sender Email Address',
|
|
],
|
|
'mail_from_name' => [
|
|
'type' => 'string',
|
|
'group' => 'notifications',
|
|
'is_public' => false,
|
|
'default' => 'System Notification',
|
|
'description' => 'Sender Display Name',
|
|
],
|
|
|
|
'telegram_bot_token' => [
|
|
'type' => 'string',
|
|
'group' => 'notifications',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Telegram Bot Token',
|
|
],
|
|
|
|
'telegram_chat_id' => [
|
|
'type' => 'string',
|
|
'group' => 'notifications',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Default Telegram Chat ID',
|
|
],
|
|
|
|
// JADWAL BACKUP
|
|
'backup_db_enabled' => [
|
|
'type' => 'bool',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => true,
|
|
'description' => 'Enable automated database backup',
|
|
],
|
|
'backup_db_driver' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => 'local',
|
|
'description' => 'Storage Driver (local/s3/gdrive)',
|
|
],
|
|
'backup_db_frequency' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => 'daily',
|
|
'description' => 'Backup Frequency',
|
|
],
|
|
'backup_db_time' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => '02:00',
|
|
'description' => 'Execution Time',
|
|
],
|
|
'backup_db_retention' => [
|
|
'type' => 'int',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => 7,
|
|
'description' => 'Retention Policy (Keep last N)',
|
|
],
|
|
'backup_db_compress' => [
|
|
'type' => 'bool',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => true,
|
|
'description' => 'Compress with gzip',
|
|
],
|
|
'backup_db_encrypt' => [
|
|
'type' => 'bool',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'AES-256 Encryption',
|
|
],
|
|
'backup_db_encrypt_key' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Encryption Key (min 32 chars)',
|
|
],
|
|
'backup_db_exclude' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Excluded Tables (comma separated)',
|
|
],
|
|
'backup_db_notify_on' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => 'failed',
|
|
'description' => 'Notification Trigger (success/failed/both)',
|
|
],
|
|
'backup_db_notify_to' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Notification Target (Email/Webhook)',
|
|
],
|
|
'gdrive_client_id' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Google Drive Client ID',
|
|
],
|
|
'gdrive_client_secret' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Google Drive Client Secret',
|
|
],
|
|
'gdrive_refresh_token' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Google Drive Refresh Token',
|
|
],
|
|
'gdrive_folder' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => 'LaravelBackups',
|
|
'description' => 'Google Drive Folder Name',
|
|
],
|
|
's3_key' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'S3 Access Key',
|
|
],
|
|
's3_secret' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'S3 Secret Key',
|
|
],
|
|
's3_region' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => 'us-east-1',
|
|
'description' => 'S3 Region',
|
|
],
|
|
's3_bucket' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'S3 Bucket Name',
|
|
],
|
|
's3_endpoint' => [
|
|
'type' => 'string',
|
|
'group' => 'backups',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'S3 Custom Endpoint (Optional)',
|
|
],
|
|
|
|
// MAINTENANCE MODE
|
|
'maintenance_mode_enabled' => [
|
|
'type' => 'bool',
|
|
'group' => 'maintenance',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'Enable maintenance mode',
|
|
],
|
|
'maintenance_mode_message' => [
|
|
'type' => 'string',
|
|
'group' => 'maintenance',
|
|
'is_public' => true,
|
|
'default' => 'The system is undergoing routine optimization to improve service. We will be back online shortly.',
|
|
'description' => 'Maintenance message',
|
|
],
|
|
'maintenance_mode_title' => [
|
|
'type' => 'string',
|
|
'group' => 'maintenance',
|
|
'is_public' => true,
|
|
'default' => 'Scheduled System Maintenance',
|
|
'description' => 'Maintenance page title',
|
|
],
|
|
'maintenance_mode_secret' => [
|
|
'type' => 'string',
|
|
'group' => 'maintenance',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Bypass secret key',
|
|
],
|
|
'maintenance_mode_allowed_ips' => [
|
|
'type' => 'string',
|
|
'group' => 'maintenance',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Whitelisted IP addresses',
|
|
],
|
|
'maintenance_mode_end_at' => [
|
|
'type' => 'string',
|
|
'group' => 'maintenance',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'Estimated end time',
|
|
],
|
|
'maintenance_mode_retry' => [
|
|
'type' => 'int',
|
|
'group' => 'maintenance',
|
|
'is_public' => false,
|
|
'default' => 3600,
|
|
'description' => 'Retry-After seconds',
|
|
],
|
|
'maintenance_mode_image' => [
|
|
'type' => 'image_path',
|
|
'group' => 'maintenance',
|
|
'is_public' => true,
|
|
'default' => null,
|
|
'description' => 'Maintenance illustration image',
|
|
],
|
|
|
|
// CONTENT & LEGAL (UU PDP COMPLIANCE)
|
|
'page_help_content' => [
|
|
'type' => 'text',
|
|
'group' => 'content_legal',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'Help Center / FAQ Content',
|
|
],
|
|
'page_tos_content' => [
|
|
'type' => 'text',
|
|
'group' => 'content_legal',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'Terms of Use Content',
|
|
],
|
|
'page_privacy_content' => [
|
|
'type' => 'text',
|
|
'group' => 'content_legal',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'Privacy Policy (UU PDP) Content',
|
|
],
|
|
'page_about_content' => [
|
|
'type' => 'text',
|
|
'group' => 'content_legal',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'About Us Content',
|
|
],
|
|
'page_security_content' => [
|
|
'type' => 'text',
|
|
'group' => 'content_legal',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'Security Policy Content',
|
|
],
|
|
'require_pdp_on_registration' => [
|
|
'type' => 'bool',
|
|
'group' => 'content_legal',
|
|
'is_public' => false,
|
|
'default' => true,
|
|
'description' => 'Make PDP agreement mandatory during sign-up',
|
|
],
|
|
'feature_cookie_banner' => [
|
|
'type' => 'bool',
|
|
'group' => 'content_legal',
|
|
'is_public' => true,
|
|
'default' => true,
|
|
'description' => 'Enable Cookie Consent Banner',
|
|
],
|
|
'pdp_document_version' => [
|
|
'type' => 'int',
|
|
'group' => 'content_legal',
|
|
'is_public' => true,
|
|
'default' => 1,
|
|
'description' => 'Current version of legal documents (increment to force re-agreement)',
|
|
],
|
|
'tos_document_version' => [
|
|
'type' => 'int',
|
|
'group' => 'content_legal',
|
|
'is_public' => true,
|
|
'default' => 1,
|
|
'description' => 'Current version of Terms of Service',
|
|
],
|
|
|
|
'pdp_dpo_email' => [
|
|
'type' => 'string',
|
|
'group' => 'content_legal',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'Contact email for Data Protection Officer (PDP)',
|
|
],
|
|
'pdp_company_address' => [
|
|
'type' => 'string',
|
|
'group' => 'content_legal',
|
|
'is_public' => true,
|
|
'default' => '',
|
|
'description' => 'Official company address for legal documentation',
|
|
],
|
|
|
|
// AI CONFIGURATION
|
|
'ai_enabled' => [
|
|
'type' => 'bool',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'Enable AI services',
|
|
],
|
|
'ai_provider' => [
|
|
'type' => 'string',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => 'gpt',
|
|
'description' => 'Active AI provider',
|
|
],
|
|
'ai_gpt_key' => [
|
|
'type' => 'string',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'OpenAI GPT API Key',
|
|
],
|
|
'ai_gemini_key' => [
|
|
'type' => 'string',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Google Gemini API Key',
|
|
],
|
|
'ai_claude_key' => [
|
|
'type' => 'string',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Anthropic Claude API Key',
|
|
],
|
|
'ai_deepseek_key' => [
|
|
'type' => 'string',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'DeepSeek API Key',
|
|
],
|
|
'ai_grok_key' => [
|
|
'type' => 'string',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'xAI Grok API Key',
|
|
],
|
|
'ai_mistral_key' => [
|
|
'type' => 'string',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Mistral AI API Key',
|
|
],
|
|
'ai_openrouter_key' => [
|
|
'type' => 'string',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'OpenRouter API Key',
|
|
],
|
|
'ai_ollama_base_url' => [
|
|
'type' => 'string',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => 'http://localhost:11434',
|
|
'description' => 'Ollama Base URL',
|
|
],
|
|
'ai_default_model' => [
|
|
'type' => 'string',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => 'gpt-4o',
|
|
'description' => 'Default AI model',
|
|
],
|
|
'ai_system_instruction' => [
|
|
'type' => 'text',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'Default system instruction',
|
|
],
|
|
'ai_temperature' => [
|
|
'type' => 'float',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => 0.7,
|
|
'description' => 'AI temperature',
|
|
],
|
|
'ai_max_tokens' => [
|
|
'type' => 'int',
|
|
'group' => 'ai_config',
|
|
'is_public' => false,
|
|
'default' => 2000,
|
|
'description' => 'AI max tokens',
|
|
],
|
|
|
|
// SAP RFC Configuration
|
|
'sap_rfc_ashost' => [
|
|
'type' => 'string',
|
|
'group' => 'sap_integration',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'SAP Application Server Host',
|
|
],
|
|
'sap_rfc_sysnr' => [
|
|
'type' => 'string',
|
|
'group' => 'sap_integration',
|
|
'is_public' => false,
|
|
'default' => '00',
|
|
'description' => 'SAP System Number',
|
|
],
|
|
'sap_rfc_client' => [
|
|
'type' => 'string',
|
|
'group' => 'sap_integration',
|
|
'is_public' => false,
|
|
'default' => '100',
|
|
'description' => 'SAP Client Number',
|
|
],
|
|
'sap_rfc_user' => [
|
|
'type' => 'string',
|
|
'group' => 'sap_integration',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'SAP Username',
|
|
],
|
|
'sap_rfc_passwd' => [
|
|
'type' => 'string',
|
|
'group' => 'sap_integration',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'SAP Password',
|
|
],
|
|
'sap_rfc_router' => [
|
|
'type' => 'string',
|
|
'group' => 'sap_integration',
|
|
'is_public' => false,
|
|
'default' => '',
|
|
'description' => 'SAP Router string (optional)',
|
|
],
|
|
'sap_rfc_trace' => [
|
|
'type' => 'string',
|
|
'group' => 'sap_integration',
|
|
'is_public' => false,
|
|
'default' => '0',
|
|
'description' => 'SAP RFC Trace Level',
|
|
],
|
|
|
|
// MONITORING ENGINE
|
|
'engine_pulse_enabled' => [
|
|
'type' => 'bool',
|
|
'group' => 'monitoring',
|
|
'is_public' => false,
|
|
'default' => true,
|
|
'description' => 'Enable Laravel Pulse recording and dashboard',
|
|
],
|
|
'engine_telescope_enabled' => [
|
|
'type' => 'bool',
|
|
'group' => 'monitoring',
|
|
'is_public' => false,
|
|
'default' => true,
|
|
'description' => 'Enable Laravel Telescope recording and dashboard',
|
|
],
|
|
'engine_swagger_enabled' => [
|
|
'type' => 'bool',
|
|
'group' => 'monitoring',
|
|
'is_public' => false,
|
|
'default' => true,
|
|
'description' => 'Enable API Documentation (L5-Swagger)',
|
|
],
|
|
'engine_horizon_enabled' => [
|
|
'type' => 'bool',
|
|
'group' => 'monitoring',
|
|
'is_public' => false,
|
|
'default' => true,
|
|
'description' => 'Enable Laravel Horizon (Redis Queue Monitor)',
|
|
],
|
|
|
|
// AI HEALING ENGINE
|
|
'ai_healing_enabled' => [
|
|
'type' => 'bool',
|
|
'group' => 'ai_healing',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'Enable AI Self-Healing Engine (Intercept & Fix Exceptions)',
|
|
],
|
|
'ai_healing_allow_cache' => [
|
|
'type' => 'bool',
|
|
'group' => 'ai_healing',
|
|
'is_public' => false,
|
|
'default' => true,
|
|
'description' => 'Allow AI to clear cache',
|
|
],
|
|
'ai_healing_allow_queue' => [
|
|
'type' => 'bool',
|
|
'group' => 'ai_healing',
|
|
'is_public' => false,
|
|
'default' => true,
|
|
'description' => 'Allow AI to restart queue workers',
|
|
],
|
|
'ai_healing_allow_maintenance' => [
|
|
'type' => 'bool',
|
|
'group' => 'ai_healing',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'Allow AI to toggle maintenance mode',
|
|
],
|
|
'ai_healing_allow_db' => [
|
|
'type' => 'bool',
|
|
'group' => 'ai_healing',
|
|
'is_public' => false,
|
|
'default' => false,
|
|
'description' => 'Allow AI to run migrations (Caution)',
|
|
],
|
|
'ai_healing_max_attempts_per_hour' => [
|
|
'type' => 'int',
|
|
'group' => 'ai_healing',
|
|
'is_public' => false,
|
|
'default' => 5,
|
|
'description' => 'Maximum auto-fix attempts per hour (Circuit Breaker)',
|
|
],
|
|
];
|
|
}
|