elhebert / laravel-croustillon
一款轻松管理您的cookie横幅和cookie政策的包
Requires
- php: ^7.1.3
- illuminate/http: 5.7.*
- illuminate/support: 5.7.*
- illuminate/view: 5.7.*
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.13
README
一款轻松管理您的cookie横幅和cookie政策的包。
文档仍在进行中。
为什么是 laravel-croustillon
?
很高兴你问了。在开发这个包的过程中,我使用了 Cookie
命名空间所有内容,这很快使得我难以区分Laravel的Cookie类和我包中的Cookie。
我开始思考要使用什么名字,并想到了像甜甜圈、蛋糕、华夫饼或饼干这样的名字。我和同事(@meduzen)讨论了这个,我还开玩笑说可以用 Croustillon
,因为它会让一切变得很棒。
Croustillon是一个(法语)比利时单词。对于这里的非比利时人来说,谷歌翻译告诉我它在美国被称为甜甜圈,但我对此表示怀疑。
所以这里有一张图片
免责声明
我不是律师,所以这里的内容都应该持保留态度,尤其是法律文件。
因此,我拒绝承担因使用此包而可能遇到的所有法律问题的责任,除非您已与律师检查过法律文件。
安装
composer require elhebert/laravel-croustillon
此包使用自动发现,所以您不需要做任何事情。
您可以使用以下命令发布配置文件:
php artisan vendor:publish --provider="Elhebert\Croustillon\CroustillonServiceProvider" --tag="croustillon-config"
您可以使用以下命令发布语言文件:
php artisan vendor:publish --provider="Elhebert\Croustillon\CroustillonServiceProvider" --tag="croustillon-translations"
您可以使用以下命令发布视图文件:
php artisan vendor:publish --provider="Elhebert\Croustillon\CroustillonServiceProvider" --tag="croustillon-views"
您可以通过在http内核中注册 Elhebert\Croustillon\Http\Middlewares\AddCookieBanner::class
来将cookie横幅添加到您应用程序的所有响应中。
// app/Http/Kernel.php ... protected $middlewareGroups = [ 'web' => [ ... \Elhebert\Croustillon\Http\Middlewares\AddCookieBanner::class, ],
或者您可以在路由或路由组级别上应用中间件。
// in a routes file Route::get('my-page', 'MyController')->middleware(Elhebert\Croustillon\Http\Middlewares\AddCookieBanner::class);
用法
此包允许您定义cookie政策。cookie政策确定您网站中使用哪些cookie,并生成相应的横幅和法律页面。
默认情况下,每个Laravel应用程序都设置了2个cookie,即laravel_session
cookie和XSRF-TOKEN
cookie。以一个新的Laravel应用程序为例,以下是您可以期待的内容
// in a policy ... ->addCookie(Xsrf::class) ->addCookie(Session::class) ...
创建cookie
我们都知道,网站不仅限于使用默认cookie,还可能出于各种原因使用新的cookie。这就是为什么您可以为政策添加自定义cookie。
cookie由名称、描述、持续时间、目的、来源和类别组成。
namespace Elhebert\Croustillon\Cookies; use Elhebert\Croustillon\Categories\Mandatory; class Xsrf extends Cookie { public $name = 'XSRF-TOKEN'; public $category = Mandatory::class; public $source = 'Laravel'; public $duration = '2 hours'; public $purpose = 'security'; }
此包包含一些预定义的类别,您可以从中选择
Elhebert\Croustillon\Categories\Mandatory::class Elhebert\Croustillon\Categories\Preferences::class Elhebert\Croustillon\Categories\Analytics::class Elhebert\Croustillon\Categories\Social::class Elhebert\Croustillon\Categories\Retargetting::class
根据您添加到政策中的cookie,它将影响cookie横幅和法律页面。横幅将为每个cookie类别添加复选框(为访客提供完全的粒度),法律页面将添加cookie及其对应类别到cookie列表中。
如果您需要自定义不同的变量,您可以使用相应的函数而不是变量
public function duration(): string { return config('session.lifetime') . ' minutes'; } public function purpose(): string { return trans('croustillon::cookies.purposes.security'); }
创建政策
一旦您有了所有的cookie,您需要创建一个新的政策
namespace App\Service\Croustillon\Policies; use Elhebert\Croustillon\Policies\Basic; use App\Service\Croustillon\Cookie\MyCustomCookie; class MyCustomPolicy extends Basic { public function configure() { parent::configure(); $this ->addCookie(MyCustomCookie::class); } }
别忘了更新配置文件中的policy
键为您的政策类(在这个例子中是App\Service\Croustillon\Policies\MyCustomPolicy
)。
自定义cookie横幅和法律页面
本软件包包含默认的cookie横幅和法页,您可以根据需要自定义它们。为此,您需要发布软件包视图。
php artisan vendor:publish --provider="Elhebert\Croustillon\CroustillonServiceProvider" --tag="croustillon-views"
cookie横幅
横幅位于resources/views/vendor/croustillon/banner.blade.php
。默认情况下,它为您的策略中存在的每个cookie类别生成复选框。必填类别将被勾选并禁用(因为它是必填的)。
它还包含控制器和路由,因此您不需要担心在您的应用程序中创建它们。
默认路由为/croustillon
。
cookie法页
法页位于resources/views/vendor/croustillon/policy.blade.php
。该页面的主要内容已经完成,但您仍然应该更新它以适应您的需求和网站。
该页面的默认路由为/croustillon/policy
。
自定义
本软件包包含意见。像路由、副本和视图。
一切都可以自定义。
路由
前缀可以在配置文件中自定义,但如果您需要对路由有完全的控制权,您可以禁用此软件包中的路由以创建自己的路由。
您需要创建的路由有
-
对于cookie横幅表单
- 动词:
POST
- 行为:
\Elhebert\Croustillon\Http\Controllers\CookiesController
(它有一个__invoke
方法,因此您不需要引用方法)。
- 动词:
-
对于cookie政策法页
- 动词:
GET
- 行为:
\Elhebert\Croustillon\Http\Controllers\CookiePolicyController
(它有一个__invoke
方法,因此您不需要引用方法)。
- 动词:
翻译
您可以通过发布语言文件来覆盖默认翻译。
视图
您可以通过发布视图文件来覆盖默认视图。
贡献
有关详细信息,请参阅CONTRIBUTING。
许可
本项目和Laravel框架是开源软件,根据MIT许可证授权。