gecche/laravel-bannable

处理可封禁用户的简单包

v11.0 2024-03-19 16:05 UTC

README

License Laravel Laravel Laravel Laravel Laravel Laravel Laravel

laravel-bannable

Laravel 处理可封禁用户的包

描述

在许多应用程序中,由于各种原因,例如:不遵守平台规则、不尊重其他用户或未支付月费等,您的用户可能会被平台封禁。

此包向标准用户添加了一个 banned 属性,以防止此类封禁用户的认证。已完全测试。

文档

版本兼容性

安装

将 gecche/laravel-bannable 添加到 composer.json 的需求中

{
    "require": {
        "gecche/laravel-bannable": "10.*"
    }
}

此包使用发现功能。

基本用法

要使用包的功能,首先您需要发布并运行提供的迁移,该迁移简单地向用户表添加一个 banned 布尔字段。

然后,如果您使用 Eloquent 用户,您必须将可封禁功能添加到 User 模型类中

php artisan vendor:publish --provider="Gecche\Bannable\BannableServiceProvider"

然后,如果您使用 Eloquent 用户,您必须将可封禁功能添加到 User 模型类中

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Gecche\Bannable\Bannable;
use Gecche\Bannable\Contracts\Bannable as BannableContract;

class User extends Authenticatable implements BannableContract
{
    use Notifiable;
    use Bannable;

...

最后,您需要更改 auth.php 配置,将用户提供者的驱动程序更改为 eloquent-bannable

'providers' => [
        'users' => [
            'driver' => 'eloquent-bannable',
            'model' => App\User::class,
        ],
    ],

就是这样!从现在起,如果用户的 banned 属性设置为 true,则将无法认证到平台。

该包还提供了一个 database-bannable 用户提供者的驱动程序。

更改 "banned" 属性的名称

要更改 "banned" 属性的名称,只需在您的 Eloquent User 类中重写 getBannedName 方法,将 banned 名称替换为您想要的任何名称

    /**
     * Get the column name for the "banned" value.
     *
     * @return string
     */
    public function getBannedName()
    {
        return 'banned';
    }

请记住更改数据库字段的名称!

封禁和解封用户

Gecche\Bannable\Bannable 特性还提供了两个简单的方法,即 banunban,分别用于封禁和解封用户。这两个方法也会触发相应的事件,即 Gecche\Bannable\Events\BannedGecche\Bannable\Events\Unbanned 事件。