dedermus/open-admin-core

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

Maintainers

Package info

github.com/dedermus/open-admin-core

pkg:composer/dedermus/open-admin-core

Statistics

Installs: 560

Dependents: 13

Suggesters: 0

Stars: 5

Open Issues: 0

v2.0.10 2024-12-06 06:22 UTC

This package is not auto-updated.

Last update: 2026-04-10 12:35:58 UTC


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).