SLOT-H: Модуль Base
Модуль Base является ядром экосистемы и неотъемлемой частью системы. Он не может быть удалён или заменён, так как обеспечивает базовую функциональность, необходимую для работы любого проекта.
Состав модуля
Модуль Base включает следующие компоненты:
Пользователи и аутентификация
Управление пользователями, их регистрация, авторизация и восстановление доступа. Хранение данных о пользователях, их ролях и правах.
Роли и права
Иерархическая система ролей с возможностью наследования прав. Каждая роль может иметь родительскую роль, от которой наследуются права. Права назначаются как ролям, так и отдельным пользователям.
Очереди задач
Система фоновых задач для асинхронной обработки. Поддерживается отправка писем, обработка изображений, создание дампов базы данных и другие типы задач. Очередь работает через CLI-воркер, запускаемый по cron.
Логирование
Логирование действий пользователей и системных событий. Логируются входы в систему, просмотры страниц, изменения данных, создание и удаление записей.
Константы
Динамические константы, хранящиеся в базе данных. Позволяют изменять настройки системы без редактирования файлов и перезагрузки сервера.
Короткие ссылки
Управление короткими URL-адресами для страниц проекта. Позволяет создавать человеко-читаемые адреса вместо стандартных `module/controller/action`.
Файлы и изображения
Управление загруженными файлами и изображениями. Поддерживается обработка изображений: изменение размера, создание превью, оптимизация.
Статические файлы
Управление версиями CSS и JS файлов через хеширование. Автоматическое обновление версий при изменении файлов для сброса кеша браузера.
Уведомления
Система уведомлений пользователей о событиях. Поддерживаются различные типы уведомлений, включая системные оповещения.
Таблицы модуля Base
- `aliases` - короткие ссылки на страницы
- `auth_checks` - попытки авторизации
- `brutus` - попытки несанкционированного доступа
- `constants` - системные и пользовательские константы
- `entities` - уникальные идентификаторы сущностей
- `icons` - SVG-иконки
- `person_actives` - онлайн-статус пользователей
- `person_alerts` - уведомления пользователей
- `person_logs` - логи действий пользователей
- `person_privates` - аутентификационные данные пользователей
- `person_protecteds` - дополнительные данные пользователей
- `person_roles` - связь пользователей с ролями
- `person_rules` - связь пользователей с правами
- `persons` - пользователи
- `project_languages` - языки проекта
- `projects` - проекты
- `queues` - задачи очереди
- `role_roles` - иерархия ролей
- `role_rules` - права ролей
- `roles` - роли
- `rules` - права
- `static_files` - хеши статических файлов
- `t_texts` - переводы текстов
- `texts` - статические тексты
- `tkeys` - ключи переводов
- `tvalues` - значения переводов
Структура модуля
Modules/Base/
├── Bootstrap.php # Загрузка модуля
├── Crud.php # Права доступа
├── Preloader.php # Предзагрузка
├── Controllers/ # Контроллеры
│ └── Cli.php # CLI-контроллер (очереди, демон)
├── Models/ # Модели данных
│ ├── DbTables/ # Описание таблиц
│ │ ├── Alias.php
│ │ ├── Person.php
│ │ ├── Role.php
│ │ ├── Queue.php
│ │ └── ...
│ └── (модели)
Особенности
Модуль Base не имеет собственного интерфейса в публичной части. Его функциональность используется другими модулями через вызовы моделей и контроллеров.
CLI-контроллер модуля Base запускает фоновые задачи и обслуживает очередь. Он не предназначен для вызова через веб-интерфейс.
Все таблицы модуля Base, требующие изоляции данных, используют `project_id` для разделения проектов.
Модуль Base подключается автоматически при инициализации системы и не требует дополнительной настройки. Все его компоненты доступны через стандартные механизмы ядра.
Что дальше?
- ➡️ Раздел 12. Модуль Free
- ➡️ Раздел 13. Модуль Geo
- ➡️ Раздел 14. Создание модуля