در بعضی مواقع نیاز است که ما به دلیل یک سری قوانین یک سری از کاربرها که این قوانین را زیرپا گذاشته اند و آن را رعایت نکرده اند بن کنیم و از دسترسی آن ها به وب سایت جلوگیری کنیم. در لاراول شما می توانید با راه های مختلفی این کار را انجام دهید. که ما در اینجا می خواهیم یکی از این راه ها را به شما آموزش بدهیم.
با استفاده از پکیج Banhammer شما می توانید به راحتی هر IP با هر ID که خواستید آن را بن کنید. و همچنین این شما می توانید با این پکیج که لینک آن در آخر این مقاله قرار داده خواهد شد از Request هایی (درخواست ها) که توسط آن IP را نیز مسدود کنید.و حتی می توانید IP مورد نظر را از ورود به برخی از قسمت های وب سایت نیز جلوگیری کنید.
برای شروع ابتدا این پکیج را دانلود کنید که لینک گیت هاب آن در آخر مقاله قرار دارد، سپس در مدل(Model) یوزر(User) مدل پکیج را صدا می زنیم:
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Mchev\Banhammer\Traits\Bannable;
class User extends Authenticatable
{
use Bannable;
}
و سپس در کنترلر (Controller) مورد نظر یوزر را گرفته و به راحتی آن را بن می کنیم:
$ip = \Request::ip();
$user->ban();
// IP ban
$user->ban([
'ip' => $ip ,
]);
// List all bans
$model->bans();
// Check ban status
$model->isBanned();
$model->isNotBanned();
// Unban a model
$user->unban();
//full ban
$model->ban([
'created_by_type' => 'App\Models\User',
'created_by_id' => 1,
'comment' => "You've been evil",
'ip' => "8.8.8.8",
'expired_at' => Carbon::now()->addDays(7)
]);
در ظمن شما می توانید IP را به صورت مستقیم نیز بن کنید، به این شکل:
use Mchev\Banhammer\IP;
IP::ban("8.8.8.8");
IP::ban(["8.8.8.8", "4.4.4.4"]
شما می توانید با این پکیج برای بن یک تاریخ انقضا مشخص کنید مثلا کاربر را تا 7 روز بن کنید و بعد از 7 روز به صورت خودکار رفع بن خواهد شد.
$user->banUntil('7 days');
در این پکیج متد های کاربردی مختلف دیگری نیز وجود دارد که می توانید در لینک گیت ها این پکیج آن را ببینید.
