avexsoft / donkey
The smart-ass Laravel package to manage `config()` in production
Installs: 207
Dependents: 1
Suggesters: 0
Security: 0
Stars: 2
Watchers: 0
Forks: 0
Open Issues: 1
Type:laravel-library
pkg:composer/avexsoft/donkey
Requires
- composer/installers: ^2.3
- doctrine/dbal: ^4.4.1
- illuminate/contracts: ^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^10.5
- phpunit/phpunit: ^12.3
README
Donkey is a Laravel package to modify your Laravel config() in code/any environment without giving access to the .env file.
Any key of the config can be modified like this
Donkey::set('app.debug', true); // config('app.debug') will return true until changed again
What problems does this solve?
-
If you had to change a value in
config()that is not exposed in.env, how do you do it? Does it have to go through the entire CI/CD pipeline before reaching production? -
If you had to enable Laravel's debug mode temporarily in production, how would you do it? Modify
.env? Who will be editing it? Will they accidentally edit something else? And does that person have SSH access? Even if you trust them, do you really want the other API keys to show up on their screens? -
Perhaps our biggest pain point was coming up with the UI to expose configurable parts of our projects to the users, there just wasn't an elegant way to do it. Our companion Filament package lets you create a configuration page blazingly fast and in your own namespace
Donkey::set('project.advanced_mode', true); // persists project.advanced_mode into the project config('project.advanced_mode'); // returns true // You can even give users their own configuration space Donkey::set(auth()->user()->id.'-user.advanced_mode', true);
How does it work?
Donkey::set('app.debug', true)stores the key-value pair into the database- You can blacklist keys using regular expression, e.g.
app.*,database.* - Next, a whilelist will let through keys like
app.debug, this way, you prevent really sensitive keys likeapp.keyfrom being overwritten - The package then inject these pairs from the database into the project after going through the black and whitelist
- This approach plays nicely with the Laravel
config:cacheand requires no changes in your project
Installation
Via Composer
$ composer require avexsoft/donkey
Usage
Change log
Please see the changelog for more information on what has changed recently.
Testing
$ composer test
Contributing
Please see contributing.md for details and a todolist.
Security
If you discover any security related issues, please email author@email.com instead of using the issue tracker.
Credits
License
MIT. Please see the license file for more information.