สร้าง Multiple Login (ผู้ใช้ + ผู้ดูแลระบบ) ด้วย Middleware Laravel
สร้าง multiple login โดยใช้ laravel ง่ายๆ สามารถแบ่งผู้ใช้ทั่วไป และแอดมินได้ สำหรับใครที่กำลังจะทำระบบแนวนี้สามารถลองศึกษาจากบทความนี้ได้
ขั้นตอนที่ 1: ไปที่ไฟล์ database / migrations / yoursomedate_create_users_table.php และเพิ่มโค้ดนี้ไป
$table->tinyInteger('role_as')->default('0');
หมายเหตุ: เราจะกำหนดให้ 0 = user ทั่วไป 1 = แอดมิน
ขั้นตอนที่ 2: ตอนนี้ มาสร้าง middleware แบบกำหนดเองเพื่อตรวจสอบว่าผู้ใช้ตอนเข้าสู่ระบบว่าเป็นผู้ดูแลระบบหรือไม่ คำสั่งสำหรับสร้าง middleware ดังต่อไปนี้:
php artisan make:middleware AdminMiddleware
หลังจาก AdminMiddleware ถูกสร้างแล้ว ให้ไปที่ app/Http/Middleware/AdminMiddleware.php และเพิ่มโค้ดนี้
use Illuminate\Support\Facades\Auth;
public function handle($request, Closure $next)
{
if(Auth::check())
{
if(Auth::user()->role_as == '1')
{
return $next($request);
}
else
{
//ถ้าไม่ใช่แอดมินให้ไปที่ลิงค์นี้
return redirect('/home')->with('status','Access Denied! as you are not as admin');
}
}
else
{
return redirect('/home')->with('status','Please Login First');
}
}
ขั้นตอนที่ 3: ไปที่ app/Http/Kernel.php และเพิ่มโค้ดนี้
protected $routeMiddleware = [
'isAdmin' => \App\Http\Middleware\AdminMiddleware::class,
];
ขั้นตอนที่ 4: ตั้งค่าการเปลี่ยนเส้นทาง เมื่อมีการเข้าสู่ระบบในฐานะผู้ใช้หรือผู้ดูแลระบบ โดยไปที่ app/Http/Controller/Auth/LoginController.php และวางโค้ดนี้
use Illuminate\Support\Facades\Auth;
// protected $redirectTo = '/home';
public function redirectTo()
{
if(Auth::user()->role_as == '1') //1 = Admin Login
{
return 'dashboard';
}
elseif(Auth::user()->role_as == '0') // Normal or Default User Login
{
return '/';
}
}
// Use ANY ONE ===> the above code OR below code
//Second method to Redirect with Message ("STATUS") eg: welcome to dashboard
protected function authenticated()
{
if(Auth::user()->role_as == '1') //1 = Admin Login
{
return redirect('dashboard')->with('status','Welcome to your dashboard');
}
elseif(Auth::user()->role_as == '0') // Normal or Default User Login
{
return redirect('/')->with('status','Logged in successfully');
}
}
สุดท้ายตั้งค่าเส้นทางที่ route/web.php เพื่อตรวจสอบสิทธิ์
Route::group(['middleware' => ['auth','isAdmin']], function () {
Route::get('/dashboard', function () {
return view('admin.dashboard');
});
});
จากนั้นเราสามารถสร้างแอปพลิเคชัน CRUD ของคุณเพื่อกำหนดบทบาทสำหรับผู้ดูแลระบบได้แล้ว
ที่มา : https://www.fundaofwebit.com/laravel-5-8/how-to-make-user-and-admin-login-system-in-laravel