elhebert/laravel-croustillon

一款轻松管理您的cookie横幅和cookie政策的包

0.0.5 2018-12-05 08:02 UTC

This package is auto-updated.

Last update: 2024-09-06 09:24:25 UTC


README

一款轻松管理您的cookie横幅和cookie政策的包。

文档仍在进行中。

为什么是 laravel-croustillon

很高兴你问了。在开发这个包的过程中,我使用了 Cookie 命名空间所有内容,这很快使得我难以区分Laravel的Cookie类和我包中的Cookie。

我开始思考要使用什么名字,并想到了像甜甜圈、蛋糕、华夫饼或饼干这样的名字。我和同事(@meduzen)讨论了这个,我还开玩笑说可以用 Croustillon,因为它会让一切变得很棒。

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许可证授权。