定制 dedermus/open-admin-core 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dedermus/open-admin-core

Composer 安装命令:

composer require dedermus/open-admin-core

包简介

Ядро админки для Laravel 13

README 文档

README

open-admin

open-admin-core - это конструктор административного интерфейса для Laravel, который поможет вам создать CRUD-функции всего с помощью нескольких строк кода.

Данный конструктор является форком проекта https://github.com/open-admin-org/open-admin и адаптирован для Bootstrap 5.3.

Документация | Расширения

Packagist Total Downloads Awesome Laravel

Возможности

  • 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. Для его работы необходимо:

  1. Настроить отправку 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"
  1. Убедиться, что у пользователей заполнен email. Если email отсутствует, пользователь не сможет восстановить пароль.

  2. Настроить параметры восстановления в config/admin.php:

'auth' => [
    'password_reset' => [
    'enabled' => true,           // Включить/отключить функционал
    'expire' => 60,              // Время жизни ссылки (минут)
    'throttle' => 3,             // Максимум попыток
    'throttle_decay_minutes' => 60, // Время блокировки после превышения
    ],
],
  1. Настроить логирование в config/logging.php:
'channels' => [
    'password_reset' => [
    'driver' => 'daily',
    'path' => storage_path('logs/password-reset.log'),
    'level' => 'info',
    'days' => 30,
    ],
],

Процесс восстановления

  1. Пользователь нажимает "Забыли пароль?" на странице входа

  2. Вводит логин или email

  3. На почту приходит ссылка для сброса пароля

  4. Пользователь переходит по ссылке и устанавливает новый пароль

  5. После успешного сброса:

    • Происходит принудительный выход из всех устройств

    • На почту приходит уведомление с информацией:

      • Время изменения пароля

      • IP-адрес

      • Браузер, ОС и тип устройства

  6. Пользователь перенаправляется на страницу входа

Безопасность

✅ Ограничение количества попыток (throttle)

✅ Токены сброса имеют ограниченное время жизни

✅ Общие сообщения об успехе (не сообщаем, существует ли пользователь)

✅ Логирование всех попыток в отдельный канал

✅ Принудительный выход из всех устройств после сброса

✅ Email-уведомление с информацией об IP и устройстве

✅ AJAX-отправка форм с защитой от двойной отправки

  1. Очистка устаревших токенов:
php artisan admin:clear-resets

Рекомендуется добавить эту команду в расписание (cron):

// app/Console/Kernel.php
protected function schedule(Schedule $schedule)
{
$schedule->command('admin:clear-resets')->daily();
}

Процесс восстановления пароля

  1. Пользователь нажимает "Забыли пароль?" на странице входа
  2. Вводит логин или email
  3. Если учетная запись существует и имеет email, отправляется ссылка на сброс
  4. Пользователь переходит по ссылке и устанавливает новый пароль
  5. После успешного сброса выполняется перенаправление на страницу входа

Безопасность

  • Ограничение количества попыток (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 (справа налево)

Для поддержки языков с направлением письма справа налево:

  1. Откройте файл vendor/dedermus/open-admin-core/src/Traits/HasAssets.php

  2. В массиве $baseCss замените:

    • bootstrap.min.cssbootstrap.rtl.min.css
    • AdminLTE.min.cssAdminLTE.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 我们能提供哪些服务?
定制开发 / 二次开发

基于 dedermus/open-admin-core 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 570
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 5
  • 点击次数: 9
  • 依赖项目数: 13
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 2
  • Forks: 4
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-03-13