174 lines
4.3 KiB
Markdown
174 lines
4.3 KiB
Markdown
# Laravel Adminer Database Manager
|
|
|
|
Light weight [Adminer](https://www.adminer.org) database management tool integrated into Laravel 5/6/7/8/9.
|
|
|
|
Various database support: MySQL, SQLite, PostgreSQL, Oracle, MS SQL, Firebird, SimpleDB, MongoDB, Elasticsearch, and etc.
|
|
|
|
## v7.0 New Features
|
|
|
|
- Laravel 11.x Compatibility
|
|
- Adminer plugins support
|
|
|
|
## v6.0 New Features
|
|
|
|
Make life easier with minimized package setup =)
|
|
|
|
- Enable laravel auto package discovery
|
|
- New config setting: `middleware` (default value: `auth`)
|
|
- Enable env variables to setup adminer config
|
|
- `ADMINER_ENABLED`
|
|
- `ADMINER_AUTO_LOGIN`
|
|
- `ADMINER_ROUTE_PREFIX`
|
|
|
|
## Installation
|
|
|
|
```
|
|
composer require onecentlin/laravel-adminer
|
|
```
|
|
|
|
OR
|
|
|
|
Update `composer.json` in require section:
|
|
|
|
```json
|
|
"require": {
|
|
"onecentlin/laravel-adminer": "^7.0"
|
|
},
|
|
```
|
|
|
|
Run:
|
|
```
|
|
composer update onecentlin/laravel-adminer
|
|
```
|
|
|
|
## Register package
|
|
|
|
> Laravel auto package discovery feature added since package v6.0, you may skip this step.
|
|
|
|
Update `config/app.php`
|
|
|
|
```php
|
|
'providers' => [
|
|
...
|
|
Onecentlin\Adminer\ServiceProvider::class,
|
|
];
|
|
```
|
|
|
|
## Publish config and theme file
|
|
|
|
```
|
|
php artisan vendor:publish --provider="Onecentlin\Adminer\ServiceProvider"
|
|
```
|
|
|
|
This action will copy two files and one folder:
|
|
|
|
- `config/adminer.php` - Adminer config file
|
|
- `public/adminer.css` - Adminer theme file
|
|
- `resources/plugins` - Adminer plugins directory
|
|
|
|
### config file: `config/adminer.php`
|
|
|
|
```php
|
|
<?php
|
|
|
|
return [
|
|
'enabled' => env('ADMINER_ENABLED', true),
|
|
'autologin' => env('ADMINER_AUTO_LOGIN', false),
|
|
'route_prefix' => env('ADMINER_ROUTE_PREFIX', 'adminer'),
|
|
'middleware' => 'auth',
|
|
'plugins' => [],
|
|
];
|
|
```
|
|
|
|
> <span style="color: #a00">ATTENSION: Please only enable autologin with authenticated protection.</span>
|
|
|
|
### theme file: `public/adminer.css`
|
|
|
|
You may download `adminer.css` from [Adminer](https://www.adminer.org) or create custom style, and place it into `public` folder.
|
|
|
|
## Setup Access Permission (Middleware)
|
|
|
|
> Package v6.0 allow customized middleware config, you may skip this step or modify to fit your needs.
|
|
|
|
### Laravel 11 middleware setup changes
|
|
|
|
Since Laravel v11 remove `Kernel.php`, the middleware setup point to `bootstrap/app.php`
|
|
|
|
Add your middleware group in `withMiddleware` section:
|
|
|
|
```php
|
|
return Application::configure(basePath: dirname(__DIR__))
|
|
->withProviders()
|
|
->withRouting()
|
|
->withMiddleware(function (Middleware $middleware) {
|
|
|
|
// [SETUP HERE] Adminer Middleware group
|
|
$middleware->group('adminer', [
|
|
\Illuminate\Cookie\Middleware\EncryptCookies::class,
|
|
\Illuminate\Session\Middleware\StartSession::class,
|
|
\Illuminate\Auth\Middleware\Authenticate::class,
|
|
]);
|
|
|
|
})
|
|
->withExceptions(function (Exceptions $exceptions) {
|
|
//
|
|
})->create();
|
|
```
|
|
|
|
### Laravel 5.2 and above
|
|
|
|
Setup for middleware group supported for Laravel 5.2 above (~v10)
|
|
|
|
Modify `config/adminer.php` : `'middleware' => 'adminer',`
|
|
|
|
Modify `app/Http/Kernel.php` file with `adminer` in `$middlewareGroups`
|
|
|
|
```php
|
|
protected $middlewareGroups = [
|
|
...
|
|
'adminer' => [
|
|
\App\Http\Middleware\EncryptCookies::class,
|
|
\Illuminate\Session\Middleware\StartSession::class,
|
|
// TODO: you may create customized middleware to fit your needs
|
|
// example uses Laravel default authentication (default protection)
|
|
\Illuminate\Auth\Middleware\Authenticate::class,
|
|
],
|
|
];
|
|
```
|
|
|
|
## Enable Plugins
|
|
|
|
Drop your plugin files in `resources/adminer/plugins`
|
|
|
|
Modify `config/adminer.php` : `'plugins' => []` by adding the name of the plugin class and any argument required
|
|
|
|
```php
|
|
return [
|
|
...
|
|
'plugins' => [
|
|
'PluginClassNameWithoutArguments',
|
|
'PluginClassNameWithArgument' => 'argument_value',
|
|
'PluginClassNameWithMultipleArguments' => ['arg1', 'arg2', ...],
|
|
],
|
|
];
|
|
```
|
|
|
|
- [Adminer Plugins](https://www.adminer.org/en/plugins/)
|
|
|
|
## Access adminer
|
|
|
|
Open URL in web browser
|
|
|
|
```
|
|
http://[your.domain.com]/adminer
|
|
```
|
|
|
|

|
|
|
|
## Remarks
|
|
|
|
Due to function name conflicts of Laravel 5 and Adminer, adminer.php file
|
|
functions `cookie()`, `redirect()` and `view()` are prefixed with `adm_` prefix.
|
|
|
|
Inspired by [miroc](https://github.com/miroc/Laravel-Adminer)
|