Download the PHP package juststeveking/laravel-feature-flags without Composer
On this page you can find all versions of the php package juststeveking/laravel-feature-flags. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download juststeveking/laravel-feature-flags
More information about juststeveking/laravel-feature-flags
Files in juststeveking/laravel-feature-flags
Package laravel-feature-flags
Short Description A simple to use Feature Flags package for Laravel
License MIT
Homepage https://github.com/JustSteveKing/laravel-feature-flags
Informations about the package laravel-feature-flags
Laravel Feature Flags
![](banner.png)
I recommend using laravel/pennant for any future Feature Flag needs. This package will be frozen as is with no updates planned.
A simple to use Feature Flag package for Laravel, allowing you to create Feature Groups and assign Users to them - while also being able to give users override access to given features outside of their groups.
Installation
You can install the package via composer:
You can publish the migrations files with:
You can publish the config file with:
This is the contents of the published config file:
You will then need to migrate the database changes:
Usage
This package allows you to manage user features and feature groups in a database.
All Feature and Feature Group names will be normalised to lower case on save.
To use this package your User model needs to have the HasFeatures
trait:
This will allow you to manage features and feature groups on your user model.
A User can belong to many Feature Groups, but can also be assigned access to specific Features.
Working with Feature Groups
Working with Features
Putting it together
To use the package as a whole:
Timebombs for Features
A common use case for Feature Flags is to allow developers to add new functionality without breaking existing code.
This process is great when paired with a solid CI/CD pipeline. But the biggest drawback to this is residual technical debt that can occur when developers forget about removing implemented flags across a code base.
To handle this, users of this package can utilise Timebombs! Timebombs are used to cause Feature Flags to throw an exception when a flag should have been removed from the code base.
To use Timebombs, you will need to explicitly enable them within the config ('enable_time_bombs' => true). And define which environments you do not want exceptions to be thrown. (This is particularly useful with CI/CD, as you will want to throw exceptions locally, in CI and on staging environments but NOT on production).
Defining when a timebomb should throw an exception
Once Timebombs are enabled, when creating a new Flag, you will be asked when you want your flag to expire (This is number of days). When the current time surpasses that expiration date, then your feature flag will throw an exception.
To extend a flag, you can use the handy command
Where you will be prompted to define how many more days are required before the flag should throw an exception again.
Further reading
To learn more on Feature flags and Timebombs, there is a great article by Martin Fowler Here.
Template Usage
There are some Blade Directives to help control access to features in your UI:
Middleware
There are some middleware classes that you can use:
By default you can use:
\JustSteveKing\Laravel\FeatureFlags\Http\Middleware\FeatureMiddleware::class
\JustSteveKing\Laravel\FeatureFlags\Http\Middleware\GroupMiddleware::class
There 2 middleware classes will either abort on failure, or redirect. The way these work can be managed in the config file for the package. It allows you to set a mode for the middleware (either abort
or redirect
) and also allows you to set a redirect_route
or status_code
.
Then there is also:
\JustSteveKing\Laravel\FeatureFlags\Http\Middleware\API\FeatureMiddleware::class
\JustSteveKing\Laravel\FeatureFlags\Http\Middleware\API\GroupMiddleware::class
These 2 middleware classes only have the one mode of abort
but will ready from your config file for the package to know what status code to return, these classes are made specifically for APIs.
To limit access to users with specific features
Add the following to your app/Http/Kernel.php
You can pass through more than one feature name, and pass them in a friendlier format or as they are:
To limit access to users who are part of a feature group
Add the following to your app/Http/Kernel.php
You can pass through more than one feature group name, and pass them in a friendlier format or as they are:
Artisan Commands
There are a number of artisan commands available for interacting with feature flags.
Testing
Contributing
Please see CODE_OF_CONDUCT for details.
Security
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
Credits
- Steve McDougall
- All Contributors
License
The MIT License (MIT). Please see License File for more information.