ban کردن کاربر در لاراول
سلام دوستان. در این جلسه می خوام بهتون بگم چطوری جلوی login کردن کاربرای متخلف رو بگیرین. متاسفانه در کل اینترنت چه به زبان فارسی چه انگلیش جستجو کنید به نتیجه ای نمیرسید و این آموزش اولین بار در وبسایت چسبون داره آموزش داده میشه. این راهی که بهتون آموزش می دم یکی از بهترین راه ها و ساده ترین راه های banned کردن کاربر در فریم ورک لاراول هست. خب میریم سراغ آموزش: در ابتدا در table کاربرا که معمولا users اسمش هست یک فیلد یا ستون به اسم banned ایجاد کنید. برای این منظور به قسمت مایگریشن ها برید و کد زیر رو اضافه کنید:$table->boolean('banned')->default(0);خب دستور php artisan migrate رو بزنید تا table ساخته بشه. حالا به آدرس زیر در پروژتون برید:
vendor\laravel\framework\src\Illuminate\Auth\Middleware\Authenticate.php
فایل رو باز کنید و تابع handle رو پیدا کنید. باید تمام کدهای تابع handle رو با کد زیر جایگزین کنید:$user = $request->user(); if($user && $user->banned ==1){ $this->guard()->logout(); $request->session()->flush(); $request->session()->regenerate(); return redirect('/banned/'); } $this->authenticate($guards); return $next($request);بعد از تابع handle تابع زیر رو اضافه کنید:
protected function guard() { return auth()->guard(); }به همین راحتی میتونیم جلوی کاربرای متخلف رو بگیریم. البته در کنترلرتون حتما باید در construct از middleware که اسمش auth هست استفاده کنید:
public function __construct() { $this->middleware('auth'); }حالا کافیه banned رو برابر با یک قرار بدید تا کاربر به صفحه ی banned هدایت بشه و همچنین خودکار logout بشه. چسبون همیشه Update !