ekoukltd/laraconsent

laravel的用户同意模块

安装次数: 5,092

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

语言:Blade

1.0.20 2024-01-02 01:21 UTC

This package is auto-updated.

Last update: 2024-08-31 00:28:21 UTC


README

本模块提供版本化的用户同意条款和条件,用户必须接受这些条款才能继续使用应用程序。

当发布新版本时,您可以选择性地要求现有用户接受新条款,或者仅适用于新用户。

一旦用户接受了一个特定版本的条款,该版本将被锁定,不能更改,确保用户和组织将始终保留接受的条款的历史记录。

可以将同意选项应用于任何用户守卫,允许客户端和管理员要求不同的条款。在配置文件选项中设置要使用的用户模型。在每个用户模型中包含HasConsent特性。

同意选项还可以用于注册通讯稿。提供事件钩子,可以用于触发订阅/取消订阅操作。请参阅以下事件部分。

Add / Edit Consent Options

包括所有接受和拒绝的条款的索引视图:

Add / Edit Consent Options

同意编辑器默认为免费的summernote编辑器,但可以在配置文件中切换到froala编辑器(需要许可证)。同意表单可以设置为在未来发布,并将自动在当天提供。

Add / Edit Consent Options

安装

通过Composer

composer require ekoukltd/laraconsent

发布配置选项以自定义路由。

php artisan vendor:publish --provider="Ekoukltd\LaraConsent\LaraConsentServiceProvider" --tag="laraconsent.config"

为了更好地展示索引页面,包含了Yarjabox Datatables。为了使其工作,必须安装jQuery和bootstrap:

典型需求

 npm i jquery bootstrap@4.6.1 select2 datatables.net-bs4  datatables.net-responsive datatables.net-responsive-bs4 datatables.net-scroller-bs4

或者,为了允许将表格打印为PDF、Excel或CSV,包括按钮和JS PDF maker

 npm i jquery bootstrap@4.6.1 select2 datatables.net-bs4 datatables.net-buttons-bs4 datatables.net-responsive datatables.net-responsive-bs4 datatables.net-scroller-bs4 jszip pdfmake

包含Bootstrap 4 & Bootstrap 5模板

将视图发布到目录 /resources/views/vendor/ekoukltd & /resources/views/vendor/datatables

php artisan vendor:publish --provider="Ekoukltd\LaraConsent\LaraConsentServiceProvider" --tag="laraconsent.views"

这些视图已使用Laravel 8 Breeze模板格式创建,并包括可以轻松包含到您自己的模板中的小部件。

然后发布JS和CSS资产以及翻译

php artisan vendor:publish --provider="Ekoukltd\LaraConsent\LaraConsentServiceProvider" --tag="laraconsent.assets"

检查 resources/assets/laraconsent/sass/laraconsent.scss 文件,并删除任何可能已经存在的CSS模块。

以及 resources/assets/laraconsent/js/imports.js 文件,并删除任何已包含的JS模块。

更新webpack.mix.js以编译我们的CSS

.sass('resources/assets/laraconsent/sass/laraconsent.scss', 'public/css')
.copy('resources/assets/laraconsent/sass/laraconsent_print.css', 'public/css')

然后更新您的resources/js/app.js以加载JS资产:

import Laraconsent from "../assets/laraconsent/js/laraconsent";

并确保app.js文件包含在webpack.mix.js中

.js('resources/js/app.js', 'public/js')

然后在CLI上,编译资产

npm run dev

运行迁移:

php artisan migrate

将创建两个数据库表:

  • consent_options
  • consentables

consent_options 存储每个同意表的版本化历史记录,consentables 记录每个用户同意表交互的历史记录。

强制用户接受同意

如果存在未解决的同意,要将用户重定向到接受同意页面,请更新您的 App\Http\Kernel.php 'web' 中间件组,包括: \Ekoukltd\LaraConsent\Http\Middleware\ForceRedirectToUnapprovedConsents::class

##认证用户路由应可供任何登录用户使用。

在config\laraconsent.php文件中,确保包含auth:guardname所需的可以查看其同意的守卫。

'prefix'     => 'user-consent',
'middleware' => ['web','auth:admin,web']

翻译

所有短语都可以在翻译文件中更新:

resources/lang/vendor/laraconsent/en/admin.php
resources/lang/vendor/laraconsent/en/user.php
resources/lang/vendor/laraconsent/en.json

事件

当给出或拒绝个别同意时,会触发ConsentUpdated事件。当所有同意都已保存时,将触发ConsentUpdatedComplete事件。

使用 ConsentUpdated 事件在特定同意表单更新时触发操作。使用 ConsentUpdatedComplete 事件在所有表单完成时触发操作。

在 EventServiceProvider 中自定义操作。

以下内容默认添加:-

use Ekoukltd\LaraConsent\Events\ConsentsUpdatedComplete;
use Ekoukltd\LaraConsent\Listeners\NotifyConsentsUpdated;
use Ekoukltd\LaraConsent\Events\ConsentUpdated;
use Ekoukltd\LaraConsent\Listeners\LogConsentUpdated;

class EventServiceProvider extends ServiceProvider
{
    protected $listen = [
        //Triggered after each consent option is saved.
        ConsentUpdated::class => [
            //Add something to the log file.
            LogConsentUpdated::class,
            //Add update mailchimp subscription event here
        ],
        //Triggered after all consent options have been saved
        ConsentsUpdatedComplete::class => [
            //Sends email to user with copy of the consents
            NotifyConsentsUpdated::class
            ]
    ];

使用方法

可以在配置文件中自定义 URL。
在这里,您还可以添加自己的中间件以限制对管理路由的访问

    //Grouping of admin web routes
    'routes'     => [
        'admin' => [
            //Admin web routes should only be available to admins
            'prefix'     => 'consent-admin',
            'middleware' => ['web','auth']
        ],
        'user'  => [
            //User routes should be available to any logged in user
            'prefix'     => 'consent',
            'middleware' => ['web']
        ],
    ],

管理路由

用户路由

变更日志

有关最近更改的更多信息,请参阅变更日志

测试

composer test

贡献

有关详细信息和工作清单,请参阅contributing.md

安全

如果您发现任何安全相关的问题,请通过电子邮件lee@ekouk.com联系,而不是使用问题跟踪器。

鸣谢

许可证

MIT。有关更多信息,请参阅许可证文件