
Laravel Ban は、Eloquent モデルの禁止の管理を簡素化します。あらゆるモデルを数分で禁止可能にします!
使用例はユーザー モデルに限定されず、組織、チーム、グループなど、あらゆる Eloquent モデルが禁止される可能性があります。
BanServiceによって処理されます。Userモデルに限定されず、Eloquent モデルは禁止される可能性があります。banおよびunbanで発生するイベント。まず、Composer を通じてパッケージをプルします。
composer require cybercog/laravel-banパッケージは自動的に登録されます。この手順は、Laravel 5.4 以前のリリースでのみ必要です。
サービスプロバイダーをapp/config/app.php内に含めます。
' providers ' => [
Cog Laravel Ban Providers BanServiceProvider::class,
],最後に、データベース移行を公開して実行する必要があります。
php artisan vendor:publish --provider= " CogLaravelBanProvidersBanServiceProvider " --tag= " migrations "
php artisan migrate use Cog Contracts Ban Bannable as BannableInterface ;
use Cog Laravel Ban Traits Bannable ;
use Illuminate Foundation Auth User as Authenticatable ;
class User extends Authenticatable implements BannableInterface
{
use Bannable;
}Bannable モデルには、 banned_atという名前のnullable timestamp列が必要です。この値はフラグとして使用され、ユーザーが禁止されているかどうかのチェックを簡素化します。デフォルトの Laravel ユーザーモデルを禁止可能にしたい場合は、以下の例を使用できます。
php artisan make:migration add_banned_at_column_to_users_table次に、次のコードを移行ファイルに挿入します。
<?php
use Illuminate Database Migrations Migration ;
use Illuminate Database Schema Blueprint ;
use Illuminate Support Facades Schema ;
return new class extends Migration
{
public function up (): void
{
Schema:: table ( ' users ' , function ( Blueprint $ table ) {
$ table -> timestamp ( ' banned_at ' )-> nullable ();
});
}
public function down (): void
{
Schema:: table ( ' users ' , function ( Blueprint $ table ) {
$ table -> dropColumn ( ' banned_at ' );
});
}
}; $ user -> ban (); $ user -> ban ([
' comment ' => ' Enjoy your ban! ' ,
]); $ user -> ban ([
' expired_at ' => ' 2086-03-28 00:00:00 ' ,
]); expired_at属性は、 CarbonCarbonインスタンス、またはCarbonCarbon::parse($string)メソッドで解析できる任意の文字列です。
$ user -> ban ([
' expired_at ' => ' +1 month ' ,
]); $ user -> unban (); unbanでは、関連するすべての禁止モデルが論理的に削除されます。
$ user -> isBanned (); $ user -> isNotBanned (); app ( Cog Contracts Ban BanService::class)-> deleteExpiredBans (); $ ban = $ user -> ban ();
$ ban -> isPermanent (); // trueまたは、 null値を渡します。
$ ban = $ user -> ban ([
' expired_at ' => null ,
]);
$ ban -> isPermanent (); // true $ ban = $ user -> ban ([
' expired_at ' => ' 2086-03-28 00:00:00 ' ,
]);
$ ban -> isTemporary (); // true $ users = User:: withoutBanned ()-> get (); $ users = User:: withBanned ()-> get (); $ users = User:: onlyBanned ()-> get ();クエリ スコープを常に適用するには、禁止可能モデルでshouldApplyBannedAtScopeメソッドを定義します。メソッドがtrueを返した場合、禁止されているすべてのモデルがデフォルトで非表示になります。
use Cog Contracts Ban Bannable as BannableInterface ;
use Cog Laravel Ban Traits Bannable ;
use Illuminate Foundation Auth User as Authenticatable ;
class User extends Authenticatable implements BannableInterface
{
use Bannable;
/**
* Determine if BannedAtScope should be applied by default.
*
* @return bool
*/
public function shouldApplyBannedAtScope ()
{
return true ;
}
}エンティティが禁止されている場合、 CogLaravelBanEventsModelWasBannedイベントが発生します。
エンティティが禁止解除されているCogLaravelBanEventsModelWasUnbannedイベントが発生します。
このパッケージには、禁止されたユーザーが保護されたルートに移動できないように設計されたルート ミドルウェアが含まれています。
これを使用するには、 app/Http/Kernel.phpファイルの$routeMiddleware配列で新しいミドルウェアを定義します。
protected $ routeMiddleware = [
' forbid-banned-user ' => Cog Laravel Ban Http Middleware ForbidBannedUser::class,
]次に、保護する必要があるルートおよびルート グループでそれを使用します。
Route:: get ( ' / ' , [
' uses ' => ' UsersController@profile ' ,
' middleware ' => ' forbid-banned-user ' ,
]);保護されたルートへのアクセスで禁止されたユーザーを強制的にログアウトしたい場合は、代わりにLogsOutBannedUserミドルウェアを使用します。
protected $ routeMiddleware = [
' logs-out-banned-user ' => Cog Laravel Ban Http Middleware LogsOutBannedUser::class,
]基本インストールを実行した後、 ban:delete-expiredコマンドの使用を開始できます。ほとんどの場合、期限切れの禁止を削除したりモデルの禁止を解除する必要があるたびに手動で実行する必要がないように、これらのコマンドをスケジュールすることができます。
このコマンドは、他のコマンドと同様に、Laravel のコンソール カーネルでスケジュールできます。
// app/Console/Kernel.php
protected function schedule ( Schedule $ schedule )
{
$ schedule -> command ( ' ban:delete-expired ' )-> everyMinute ();
}もちろん、上記のコードで使用されている時間は単なる例です。自分の好みに合わせて調整してください。
最近の変更点の詳細については、CHANGELOG を参照してください。
アップグレード手順の詳細については、「アップグレード」を参照してください。
詳細については、「貢献」を参照してください。
以下を使用してテストを実行します。
vendor/bin/phpunitセキュリティ関連の問題を発見した場合は、問題トラッカーを使用する代わりに、[email protected] に電子メールを送信してください。
アントン・コマレフ | バドル・アルディーン・シェク・サリム | リック・マクギリス | アンセルC | ジョー・アーチャー |
|---|---|---|---|---|
フランシスコ・ソリス | ヤクブ・アダメク | イリア・ラザレフ | ゼオナイト |
Laravel Ban 貢献者リスト
Laravel Banパッケージは、MIT ライセンスに基づいて Anton Kumarev によってライセンス供与されたオープンソース ソフトウェアです。Fat Boss In Jail画像。 CyberCog は、愛好家のソーシャル ユニティです。製品およびソフトウェア開発における最良のソリューションを研究することが私たちの情熱です。