ekoukltd / laraconsent
laravel的用户同意模块
Requires
- ekoukltd/laravel-admin-tools: ^1.0
- illuminate/support: ~7|~8|~9
- yajra/laravel-datatables: ^1.5
- yajra/laravel-datatables-oracle: ~9.0
Requires (Dev)
- orchestra/testbench: ~5|~6
- phpunit/phpunit: ~9.0
README
本模块提供版本化的用户同意条款和条件,用户必须接受这些条款才能继续使用应用程序。
当发布新版本时,您可以选择性地要求现有用户接受新条款,或者仅适用于新用户。
一旦用户接受了一个特定版本的条款,该版本将被锁定,不能更改,确保用户和组织将始终保留接受的条款的历史记录。
可以将同意选项应用于任何用户守卫,允许客户端和管理员要求不同的条款。在配置文件选项中设置要使用的用户模型。在每个用户模型中包含HasConsent特性。
同意选项还可以用于注册通讯稿。提供事件钩子,可以用于触发订阅/取消订阅操作。请参阅以下事件部分。
包括所有接受和拒绝的条款的索引视图:
同意编辑器默认为免费的summernote编辑器,但可以在配置文件中切换到froala编辑器(需要许可证)。同意表单可以设置为在未来发布,并将自动在当天提供。
安装
通过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。有关更多信息,请参阅许可证文件。