kurozora/laravel-cooldown

轻松将全局或模型特定的冷却机制集成到您的Laravel应用中。

1.0 2020-04-28 14:33 UTC

This package is auto-updated.

Last update: 2024-09-29 03:52:47 UTC


README

Latest version on packagist GitHub Tests Action Status Quality score Total downloads Kurozora Open Source

即插即用的全局和模型特定冷却机制

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)。有关更多信息,请参阅许可文件