kurozora / laravel-cooldown
轻松将全局或模型特定的冷却机制集成到您的Laravel应用中。
1.0
2020-04-28 14:33 UTC
Requires
- php: ^7.3
Requires (Dev)
- orchestra/testbench: ^4.0
- phpunit/phpunit: ^8.2
- symfony/var-dumper: ^4.3
This package is auto-updated.
Last update: 2024-09-29 03:52:47 UTC
README
即插即用的全局和模型特定冷却机制
Laravel Cooldowns
此Laravel包使将冷却机制集成到您的应用中变得更加简单。
考虑以下示例
// The user will be able to post again 5 minutes from now $user->cooldown('create-post')->for('5 minutes');
安装
您可以通过composer安装此包
composer require kurozora/laravel-cooldown
用法
全局冷却
全局冷却与任何模型无关,并且在您的整个应用中都是相同的。
使用cooldown
辅助函数创建一个
cooldown('registration')->for('1 hour');
以下是一个如何限制注册每小时一次的示例
if(cooldown('registration')->notPassed()) return 'Registration is currently unavailable.'; // ... perform account registration ... cooldown('registration')->for('1 hour');
模型特定冷却
当然,更有用的用例是将冷却机制与模型相关联。为了使用它,您需要将特性添加到您的模型中
use Illuminate\Database\Eloquent\Model; use Kurozora\Cooldown\HasCooldowns; class User extends Model { use HasCooldowns; }
与模型特定冷却交互的API与全局冷却完全相同,但是您需要在模型本身上使用cooldown
方法
if($user->cooldown('create-post')->notPassed()) return 'You cannot create a post right now.'; // ... create the post ... $user->cooldown('create-post')->for('5 minutes');
所有冷却方法
这些方法适用于全局和模型特定冷却。
for()
时间段内的冷却
传递一个包含所需时间段的字符串。
cooldown('create-post')->for('1 day 3 hours');
until()
给定日期时间的冷却
传递一个包含所需日期时间的Carbon对象。
$tomorrow = now()->addDay(); cooldown('create-post')->until($tomorrow);
reset()
重置冷却
冷却将被重置,操作将立即可用。
cooldown('create-post')->reset();
passed()
检查冷却是否已经过去。如果没有启动过冷却,则返回true。
cooldown('create-post')->passed(); // true/false
notPassed()
检查冷却是否仍然活跃,因此尚未过去。
cooldown('create-post')->notPassed(); // true/false
expiresAt()
获取过期日期
返回冷却将通过的日期和时间。
cooldown('create-post')->expiresAt(); // Illuminate\Support\Carbon object
get()
返回底层的Cooldown模型。
cooldown('create-post')->get(); // Kurozora\Cooldown\Models\Cooldown object
测试
composer test
贡献
有关详细信息,请参阅CONTRIBUTING。
安全
如果您发现任何安全问题,请通过电子邮件kurozoraapp@gmail.com联系,而不是使用问题跟踪器。
贡献者 ✨
感谢这些优秀的人们 (emoji key)
本项目遵循all-contributors规范。欢迎任何类型的贡献!
许可协议
MIT许可协议(MIT)。有关更多信息,请参阅许可文件。