dedermus/open-admin-core
Composer 安装命令:
composer require dedermus/open-admin-core
包简介
Ядро админки для Laravel 13
README 文档
README
⛵open-admin-core - это конструктор административного интерфейса для Laravel, который поможет вам создать CRUD-функции всего с помощью нескольких строк кода.
Данный конструктор является форком проекта https://github.com/open-admin-org/open-admin и адаптирован для Bootstrap 5.3.
Возможности
- ✅ Bootstrap 5.3 — современный адаптивный интерфейс
- ✅ CRUD конструктор — создание админки в несколько строк кода
- ✅ Управление ролями и правами — гибкая система RBAC
- ✅ Восстановление пароля — полный цикл сброса пароля через email
- ✅ AJAX формы — без перезагрузки страницы, с прелоадерами
- ✅ Безопасность — throttle, логирование, принудительный выход из всех устройств
- ✅ Email уведомления — с информацией об IP, времени, браузере и ОС
- ✅ Журнал операций — логирование действий администраторов
- ✅ Расширения — медиа-менеджер, редактор, конструктор страниц и другие
Требования
- PHP ^8.2
- Laravel >= 12.0
- Fileinfo PHP Extension
- База данных: MySQL 8.0+ или PostgreSQL 12+
Установка
1. Создание нового проекта Laravel
composer create-project laravel/laravel example-app
cd example-app
2. Настройка приложения
Отредактируйте файл config/app.php:
'url' => env('APP_URL', null), 'asset_url' => env('ASSET_URL', null), 'timezone' => 'Europe/Moscow', 'locale' => 'ru',
Создайте символическую ссылку для публичных файлов:
php artisan storage:link
3. Настройка базы данных
PostgreSQL (рекомендуется)
В файле .env:
DB_CONNECTION=pgsql DB_HOST=127.0.0.1 DB_PORT=5432 DB_DATABASE=your_database DB_USERNAME=postgres DB_PASSWORD=postgres
Для оптимальной работы установите расширение pg_trgm:
CREATE EXTENSION IF NOT EXISTS pg_trgm;
Проверить наличие расширения:
SELECT extname FROM pg_extension;
MySQL
В файле .env:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database DB_USERNAME=root DB_PASSWORD=root
Для MySQL 8.0+ рекомендуется использовать utf8mb4_unicode_ci:
DB_CHARSET=utf8mb4 DB_COLLATION=utf8mb4_unicode_ci
4. Установка пакета
composer require dedermus/open-admin-core
5. Публикация ресурсов
php artisan vendor:publish --provider="OpenAdminCore\Admin\AdminServiceProvider"
Эта команда опубликует:
- Конфигурацию в
config/admin.php - Языковые файлы в
resources/lang - Миграции в
database/migrations - Ассеты в
public/vendor/open-admin
6. Настройка дисков для загрузки файлов
В файле config/filesystems.php добавьте или обновите диски:
'disks' => [ // ... другие диски 'uploads' => [ 'driver' => 'local', 'root' => public_path('uploads'), 'url' => env('APP_URL').'/uploads', 'visibility' => 'public', 'throw' => false, 'permissions' => [ 'file' => [ 'public' => 0644, 'private' => 0600, ], 'dir' => [ 'public' => 0755, 'private' => 0700, ], ], ], 'admin' => [ 'driver' => 'local', 'root' => public_path('uploads'), 'url' => env('APP_URL').'/uploads', 'visibility' => 'public', 'throw' => false, 'permissions' => [ 'file' => [ 'public' => 0644, 'private' => 0600, ], 'dir' => [ 'public' => 0755, 'private' => 0700, ], ], ], ],
7. Настройка HTTPS (опционально)
В файле config/admin.php:
'https' => env('ADMIN_HTTPS', true),
8. Завершение установки
php artisan admin:install
Эта команда выполнит:
- Запуск всех миграций (
php artisan migrate) - Заполнение таблиц начальными данными (пользователь admin, роли, разрешения)
- Создание директории
app/Adminсо следующей структурой:
app/Admin/
├── Controllers/
│ ├── HomeController.php
│ ├── AuthController.php
│ └── ExampleController.php
├── bootstrap.php
└── routes.php
9. Доступ к админ-панели
Откройте в браузере: http://localhost/admin
Учетные данные по умолчанию:
- Логин:
admin - Пароль:
admin
|⚠️ Важно: После первого входа обязательно смените пароль администратора!
Восстановление пароля
Пакет поддерживает функционал восстановления пароля через email. Для его работы необходимо:
- Настроить отправку email в файле
.env:
MAIL_MAILER=smtp MAIL_HOST=smtp.mail.ru MAIL_PORT=465 MAIL_USERNAME=your-email@example.com MAIL_PASSWORD=your-password MAIL_ENCRYPTION=ssl MAIL_FROM_ADDRESS=your-email@example.com MAIL_FROM_NAME="Admin Panel"
-
Убедиться, что у пользователей заполнен email. Если email отсутствует, пользователь не сможет восстановить пароль.
-
Настроить параметры восстановления в
config/admin.php:
'auth' => [ 'password_reset' => [ 'enabled' => true, // Включить/отключить функционал 'expire' => 60, // Время жизни ссылки (минут) 'throttle' => 3, // Максимум попыток 'throttle_decay_minutes' => 60, // Время блокировки после превышения ], ],
- Настроить логирование в config/logging.php:
'channels' => [ 'password_reset' => [ 'driver' => 'daily', 'path' => storage_path('logs/password-reset.log'), 'level' => 'info', 'days' => 30, ], ],
Процесс восстановления
-
Пользователь нажимает "Забыли пароль?" на странице входа
-
Вводит логин или email
-
На почту приходит ссылка для сброса пароля
-
Пользователь переходит по ссылке и устанавливает новый пароль
-
После успешного сброса:
-
Происходит принудительный выход из всех устройств
-
На почту приходит уведомление с информацией:
-
Время изменения пароля
-
IP-адрес
-
Браузер, ОС и тип устройства
-
-
-
Пользователь перенаправляется на страницу входа
Безопасность
✅ Ограничение количества попыток (throttle)
✅ Токены сброса имеют ограниченное время жизни
✅ Общие сообщения об успехе (не сообщаем, существует ли пользователь)
✅ Логирование всех попыток в отдельный канал
✅ Принудительный выход из всех устройств после сброса
✅ Email-уведомление с информацией об IP и устройстве
✅ AJAX-отправка форм с защитой от двойной отправки
- Очистка устаревших токенов:
php artisan admin:clear-resets
Рекомендуется добавить эту команду в расписание (cron):
// app/Console/Kernel.php protected function schedule(Schedule $schedule) { $schedule->command('admin:clear-resets')->daily(); }
Процесс восстановления пароля
- Пользователь нажимает "Забыли пароль?" на странице входа
- Вводит логин или email
- Если учетная запись существует и имеет email, отправляется ссылка на сброс
- Пользователь переходит по ссылке и устанавливает новый пароль
- После успешного сброса выполняется перенаправление на страницу входа
Безопасность
- Ограничение количества попыток (throttle)
- Токены сброса имеют ограниченное время жизни
- Общие сообщения об успехе (не сообщаем, существует ли пользователь)
- Логирование всех попыток в отдельный канал
- Пароль должен соответствовать требованиям безопасности (минимум 8 символов)
Конфигурация
Основные настройки находятся в файле config/admin.php:
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
directory |
Директория админки | app/Admin |
route.prefix |
Префикс маршрутов | admin |
database.users_table |
Таблица пользователей | admin_users |
database.roles_table |
Таблица ролей | admin_roles |
database.permissions_table |
Таблица разрешений | admin_permissions |
database.menu_table |
Таблица меню | admin_menu |
database.operation_log_table |
Журнал операций | admin_operation_log |
Команды админ-панели
Пакет предоставляет набор Artisan-команд для управления админ-панелью:
| Команда | Описание |
|---|---|
php artisan admin |
Список всех доступных команд |
php artisan admin:install |
Установка админ-панели |
php artisan admin:uninstall |
Удаление админ-панели |
php artisan admin:create-user |
Создание нового пользователя |
php artisan admin:reset-password |
Сброс пароля пользователя |
php artisan admin:make {model} |
Генерация контроллера для модели |
php artisan admin:form {name} |
Генерация виджета формы |
php artisan admin:action {name} |
Генерация действия |
php artisan admin:permissions |
Генерация разрешений на основе таблиц |
php artisan admin:generate-menu |
Генерация меню на основе маршрутов |
php artisan admin:menu |
Вывод структуры меню |
php artisan admin:config |
Сравнение конфигурации с оригиналом |
php artisan admin:minify |
Минификация CSS и JS ассетов |
php artisan admin:extend {extension} |
Создание расширения |
php artisan admin:import {extension} |
Импорт расширения |
php artisan admin:dev-links |
Создание символических ссылок для разработки |
php artisan admin:publish |
Публикация ресурсов |
Примеры использования команд
Создание контроллера для модели Post:
php artisan admin:make "App\Models\Post" --title="Статьи"
После выполнения команды будет создан контроллер app/Admin/Controllers/PostController.php с готовыми методами для CRUD операций.
Добавление маршрута в app/Admin/routes.php:
$router->resource('posts', PostController::class);
Генерация разрешений для таблицы posts:
php artisan admin:permissions --tables=posts
Обновление
Обновление до новой версии пакета:
composer update dedermus/open-admin-core php artisan vendor:publish --tag=open-admin-assets --force php artisan view:clear php artisan config:clear
Расширения
Пакет поддерживает расширения, адаптированные для Bootstrap 5.3:
| Расширение | Описание |
|---|---|
| helpers | Инструменты для разработки |
| media-manager | Управление файлами |
| config | Менеджер конфигурации |
| grid-sortable | Сортируемые таблицы |
| Ckeditor | Визуальный редактор |
| api-tester | Тестирование API |
| scheduling | Управление задачами |
| phpinfo | Информация о PHP |
| log-viewer | Просмотр логов |
| page-designer | Конструктор страниц |
| reporter | Отчеты об ошибках |
| redis-manager | Управление Redis |
Установка расширения
composer require dedermus/helpers php artisan admin:import helpers
Локализация
| № | Код | Язык | RTL |
|---|---|---|---|
| 1 | en | Английский | ❌ |
| 2 | ru | Русский | ❌ |
| 3 | uk | Украинский | ❌ |
| 4 | de | Немецкий | ❌ |
| 5 | es | Испанский | ❌ |
| 6 | fr | Французский | ❌ |
| 7 | zh_CN | Китайский (упрощённый) | ❌ |
| 8 | zh_TW | Китайский (традиционный) | ❌ |
| 9 | pl | Польский | ❌ |
| 10 | it | Итальянский | ❌ |
| 11 | ja | Японский | ❌ |
| 12 | pt | Португальский | ❌ |
| 13 | pt-BR | Португальский (Бразилия) | ❌ |
| 14 | tr | Турецкий | ❌ |
| 15 | nl | Нидерландский | ❌ |
| 16 | id | Индонезийский | ❌ |
| 17 | ms | Малайский | ❌ |
| 18 | ko | Корейский | ❌ |
| 19 | he | Иврит | ✅ |
| 20 | fa | Персидский (фарси) | ✅ |
| 21 | bn | Бенгальский | ❌ |
| 22 | az | Азербайджанский | ❌ |
| 23 | ar | Арабский | ✅ |
Поддержка RTL (справа налево)
Для поддержки языков с направлением письма справа налево:
-
Откройте файл
vendor/dedermus/open-admin-core/src/Traits/HasAssets.php -
В массиве
$baseCssзамените:bootstrap.min.css→bootstrap.rtl.min.cssAdminLTE.min.css→AdminLTE.rtl.min.css
Устранение неполадок
Проблема: Class "OpenAdminCore\Admin\AdminServiceProvider" not found
Решение: Запустите composer dump-autoload:
composer dump-autoload
Проблема: Ошибка при миграции с PostgreSQL
Решение: Убедитесь, что установлено расширение pg_trgm:
CREATE EXTENSION IF NOT EXISTS pg_trgm;
Проблема: Ошибка 404 при доступе к админке
Решение: Проверьте файл app/Admin/routes.php и убедитесь, что префикс маршрутов в config/admin.php совпадает с URL.
Лицензия
open-admin-core распространяется под лицензией The MIT License (MIT).
dedermus/open-admin-core 适用场景与选型建议
dedermus/open-admin-core 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 570 次下载、GitHub Stars 达 5, 最近一次更新时间为 2024 年 03 月 13 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「admin」 「form」 「grid」 「free」 「laravel」 「open」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 dedermus/open-admin-core 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 dedermus/open-admin-core 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 dedermus/open-admin-core 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
DataTables is a plug-in for the jQuery Javascript library. It is a highly flexible tool, based upon the foundations of progressive enhancement, which will add advanced interaction controls to any HTML table.
Plug-ins for DataTables
2lenet/EasyAdminPlusBundle
Diese Contao 4 Erweiterung stellt Google reCAPTCHA V2 in Form eines neuen Formularfeldes im Formulargenerator bereit. This extension provides Google reCAPTCHA V2 in the form of a new form field in the form generator of Contao Open Source CMS.
Analysis module for finding problematical shop data.
TYPO3 extension providing content elements powered by gridelements and bootstrap. Available elements: container, columns, tabs, accordion, tile unit and card.
统计信息
- 总下载量: 570
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 5
- 点击次数: 9
- 依赖项目数: 13
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-03-13