cuonggt / laravel-dibi
An elegant GUI database management tool for your Laravel applications.
Installs: 4 864
Dependents: 0
Suggesters: 0
Security: 0
Stars: 47
Watchers: 2
Forks: 8
Open Issues: 1
Language:Vue
Requires
- php: ^7.3|^8.0.2
- ext-json: *
- laravel/framework: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- ramsey/uuid: ^3.8|^4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.4
- orchestra/testbench: ^4.0|^5.0|^6.0|^7.0|^8.0
README
Laravel Dibi is an elegant GUI database management tool for your Laravel applications. It provides a quick access for browsing your database on local/dev server without installing any other applications.
Installation
You may install Dibi into your project using the Composer package manager:
composer require cuonggt/laravel-dibi
After installing Dibi, publish its assets using the dibi:install
Artisan command:
php artisan dibi:install
Currently, Dibi only supports MySQL. I hope other DB engines like SQL Server, PostgreSQL, SQLite, etc will be supported in near future.
Dibi use database connection name mysql
by default to connect. If you would like to use another database connection name, you may use the Dibi::useDatabaseConnectionName
method. You may call this method from the boot
method of your application's App\Providers\DibiServiceProvider
:
/** * Bootstrap any application services. * * @return void */ public function boot() { parent::boot(); Dibi::useDatabaseConnectionName('custom_mysql'); }
Dashboard Authorization
Dibi exposes a dashboard at the /dibi
URI. By default, you will only be able to access this dashboard in the local
environment. However, within your app/Providers/DibiServiceProvider.php
file, there is an authorization gate definition. This authorization gate controls access to Dibi in non-local environments. You are free to modify this gate as needed to restrict access to your Dibi installation:
/** * Register the Dibi gate. * * This gate determines who can access Dibi in non-local environments. * * @return void */ protected function gate() { Gate::define('viewDibi', function ($user) { return in_array($user->email, [ 'admin@example.com', ]); }); }
Upgrading Dibi
When upgrading to a new major version of Dibi, it's important that you carefully review the upgrade guide. In addition, when upgrading to any new Dibi version, you should re-publish Dibi's assets:
php artisan dibi:publish
To keep the assets up-to-date and avoid issues in future updates, you may add the dibi:publish
command to the post-update-cmd
scripts in your application's composer.json
file:
{ "scripts": { "post-update-cmd": [ "@php artisan dibi:publish --ansi" ] } }
Customizing Middleware
If needed, you can customize the middleware stack used by Dibi routes by updating your config/dibi.php
file. If you have not published Dibi's confiugration file, you may do so using the vendor:publish
Artisan command:
php artisan vendor:publish --tag=dibi-config
Once the configuration file has been published, you may edit Dibi's middleware by tweaking the middleware
configuration option within this file:
/* |-------------------------------------------------------------------------- | Dibi Route Middleware |-------------------------------------------------------------------------- | | These middleware will be assigned to every Dibi route - giving you | the chance to add your own middleware to this list or change any of | the existing middleware. Or, you can simply stick with this list. | */ 'middleware' => [ 'web', EnsureUserIsAuthorized::class, EnsureUpToDateAssets::class ],
Local Only Installation
If you plan to only use Dibi to assist your local development, you may install Dibi using the --dev
flag:
composer require cuonggt/laravel-dibi --dev php artisan dibi:install
After running dibi:install
, you should remove the DibiServiceProvider
service provider registration from your application's config/app.php
configuration file. Instead, manually register Dibi's service providers in the register
method of your App\Providers\AppServiceProvider
class. We will ensure the current environment is one of specific environments before registering the providers:
/** * Register any application services. * * @return void */ public function register() { if ($this->app->environment('local', 'develop', 'staging')) { $this->app->register(\Cuonggt\Dibi\DibiServiceProvider::class); $this->app->register(DibiServiceProvider::class); } }
Finally, you should also prevent the Dibi package from being auto-discovered by adding the following to your composer.json
file:
"extra": { "laravel": { "dont-discover": [ "cuonggt/laravel-dibi" ] } },
License
Laravel Dibi is open-sourced software licensed under the MIT license.