onecentlin/laravel-adminer

Laravel Adminer Database Manager

7.0.0 2024-03-02 15:15 UTC

README

Light weight Adminer 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:

"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

'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

return [
    'enabled' => 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 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:

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

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

return [
    ...
    'plugins' => [
        'PluginClassNameWithoutArguments',
        'PluginClassNameWithArgument' => 'argument_value',
        'PluginClassNameWithMultipleArguments' => ['arg1', 'arg2', ...],
    ],
];

Access adminer

Open URL in web browser

http://[your.domain.com]/adminer

Screenshot

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