# 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 env('ADMINER_ENABLED', true), 'autologin' => env('ADMINER_AUTO_LOGIN', false), 'route_prefix' => env('ADMINER_ROUTE_PREFIX', 'adminer'), 'middleware' => 'auth', 'plugins' => [], ]; ``` > ATTENSION: Please only enable autologin with authenticated protection. ### 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 ``` ![Screenshot](https://raw.githubusercontent.com/onecentlin/laravel-adminer/master/screenshots/adminer-db-support.png "various database support") ## 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)