Search by

dedermus / open-admin-core

dedermus

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

Package info

github.com/dedermus/open-admin-core

pkg:composer/dedermus/open-admin-core

Statistics

Installs: 596

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-10-09 14:54:05 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.css → bootstrap.rtl.min.css
    • AdminLTE.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).