โค้ดดิ้ง

สร้าง 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

Nidkoma

ชื่นชอบในการเขียนบทความ และการหาความรู้ในด้านต่างๆ ชอบถ่ายรูป ถ่ายวิดีโอ ชอบฟัง แต่ไม่ชอบพูดมั้ง ?? ^ ^
Back to top button