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. Создание модуля