Prepare Beta Version
This commit is contained in:
117
config/auth.php
Normal file
117
config/auth.php
Normal file
@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Defaults
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option defines the default authentication "guard" and password
|
||||
| reset "broker" for your application. You may change these values
|
||||
| as required, but they're a perfect start for most applications.
|
||||
|
|
||||
*/
|
||||
|
||||
'defaults' => [
|
||||
'guard' => env('AUTH_GUARD', 'web'),
|
||||
'passwords' => env('AUTH_PASSWORD_BROKER', 'users'),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Guards
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Next, you may define every authentication guard for your application.
|
||||
| Of course, a great default configuration has been defined for you
|
||||
| which utilizes session storage plus the Eloquent user provider.
|
||||
|
|
||||
| All authentication guards have a user provider, which defines how the
|
||||
| users are actually retrieved out of your database or other storage
|
||||
| system used by the application. Typically, Eloquent is utilized.
|
||||
|
|
||||
| Supported: "session"
|
||||
|
|
||||
*/
|
||||
|
||||
'guards' => [
|
||||
'web' => [
|
||||
'driver' => 'session',
|
||||
'provider' => 'users',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| User Providers
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| All authentication guards have a user provider, which defines how the
|
||||
| users are actually retrieved out of your database or other storage
|
||||
| system used by the application. Typically, Eloquent is utilized.
|
||||
|
|
||||
| If you have multiple user tables or models you may configure multiple
|
||||
| providers to represent the model / table. These providers may then
|
||||
| be assigned to any extra authentication guards you have defined.
|
||||
|
|
||||
| Supported: "database", "eloquent"
|
||||
|
|
||||
*/
|
||||
|
||||
'providers' => [
|
||||
'users' => [
|
||||
'driver' => 'eloquent',
|
||||
'model' => env('AUTH_MODEL', Koneko\VuexyAdmin\Models\User::class),
|
||||
],
|
||||
|
||||
// 'users' => [
|
||||
// 'driver' => 'database',
|
||||
// 'table' => 'users',
|
||||
// ],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Resetting Passwords
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| These configuration options specify the behavior of Laravel's password
|
||||
| reset functionality, including the table utilized for token storage
|
||||
| and the user provider that is invoked to actually retrieve users.
|
||||
|
|
||||
| The expiry time is the number of minutes that each reset token will be
|
||||
| considered valid. This security feature keeps tokens short-lived so
|
||||
| they have less time to be guessed. You may change this as needed.
|
||||
|
|
||||
| The throttle setting is the number of seconds a user must wait before
|
||||
| generating more password reset tokens. This prevents the user from
|
||||
| quickly generating a very large amount of password reset tokens.
|
||||
|
|
||||
*/
|
||||
|
||||
'passwords' => [
|
||||
'users' => [
|
||||
'provider' => 'users',
|
||||
'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'),
|
||||
'expire' => 60,
|
||||
'throttle' => 60,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Confirmation Timeout
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may define the amount of seconds before a password confirmation
|
||||
| window expires and users are asked to re-enter their password via the
|
||||
| confirmation screen. By default, the timeout lasts for three hours.
|
||||
|
|
||||
*/
|
||||
|
||||
'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800),
|
||||
|
||||
];
|
@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'connections' => [
|
||||
'keyvault' => [
|
||||
'driver' => 'mysql',
|
||||
'host' => env('KEYVAULT_DB_HOST', '127.0.0.1'),
|
||||
'database' => env('KEYVAULT_DB_DATABASE', 'key_vault'),
|
||||
'username' => env('KEYVAULT_DB_USERNAME', 'vault_user'),
|
||||
'password' => env('KEYVAULT_DB_PASSWORD', 'secret'),
|
||||
'charset' => 'utf8mb4',
|
||||
'collation' => 'utf8mb4_unicode_ci',
|
||||
'prefix' => env('KEYVAULT_DB_PREFIX', ''),
|
||||
'strict' => true,
|
||||
'engine' => null,
|
||||
],
|
||||
],
|
||||
];
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// Variables
|
||||
|
||||
return [
|
||||
"title" => "Koneko Soluciones Tecnológicas",
|
||||
"description" => "Koneko Soluciones Tecnológicas ofrece desarrollo de sistemas empresariales, sitios web profesionales, inteligencia artificial, infraestructura y soluciones digitales avanzadas para negocios en México.",
|
||||
@ -7,4 +7,18 @@ return [
|
||||
"app_name" => "koneko.mx",
|
||||
"app_logo" => "../vendor/vuexy-admin/img/logo/koneko-04.png",
|
||||
"favicon" => "../vendor/vuexy-admin/img/logo/koneko-04.png",
|
||||
|
||||
// ================== 📦 CACHE GENERAL ==================
|
||||
'cache' => [
|
||||
'enabled' => (bool) env('KONEKO_CACHE_ENABLED', true),
|
||||
'ttl' => (int) env('KONEKO_CACHE_TTL', 20 * 24 * 60), // 20 días
|
||||
],
|
||||
|
||||
// ================== 📦 CACHE DE COMPONENTE ==================
|
||||
'core' => [
|
||||
'cache' => [
|
||||
'enabled' => (bool) env('KONEKO_CORE_CACHE_ENABLED', true),
|
||||
'ttl' => (int) env('KONEKO_CORE_CACHE_TTL', 20 * 24 * 60),
|
||||
],
|
||||
],
|
||||
];
|
||||
|
@ -1,107 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Personalización de interfaz
|
||||
'vuexy' => [
|
||||
'myLayout' => 'horizontal', // Options[String]: vertical(default), horizontal
|
||||
'myTheme' => 'theme-semi-dark', // Options[String]: theme-default(default), theme-bordered, theme-semi-dark
|
||||
'myStyle' => 'light', // Options[String]: light(default), dark & system mode
|
||||
'myRTLSupport' => false, // options[Boolean]: true(default), false // To provide RTLSupport or not
|
||||
'myRTLMode' => false, // options[Boolean]: false(default), true // To set layout to RTL layout (myRTLSupport must be true for rtl mode)
|
||||
'hasCustomizer' => true, // options[Boolean]: true(default), false // Display customizer or not THIS WILL REMOVE INCLUDED JS FILE. SO LOCAL STORAGE WON'T WORK
|
||||
'displayCustomizer' => true, // options[Boolean]: true(default), false // Display customizer UI or not, THIS WON'T REMOVE INCLUDED JS FILE. SO LOCAL STORAGE WILL WORK
|
||||
'contentLayout' => 'compact', // options[String]: 'compact', 'wide' (compact=container-xxl, wide=container-fluid)
|
||||
'navbarType' => 'static', // options[String]: 'sticky', 'static', 'hidden' (Only for vertical Layout)
|
||||
'footerFixed' => false, // options[Boolean]: false(default), true // Footer Fixed
|
||||
'menuFixed' => false, // options[Boolean]: true(default), false // Layout(menu) Fixed (Only for vertical Layout)
|
||||
'menuCollapsed' => true, // options[Boolean]: false(default), true // Show menu collapsed, (Only for vertical Layout)
|
||||
'headerType' => 'static', // options[String]: 'static', 'fixed' (for horizontal layout only)
|
||||
'showDropdownOnHover' => false, // true, false (for horizontal layout only)
|
||||
'authViewMode' => 'cover', // Options[String]: cover(default), basic
|
||||
'maxQuickLinks' => 8, // options[Integer]: 8(default), 6, 8, 10
|
||||
'customizerControls' => [
|
||||
'style',
|
||||
'headerType',
|
||||
'contentLayout',
|
||||
'layoutCollapsed',
|
||||
'layoutNavbarOptions',
|
||||
'themes',
|
||||
], // To show/hide customizer options
|
||||
],
|
||||
|
||||
// HTTPS y proxies
|
||||
'security' => [
|
||||
'force_https' => (bool) env('FORCE_HTTPS', false),
|
||||
'trust_proxy' => (bool) env('TRUST_PROXY', false),
|
||||
'trust_proxy_ips' => env('TRUST_PROXY_IPS', '*'),
|
||||
|
||||
// Key Vault & Encryption Management
|
||||
'key_vault' => [
|
||||
'driver' => env('VUEXY_KEY_VAULT_DRIVER', 'laravel'), // Options: laravel, sqlite, mysql, mariadb, go_service
|
||||
'enabled' => (bool) env('VUEXY_KEY_VAULT_ENABLED', true),
|
||||
|
||||
// Laravel Default Encryption (APP_KEY)
|
||||
'laravel' => [
|
||||
'key' => env('APP_KEY'),
|
||||
'algorithm' => 'AES-256-CBC',
|
||||
],
|
||||
|
||||
// Second DB Configuration (Requires separate connection)
|
||||
'database' => [
|
||||
'connection' => env('VUEXY_KEY_VAULT_DB_CONNECTION', 'vault'),
|
||||
'table' => env('VUEXY_KEY_VAULT_DB_TABLE', 'vault_keys'),
|
||||
'algorithm' => env('VUEXY_KEY_VAULT_DB_ALGORITHM', 'AES-256-CBC'),
|
||||
],
|
||||
|
||||
// External Go Microservice
|
||||
'service' => [
|
||||
'base_url' => env('VUEXY_KEY_VAULT_SERVICE_URL'),
|
||||
'api_token' => env('VUEXY_KEY_VAULT_SERVICE_TOKEN'),
|
||||
'timeout' => (int) env('VUEXY_KEY_VAULT_SERVICE_TIMEOUT', 5),
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Cache
|
||||
'cache' => [
|
||||
'enabled' => (bool) env('VUEXY_CACHE_ENABLED', true),
|
||||
'ttl' => (int) env('VUEXY_CACHE_TTL', 20 * 24 * 60),
|
||||
],
|
||||
|
||||
// Avatar
|
||||
'avatar' => [
|
||||
'initials' => [
|
||||
'max_length' => (int) env('VUEXY_AVATAR_INITIALS_MAX_LENGTH', 2),
|
||||
'disk' => env('VUEXY_AVATAR_INITIALS_DISK', 'public'),
|
||||
'directory' => env('VUEXY_AVATAR_INITIALS_DIRECTORY', 'initial-avatars'),
|
||||
'size' => (int) env('VUEXY_AVATAR_INITIALS_SIZE', 512),
|
||||
'background' => env('VUEXY_AVATAR_INITIALS_BACKGROUND', '#EBF4FF'),
|
||||
'colors' => json_decode(env('VUEXY_AVATAR_INITIALS_COLORS', json_encode(['#3b82f6', '#808390', '#28c76f', '#ff4c51', '#ff9f43', '#00bad1', '#4b4b4b'])), true),
|
||||
'font_size_ratio' => (float) env('VUEXY_AVATAR_INITIALS_FONT_SIZE_RATIO', 0.4),
|
||||
'fallback_text' => env('VUEXY_AVATAR_INITIALS_FALLBACK_TEXT', 'NA'),
|
||||
'cache' => [
|
||||
'ttl' => (int) env('VUEXY_AVATAR_INITIALS_CACHE_TTL', 30 * 24 * 60),
|
||||
],
|
||||
],
|
||||
'image' => [
|
||||
'disk' => env('VUEXY_AVATAR_IMAGE_DISK', 'public'),
|
||||
'directory' => env('VUEXY_AVATAR_IMAGE_DIRECTORY', 'profile-photos'),
|
||||
'width' => (int) env('VUEXY_AVATAR_IMAGE_WIDTH', 512),
|
||||
'height' => (int) env('VUEXY_AVATAR_IMAGE_HEIGHT', 512),
|
||||
'fit_method' => env('VUEXY_AVATAR_IMAGE_FIT_METHOD', 'cover'),
|
||||
],
|
||||
],
|
||||
|
||||
// Menú
|
||||
'menu' => [
|
||||
'cache' => [
|
||||
'enabled' => (bool) env('VUEXY_MENU_CACHE_ENABLED', true),
|
||||
'ttl' => (int) env('VUEXY_MENU_CACHE_TTL', 2 * 24 * 60),
|
||||
],
|
||||
'debug' => [
|
||||
'show_broken_routers' => (bool) env('VUEXY_MENU_DEBUG_SHOW_BROKEN_ROUTES', false),
|
||||
'show_disallowed_links' => (bool) env('VUEXY_MENU_DEBUG_SHOW_DISALLOWED_LINKS', false),
|
||||
'show_hidden_items' => (bool) env('VUEXY_MENU_DEBUG_SHOW_HIDDEN_ITEMS', false),
|
||||
],
|
||||
],
|
||||
];
|
57
config/koneko_key_vault.php
Normal file
57
config/koneko_key_vault.php
Normal file
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Vault Client Mode
|
||||
|--------------------------------------------------------------------------
|
||||
| Define si este proyecto se comporta como "client", "server", o "both".
|
||||
| Este valor se puede usar para omitir migraciones o inicializar módulos.
|
||||
*/
|
||||
'mode' => env('KONEKO_KEY_VAULT_MODE', 'client'), // client | server | both
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Cliente de Claves - Lectura local o remota
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'client' => [
|
||||
'driver' => env('KONEKO_KEY_VAULT_DRIVER', 'laravel'), // koneko_api | database | laravel
|
||||
'connection' => env('KONEKO_KEY_VAULT_DB_CONNECTION', 'vault'),
|
||||
'table' => env('KONEKO_KEY_VAULT_DB_TABLE', 'vault_client_keys'),
|
||||
|
||||
'project' => env('KONEKO_PROJECT_CODE', 'erp'),
|
||||
'namespace' => env('KONEKO_KEY_VAULT_NAMESPACE', 'default'),
|
||||
'client_id' => env('KONEKO_CLIENT_ID'),
|
||||
|
||||
// 🔐 Opción para lectura desde archivo plano en sistema
|
||||
'key_path' => env('KONEKO_KEY_VAULT_CLIENT_KEY_PATH', '/etc/koneko/vault_value.key'),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Servidor de Claves - Proyectos que gestionan claves de múltiples clientes
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'server' => [
|
||||
'enabled' => env('KONEKO_KEY_VAULT_SERVER_ENABLED', false),
|
||||
'connection' => env('KONEKO_KEY_VAULT_SERVER_CONNECTION', 'vault'),
|
||||
'table' => env('KONEKO_KEY_VAULT_SERVER_TABLE', 'vault_client_keys'),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Drivers disponibles (por ejemplo, API externa Koneko)
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'drivers' => [
|
||||
'koneko_api' => [
|
||||
'base_url' => env('KONEKO_VAULT_API_URL', 'https://vault.koneko.mx/api/v1/keys'),
|
||||
'api_token' => env('KONEKO_VAULT_API_TOKEN'),
|
||||
'timeout' => (int) env('KONEKO_VAULT_API_TIMEOUT', 3),
|
||||
],
|
||||
],
|
||||
];
|
16
config/koneko_key_vault_db.php
Normal file
16
config/koneko_key_vault_db.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'driver' => 'mysql',
|
||||
'host' => env('KEYVAULT_DB_HOST', '127.0.0.1'),
|
||||
'database' => env('KEYVAULT_DB_DATABASE', 'key_vault'),
|
||||
'username' => env('KEYVAULT_DB_USERNAME', 'vault_user'),
|
||||
'password' => env('KEYVAULT_DB_PASSWORD', 'secret'),
|
||||
'charset' => 'utf8mb4',
|
||||
'collation' => 'utf8mb4_unicode_ci',
|
||||
'prefix' => env('KEYVAULT_DB_PREFIX', ''),
|
||||
'strict' => true,
|
||||
'engine' => null,
|
||||
];
|
48
config/koneko_layout.php
Normal file
48
config/koneko_layout.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// ================== 🌐 LAYOUT ==================
|
||||
// Personalización de interfaz
|
||||
'vuexy' => [
|
||||
'myLayout' => 'horizontal', // Options[String]: vertical(default), horizontal
|
||||
'myTheme' => 'theme-semi-dark', // Options[String]: theme-default(default), theme-bordered, theme-semi-dark
|
||||
'myStyle' => 'light', // Options[String]: light(default), dark & system mode
|
||||
'myRTLSupport' => false, // options[Boolean]: true(default), false // To provide RTLSupport or not
|
||||
'myRTLMode' => false, // options[Boolean]: false(default), true // To set layout to RTL layout (myRTLSupport must be true for rtl mode)
|
||||
'hasCustomizer' => true, // options[Boolean]: true(default), false // Display customizer or not THIS WILL REMOVE INCLUDED JS FILE. SO LOCAL STORAGE WON'T WORK
|
||||
'displayCustomizer' => true, // options[Boolean]: true(default), false // Display customizer UI or not, THIS WON'T REMOVE INCLUDED JS FILE. SO LOCAL STORAGE WILL WORK
|
||||
'contentLayout' => 'compact', // options[String]: 'compact', 'wide' (compact=container-xxl, wide=container-fluid)
|
||||
'navbarType' => 'static', // options[String]: 'sticky', 'static', 'hidden' (Only for vertical Layout)
|
||||
'footerFixed' => false, // options[Boolean]: false(default), true // Footer Fixed
|
||||
'menuFixed' => false, // options[Boolean]: true(default), false // Layout(menu) Fixed (Only for vertical Layout)
|
||||
'menuCollapsed' => true, // options[Boolean]: false(default), true // Show menu collapsed, (Only for vertical Layout)
|
||||
'headerType' => 'static', // options[String]: 'static', 'fixed' (for horizontal layout only)
|
||||
'showDropdownOnHover' => false, // true, false (for horizontal layout only)
|
||||
'authViewMode' => 'cover', // Options[String]: cover(default), basic
|
||||
'maxQuickLinks' => 12, // options[Integer]: 8(default), 8, 10, 12
|
||||
'customizerControls' => [
|
||||
'style',
|
||||
'headerType',
|
||||
'contentLayout',
|
||||
'layoutCollapsed',
|
||||
'layoutNavbarOptions',
|
||||
'themes',
|
||||
], // To show/hide customizer options
|
||||
],
|
||||
// 📋 Menú de Navegación
|
||||
'menu' => [
|
||||
'debug' => [
|
||||
'show_broken_routes' => (bool) env('VUEXY_MENU_DEBUG_SHOW_BROKEN_ROUTES', false),
|
||||
'show_disallowed_links'=> (bool) env('VUEXY_MENU_DEBUG_SHOW_DISALLOWED_LINKS', false),
|
||||
'show_hidden_items' => (bool) env('VUEXY_MENU_DEBUG_SHOW_HIDDEN_ITEMS', false),
|
||||
],
|
||||
'cache' => [
|
||||
'enabled' => (bool) env('VUEXY_MENU_CACHE_ENABLED', true),
|
||||
'ttl' => (int) env('VUEXY_MENU_CACHE_TTL', 2 * 24 * 60),
|
||||
],
|
||||
],
|
||||
'cache' => [
|
||||
'enabled' => (bool) env('VUEXY_CACHE_ENABLED', true),
|
||||
'ttl' => (int) env('VUEXY_CACHE_TTL', 2 * 24 * 60),
|
||||
],
|
||||
];
|
59
config/koneko_security.php
Normal file
59
config/koneko_security.php
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// ================== 🔒 SEGURIDAD ==================
|
||||
// 🔐 HTTPS y Proxies
|
||||
'https' => [
|
||||
'force' => (bool) env('FORCE_HTTPS', false),
|
||||
],
|
||||
'proxies' => [
|
||||
'enabled' => (bool) env('TRUST_PROXY', false),
|
||||
'ips' => env('TRUST_PROXY_IPS', '*'),
|
||||
],
|
||||
|
||||
// 🗝️ Key Vault & Gestión de Claves
|
||||
'key_vault' => [
|
||||
// Namespace por defecto y cliente global (si aplica)
|
||||
'default_namespace' => env('KONEKO_KEY_VAULT_NAMESPACE', 'default'),
|
||||
'default_project' => env('KONEKO_PROJECT_CODE', 'erp'),
|
||||
'default_client_id' => env('KONEKO_CLIENT_ID'),
|
||||
|
||||
|
||||
// 🔑 Cliente que accede a claves de un servidor remoto o local
|
||||
'client' => [
|
||||
'driver' => env('KONEKO_KEY_VAULT_DRIVER', 'database'), // koneko_api, database, laravel
|
||||
'connection' => env('KONEKO_KEY_VAULT_DB_CONNECTION', 'vault'),
|
||||
'table' => env('KONEKO_KEY_VAULT_DB_TABLE', 'vault_client_keys'),
|
||||
'project' => env('KONEKO_PROJECT_CODE', 'erp'),
|
||||
'namespace' => env('KONEKO_KEY_VAULT_NAMESPACE', 'default'),
|
||||
'client_id' => env('KONEKO_CLIENT_ID'),
|
||||
],
|
||||
|
||||
// 🗃️ Conexión y configuración del servidor de claves (solo si actúa como vault)
|
||||
'server' => [
|
||||
'connection' => 'vault', // conexión que administra la tabla físicamente
|
||||
'table' => 'vault_client_keys',
|
||||
],
|
||||
|
||||
|
||||
'drivers' => [
|
||||
// Laravel Default Encryption (APP_KEY)
|
||||
'laravel' => [
|
||||
'key' => env('APP_KEY'),
|
||||
'algorithm' => 'AES-256-CBC',
|
||||
],
|
||||
// Second DB Configuration (Requires separate connection)
|
||||
'database' => [
|
||||
'connection' => env('KONEKO_KEY_VAULT_DB_CONNECTION', 'vault'),
|
||||
'table' => env('KONEKO_KEY_VAULT_DB_TABLE', 'vault_keys'),
|
||||
'algorithm' => env('KONEKO_KEY_VAULT_DB_ALGORITHM', 'AES-256-CBC'),
|
||||
],
|
||||
// External Go Microservice
|
||||
'koneko_api' => [
|
||||
'base_url' => env('KONEKO_KEY_VAULT_SERVICE_URL'),
|
||||
'api_token' => env('KONEKO_KEY_VAULT_SERVICE_TOKEN'),
|
||||
'timeout' => (int) env('KONEKO_KEY_VAULT_SERVICE_TIMEOUT', 5),
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
39
config/koneko_ui.php
Normal file
39
config/koneko_ui.php
Normal file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// ================== 👤 UI / AVATAR ==================
|
||||
'avatar' => [
|
||||
// 🔠 Avatares por Iniciales
|
||||
'initials' => [
|
||||
'max_length' => (int) env('VUEXY_AVATAR_INITIALS_MAX_LENGTH', 2),
|
||||
'disk' => env('VUEXY_AVATAR_INITIALS_DISK', 'public'),
|
||||
'directory' => env('VUEXY_AVATAR_INITIALS_DIRECTORY', 'initial-avatars'),
|
||||
'size' => (int) env('VUEXY_AVATAR_INITIALS_SIZE', 512),
|
||||
'background' => env('VUEXY_AVATAR_INITIALS_BACKGROUND', '#EBF4FF'),
|
||||
'colors' => json_decode(env('VUEXY_AVATAR_INITIALS_COLORS', json_encode([
|
||||
'#3b82f6', '#808390', '#28c76f', '#ff4c51',
|
||||
'#ff9f43', '#00bad1', '#4b4b4b'
|
||||
])), true),
|
||||
'font_size_ratio' => (float) env('VUEXY_AVATAR_INITIALS_FONT_SIZE_RATIO', 0.4),
|
||||
'fallback_text' => env('VUEXY_AVATAR_INITIALS_FALLBACK_TEXT', 'NA'),
|
||||
|
||||
// 🧹 Mantenimiento y Depuración de Avatares
|
||||
'maintenance' => [
|
||||
'enabled' => (bool) env('VUEXY_AVATAR_CLEANUP_ENABLED', true),
|
||||
'ttl_days' => (int) env('VUEXY_AVATAR_CLEANUP_TTL_DAYS', 30), // Días antes de considerar obsoletos los avatares
|
||||
'cleanup_cron' => env('VUEXY_AVATAR_CLEANUP_CRON', '0 3 * * *'), // Hora de ejecución del Job de limpieza (por defecto a las 3 AM)
|
||||
'max_batch_size' => (int) env('VUEXY_AVATAR_CLEANUP_MAX_BATCH', 500), // Máximo de archivos a procesar por ejecución
|
||||
'log_deletions' => (bool) env('VUEXY_AVATAR_CLEANUP_LOG', true), // Registrar o no las eliminaciones
|
||||
],
|
||||
],
|
||||
|
||||
// 📸 Avatares por Imagen
|
||||
'image' => [
|
||||
'disk' => env('VUEXY_AVATAR_IMAGE_DISK', 'public'),
|
||||
'directory' => env('VUEXY_AVATAR_IMAGE_DIRECTORY', 'profile-photos'),
|
||||
'width' => (int) env('VUEXY_AVATAR_IMAGE_WIDTH', 512),
|
||||
'height' => (int) env('VUEXY_AVATAR_IMAGE_HEIGHT', 512),
|
||||
'fit_method' => env('VUEXY_AVATAR_IMAGE_FIT_METHOD', 'cover'),
|
||||
],
|
||||
],
|
||||
];
|
@ -481,15 +481,16 @@ return [
|
||||
],
|
||||
],
|
||||
],
|
||||
'_extra_quicklinks' => [
|
||||
'Inicio' => [
|
||||
'icon' => 'ti ti-home',
|
||||
'route' => 'admin.core.pages.home.index',
|
||||
'can' => 'admin.core.pages.home.view',
|
||||
],
|
||||
'Mi perfil' => [
|
||||
'icon' => 'ti ti-user-circle',
|
||||
'route' => 'admin.users.profile',
|
||||
'_extra' => [
|
||||
'_quicklinks' => [
|
||||
'Inicio' => [
|
||||
'icon' => 'ti ti-home',
|
||||
'route' => 'admin.core.pages.home.index',
|
||||
],
|
||||
'Mi perfil' => [
|
||||
'icon' => 'ti ti-user-circle',
|
||||
'route' => 'admin.users.profile',
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
Reference in New Issue
Block a user