thisismahabadi / laravel-feature-flags
此包帮助您在Laravel应用程序中实现功能开关,无需第三方服务。
README
此包帮助您在Laravel应用程序中实现功能开关,无需第三方服务。
安装
composer require thisismahabadi/laravel-feature-flags
它是如何工作的?
所以它只是简单地使用两个数据库表和一个特性 (src/Traits/FeatureFlag.php)
来检查访问者(用户、团队、机构等)是否有权访问请求的资源。
表包括
feature_flags(存储功能本身,包括其名称和确定可用日期的日期。)
feature_flag_permissions(存储哪些访问者[或您指定的任何内容]有权访问哪些功能)
在数据库中获得信息后,您所需做的就是将提到的特性用在您想要的任何类中,例如,还有一个中间件 (src/Http/Middleware/CheckFeatureFlagAccess.php)
也在使用该特性,您也可以用它来保护您的路由。要分配中间件到路由,可以这样操作
Route::middleware('feature_flag:whatsapp')->post('api/v1/whatsapp', WhatsAppController@sendMessage);
特性特性的逻辑是首先检查 feature_flags 表以确定功能是否有效,如果是,则检查 feature_flag_permissions 表以查看请求的访问者在数据库中是否有相关记录。
配置
如果您执行Laravel的 vendor:publish
命令,您的文件将被复制到指定的发布位置,然后可以自定义配置。
php artisan vendor:publish --tag=feature-flags-config
代码要求
这部分仅在您想要此包的 中间件 时使用。
默认情况下,此包使用 featureAccessor()
belongsTo 关系在用户模型中将访问者资源作为访问者,如果该关系不存在,它将使用请求端点的用户_id。
但是,您知道您还可以使用您在公司使用的另一个资源吗?例如 team_id
、agency_id
、customer_id
或您使用的任何其他内容。
使用 agency_id
的示例
public function featureAccessor(): BelongsTo { return $this->belongsTo(Agency::class, 'agency_id', 'id'); }