stylers/laravel-ban

6.0 2024-01-03 13:23 UTC

README

Latest Stable Version Total Downloads License Build Status codecov Maintainability

需求

  • PHP >= 8.1
  • Laravel ~10.x

安装

composer require stylers/laravel-ban

您可以发布迁移

php artisan vendor:publish --provider="Stylers\LaravelBan\Providers\BanServiceProvider"

迁移发布后,您可以运行迁移

php artisan migrate

使用方法

  • 如何将用户添加到可封禁列表
use Stylers\LaravelBan\Contracts\Models\Traits\BannableInterface;
use Stylers\LaravelBan\Models\Traits\Bannable;

class User extends Authenticatable implements BannableInterface
{
    use Notifiable;
    use Bannable;
}

封禁

use Carbon\Carbon;

$user = User::first();

$comment = "Reason of ban."; // ?string
$startAt = Carbon::addWeek(); // ?DateTimeInterface
$endAt = Carbon::now()->addWeeks(2); // ?DateTimeInterface

$ban = $user->ban(); // Ban without comment and timestamps (start_at, end_at) - never expire
$ban = $user->ban($comment, null, $endAt); // Ban for 2 weeks with comment
$ban = $user->ban($comment); // Ban without expire
$ban = $user->ban($comment, $startAt, $endAt); // Ban for a week with comment from next week

解封

移除活跃的封禁

$user = User::first();
$unbans = $user->unban();

事件

use Stylers\LaravelBan\Events\Banned;
use Stylers\LaravelBan\Events\Unbanned;

用户中间件

  • 更新 $routeMiddlewareApp\Http\Kernel.php
use Stylers\LaravelBan\Http\Middleware\CheckUserBan;

protected $routeMiddleware = [
    ...
    'check_user_ban' => CheckUserBan::class,
];
  • 更新您的路由在 routes/App\Providers\RouteServiceProvider
protected function mapWebRoutes()
{
    Route::middleware('web', 'check_user_ban')
         ->namespace($this->namespace)
         ->group(base_path('routes/web.php'));
}