lowerrocklabs / laravel-lockable
Laravel Lockable 提供了特性,允许模型被锁定
Requires
- php: ^7.3|^8.0
- illuminate/contracts: ^8.0|^9.0
- laravel/framework: ^8.0|^9.19
Requires (Dev)
- laravel/legacy-factories: ^1.0.4
- nunomaduro/collision: ^5.0|^6.0|^7.0
- nunomaduro/larastan: ^1.0|^2.0.1
- orchestra/testbench: ^6.0|^7.9
- pestphp/pest: ^1.21|^2.0
- pestphp/pest-plugin-laravel: ^1.1|^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/php-code-coverage: ^9.2|^10.0
- phpunit/phpunit: ^9.5|^10.0
This package is auto-updated.
Last update: 2024-09-30 19:23:36 UTC
README
此模型允许按需锁定模型。您可以将它与您选择的权限方法集成,或者将其独立使用。此包允许您确定模型实例是否已锁定或未锁定。或者,它将独立防止更新模型实例。
安装
需要 [PHP 7.3+ 或 8.0+] 和 [Laravel 8.x 或 9.x] (https://laravel.net.cn/docs/8.x/releases 或 https://laravel.net.cn/docs/9.x/releases)
您可以通过 composer 安装此包
composer require lowerrocklabs/laravel-lockable
您可以使用以下命令发布并运行迁移
php artisan vendor:publish --tag="laravel-lockable-migrations"
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="laravel-lockable-config"
这是已发布的配置文件的内容,它控制全局锁定持续时间,这可以在每个模型级别上进行自定义(见下文)。
return [ // Name of the Table containing the locks 'locks_table' => 'model_locks', // Name of the Table containing the lock watchers 'lock_watchers_table' => 'model_lock_watchers', // Enable retrieval of lock status on retrieving a model 'get_locked_on_retrieve' => true, // Prevent updating if a model is locked by another user 'prevent_updating' => true, // Time in Seconds For Lock To Persist 'duration' => '3600', ];
用法
模型配置
在您希望可锁定的模型中,添加 IsLockable 特性
use LowerRockLabs\Lockable\Traits\IsLockable;
然后设置特性
use IsLockable;
在您的组件/控制器中
然后使用 acquireLock 函数尝试锁定模型,如果有现有的锁定,它将返回 false。
acquireLock()
您可以在 acquireLock() 函数之前调用 releaseLock() 函数来覆盖现有的锁定,如果您正在使用基于权限的方法,建议您将其限制为适当的用户。
releaseLock()
您可以通过以下方式确定是否存在锁定,如果不存在,它将获取锁定。
isLocked()
您可以使用以下命令向持有锁的用户发送广播
requestLock()
锁定持续时间
您可以通过在您的模型中设置以下内容来覆盖默认的锁定持续时间(以秒为单位),该持续时间从配置中获取,但可以在每个模型级别上进行自定义。例如,以下内容将锁定持续时间限制为 600 秒。
public $modelLockDuration = "600";
当持续时间过期或尝试访问模型时,锁定将清除,或者您可以调用以下命令之一,或者将它们添加到计划中(根据您的需要)。
命令
清除过期锁定
php artisan locks:flushexpired
清除所有锁定
php artisan locks:flushall
事件
在锁定过程中将触发两个事件,如果需要,可以使用它们来触发通知或记录 模型锁定时
LowerRockLabs\Lockable\Events\ModelWasLocked;
和 模型解锁时
LowerRockLabs\Lockable\Events\ModelWasUnLocked;
当用户请求释放锁时,将触发一个附加事件 模型解锁时
LowerRockLabs\Lockable\Events\ModelUnlockRequested;
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全漏洞
请参阅 我们的安全策略 了解如何报告安全漏洞。
鸣谢
许可协议
MIT 许可协议 (MIT)。请参阅 许可文件 了解更多信息。