Site icon PlusMagi's Blog By Pitt Phunsanit

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

Laravel สร้างระบบ login ได้โดยทำตามคู่มือ Authentication หรือตาม ติดตั้ง laravel ลั๊ลลาเวล และ สร้างระบบ login ใน laravel 5

แต่เมื่อใคร ๆ ก็สามารถที่จะสมัครแล้วใช้งานได้เลย ทำให้ไม่ปลอดภัย จึงควรเพิ่มเงื่อนไขเข้าไป ทำได้โดย

การแก้ไขให้ตรวจสอบเพิ่มในการ 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\AuthController.php แก้ตามตัวอย่าง
    ...
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Auth;
    …
    
     /* redirect after login */
     protected $redirectPath = 'home';
    
     /* custom login condition */
     protected function getCredentials(Request $request)
     {
      $crendentials = $request->only($this->loginUsername(), 'password');
      $crendentials['active'] = 1;
      return $crendentials;
     }
    
     /* custom register process */
     public function postRegister(Request $request)
     {
      $validator = $this->validator($request->all());
    
      if ($validator->fails()) {
       $this->throwValidationException(
        $request, $validator
       );
      }
    
      Auth::login($this->create($request->all()));
      Auth::logout();
    
      flash('please contact system administrator for activation.');
    
      return redirect('auth/login');
     }
    ...
    

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

    protected $redirectPath = '/home';

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

  3. ทดลอง logout แล้วก็ login ใหม่จะมี message These credentials do not match our records. ขึ้นมาทั้ง ๆ ที username และ password ถูกต้อง
  4. ไปแก้ record user ที่ใช้ให้ active = 1 แล้ว login ดูอีกครั้ง จะเข้าระบบได้แล้ว
  5. logout แล้วทดลองสมัครสมาชิกใหม่ จะต้องวิ่งไปในหน้าที่ต้องการโดยไม่ได้ล๊อกอิน
  6. สร้างหน้าจัดการ user โดยเปลี่ยนสถานะ
    0
    login ไม่ได้
    1
    login ได้
Exit mobile version