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

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

  1. เพิ่ม column active ในตาราง users โดย[code language=”sql”]ALTER TABLE `users` ADD `active` TINYINT(1) UNSIGNED NOT NULL DEFAULT ‘0’ COMMENT ‘0 inactive, 1 active’ AFTER `id`;[/code]
  2. เปิดไฟล์ \app\Http\Controllers\Auth\LoginController.php แก้ตามตัวอย่าง[code language=”php” title=”\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;
    }

    [/code]และถ้าต้องการให้เปลี่ยนไปหน้าอื่นหลังจาก login ให้แก้[code language=”php” title=”Where to redirect users after login.”]protected $redirectTo = ‘/home’;[/code]ไป 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 เพิ่ม[code language=”php” title=”\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 */
    }

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

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