Site icon PlusMagi's Blog By Pitt Phunsanit

Laravel 5.3 login แบบมีเงื่อนไข

เพิ่งเขียน Laravel 5.1 login แบบมีเงื่อนไข ไปพอ laravel 5.3 ออกมาก็แก้โครงสร้างใหม่อีกแล้ว 555 ขยันแก้โครงสร้างจริงๆ

การแก้ไขให้ตรวจสอบเพิ่มในการ login เข้าระบบทำได้โดย

  1. เพิ่ม column active ในตาราง users โดย
    ALTER TABLE `users` ADD `active` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '0 inactive, 1 active' AFTER `id`;
  2. เปิดไฟล์ \app\Http\Controllers\Auth\LoginController.php แก้ตามตัวอย่าง
    ...
    use Illuminate\Http\Request;
    …
        /* custom login condition */
        protected function credentials(Request $request)
        {
            $crendentials = $request->only($this->username(), 'password');
            $crendentials['active'] = 1;
            return $crendentials;
        }
    ...
    

    และถ้าต้องการให้เปลี่ยนไปหน้าอื่นหลังจาก login ให้แก้

    protected $redirectTo = '/home';

    ไป route ที่ต้องการ

  3. ทดลอง logout แล้วก็ login ใหม่จะมี message These credentials do not match our records. ขึ้นมาทั้งๆที username และ password ถูกต้อง
  4. ไปแก้ record user ที่ใช้ให้ active = 1 แล้ว login ดูอีกครั้ง จะเข้าระบบได้แล้ว
  5. ในตอนนี้ถ้ามีการสมัครสมาชิกใหม่ ระบบจะ login ให้โดยอัตโนมัติแก้โดยเปิดไฟล์ \app\Http\Controllers\Auth\register.blade.php เพิ่ม
    ...
    use Illuminate\Http\Request;
    …
        /* custom register process */
        public function register(Request $request)
        {
            $this->validator($request->all())->validate();
    
            $this->create($request->all());
    
            return redirect(route('login')); /* Change this route to your needs */
        }
    ...
    

    logout แล้วทดลองสมัครสมาชิกใหม่ จะต้องวิ่งไปในหน้าที่ต้องการโดยไม่ได้ล๊อกอิน

  6. สร้างหน้าจัดการ user โดยเปลี่ยนสถานะ
    0
    login ไม่ได้
    1
    login ได้
Exit mobile version