thisismahabadi/laravel-feature-flags

此包帮助您在Laravel应用程序中实现功能开关,无需第三方服务。

1.0.8 2022-09-08 22:48 UTC

This package is auto-updated.

Last update: 2024-09-13 14:32:05 UTC


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_idagency_idcustomer_id 或您使用的任何其他内容。

使用 agency_id 的示例

public function featureAccessor(): BelongsTo
{
    return $this->belongsTo(Agency::class, 'agency_id', 'id');
}