stylers / laravel-ban
Laravel Ban
Installs: 2 619
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 5
Forks: 0
Open Issues: 0
Requires
- php: >=8.1
- illuminate/broadcasting: ~10
- illuminate/database: ~10
- illuminate/queue: ~10
- illuminate/support: ~10
- laravel/legacy-factories: ~1.3.2
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^8.0
- phpmd/phpmd: ^2.15
- phpunit/phpunit: ^7.5.15 || ^8.4 || ^9.5.4 || ^10.5.5
This package is auto-updated.
Last update: 2024-11-03 15:10:16 UTC
README
Requirements
- PHP >= 8.1
- Laravel ~10.x
Installation
composer require stylers/laravel-ban
You can publish the migration
php artisan vendor:publish --provider="Stylers\LaravelBan\Providers\BanServiceProvider"
After the migration has been published, you can run the migrations
php artisan migrate
Usage
- How to add User to Bannable
use Stylers\LaravelBan\Contracts\Models\Traits\BannableInterface; use Stylers\LaravelBan\Models\Traits\Bannable; class User extends Authenticatable implements BannableInterface { use Notifiable; use Bannable; }
Ban
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
Unban
Remove active bans
$user = User::first(); $unbans = $user->unban();
Events
use Stylers\LaravelBan\Events\Banned; use Stylers\LaravelBan\Events\Unbanned;
Middleware for User
- Update
$routeMiddleware
inApp\Http\Kernel.php
use Stylers\LaravelBan\Http\Middleware\CheckUserBan; protected $routeMiddleware = [ ... 'check_user_ban' => CheckUserBan::class, ];
- Update your routes in
routes/
orApp\Providers\RouteServiceProvider
protected function mapWebRoutes() { Route::middleware('web', 'check_user_ban') ->namespace($this->namespace) ->group(base_path('routes/web.php')); }