Перейти к основному содержимому

Конфигурация и безопасность

Главный project config

config/systematika.php содержит project-specific настройки.

Config keyEnvНазначение
webserver_urlWEBSERVER_URLБазовый URL Laravel/webserver для прогрева cache
wp_urlWP_URLБазовый URL WordPress/v1
wp_hook_keyWP_HOOK_KEYSecret для WP cache hook
api_keyAPI_KEYSecret для internal API
admin_panelADMIN_PANELPath админки Filament
must_verify_emailMUST_VERIFY_EMAILНужно ли подтверждение email
registration_enableREGISTRATION_ENABLEВключена ли регистрация
unauthorized_roadmap_urlUNAUTHORIZED_ROADMAP_URLURL roadmap для неавторизованных
modern_catalog_urlMODERN_CATALOG_URLPrefix каталога
root_htaccessROOT_HTACCESSПуть к внешнему .htaccess для router commands
mk_api_keyMK_API_KEYКлюч MK API

Важные env-переменные Laravel

EnvНазначение
APP_ENVОкружение
APP_KEYLaravel encryption key
APP_URLБазовый URL приложения
DB_CONNECTIONПо умолчанию может быть sqlite, но проект ожидает MySQL для основной работы
DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORDОсновное MySQL подключение
CACHE_STOREПо умолчанию database
QUEUE_CONNECTIONПо умолчанию database
SESSION_DRIVERПо умолчанию database

MySQL и LOCAL_COMPUTER

config/database.php содержит дополнительную логику: при LOCAL_COMPUTER=1 host/port для mysql и gktomk берутся из local env-переменных.

Аудит выявил риск: код ожидает DB_GKTOMK_LOCAL_HOST и DB_GKTOMK_LOCAL_PORT, а .env.example содержит похожее имя с опечаткой DB_GKTOML_LOCAL_HOST/PORT.

Если локальное подключение gktomk не работает, сначала проверьте это расхождение.

Secrets

Опасная деталь: дефолтные значения WP_HOOK_KEY и API_KEY в config равны systematika, если env не задан.

Для production обязательно задать уникальные значения:

WP_HOOK_KEY=long-random-secret
API_KEY=another-long-random-secret

Auth

Проект использует:

  • Laravel web guard;
  • Fortify actions;
  • Jetstream actions;
  • Filament login;
  • Spatie Permission;
  • custom User::canAccessPanel();
  • auto-login через gk_uhash.

Важно: стандартные Fortify/Jetstream package routes отключены. Основной admin entrypoint — Filament.

Доступ в Filament

Доступ проверяется методом User::canAccessPanel().

Не считайте, что роль admin автоматически равна доступу в панель. В проекте фигурирует permission landing_admin_bar:view.

API protection

Endpoint groupMiddlewareHeader
WP cache hookCheckWpHookKeyX-WP-HOOK-KEY
Internal APICheckApiKeyX-API-KEY

Security hotspots

HotspotПочему важно
LoginByGkUHashГлобальный auto-login и auto-create user
RedirectДанные из БД могут изменить любой URL flow
/api/debug-dumpМожет писать чувствительные request/config данные в logs
/debug/loginus/callbackDebug OAuth callback с dump/dd
ROOT_HTACCESSRouter commands могут менять внешний .htaccess
landing_proxy_pages.to_pathLaravel может ходить за HTML по внешним URL
WP_HOOK_KEY/API_KEY defaultsНельзя оставлять дефолты в production

Что проверять перед production

  1. APP_ENV=production.
  2. APP_DEBUG=false.
  3. Уникальный APP_KEY.
  4. Уникальные WP_HOOK_KEY и API_KEY.
  5. Debug endpoints отключены или защищены.
  6. ROOT_HTACCESS указывает на ожидаемый файл.
  7. Queue worker запущен.
  8. Cron schedule:run запущен.
  9. failed_jobs мониторится.
  10. Filament permissions выданы только нужным пользователям.