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