Esempio n. 1
0
 /**
  * ตรวจสอบการ login เมื่อมีการเรียกใช้ class new Login
  * action=logout ออกจากระบบ
  * มาจากการ submit ตรวจสอบการ login
  * ถ้าไม่มีทั้งสองส่วนด้านบน จะตรวจสอบการ login จาก session และ cookie ตามลำดับ
  *
  * @return \static
  */
 public static function create()
 {
     // create class
     $login = new static();
     // การเข้ารหัส
     $pw = new Password(self::$cfg->password_key);
     // ชื่อฟิลด์สำหรับการรับค่าเป็นรายการแรกของ login_fields
     $field_name = reset(self::$cfg->login_fields);
     // อ่านข้อมูลจากฟอร์ม login ฟิลด์ login_username
     self::$text_username = self::$request->post('login_username', null)->toString();
     if (self::$text_username === null) {
         if (isset($_SESSION['login']) && isset($_SESSION['login'][$field_name])) {
             // from session
             self::$text_username = $_SESSION['login'][$field_name];
         } else {
             // from cookie
             $datas = self::$request->getCookieParams();
             self::$text_username = isset($datas['login_username']) ? $pw->decode($datas['login_username']) : null;
         }
         $login->from_submit = false;
     } else {
         $login->from_submit = true;
     }
     self::$text_username = Text::username(self::$text_username);
     // ค่าที่ส่งมา
     self::$text_password = $login->get('password', $pw);
     $login_remember = $login->get('remember', $pw) == 1 ? 1 : 0;
     // ตรวจสอบการ login
     if (self::$request->get('action')->toString() === 'logout' && !$login->from_submit) {
         // logout ลบ session และ cookie
         unset($_SESSION['login']);
         $time = time();
         setCookie('login_username', '', $time, '/');
         setCookie('login_password', '', $time, '/');
         self::$login_message = Language::get('Logout successful');
     } elseif (self::$request->post('action')->toString() === 'forgot') {
         // ตรวจสอบอีเมล์สำหรับการขอรหัสผ่านใหม่
         return $login->forgot(self::$request);
     } else {
         // ตรวจสอบค่าที่ส่งมา
         if (self::$text_username == '') {
             if ($login->from_submit) {
                 self::$login_message = Language::get('Please fill out this form');
                 self::$login_input = 'login_username';
             }
         } elseif (self::$text_password == '') {
             if ($login->from_submit) {
                 self::$login_message = Language::get('Please fill out this form');
                 self::$login_input = 'login_password';
             }
         } elseif (!$login->from_submit || $login->from_submit && self::$request->isSafe()) {
             // ตรวจสอบการ login กับฐานข้อมูล
             $login_result = $login->checkLogin(self::$text_username, self::$text_password);
             if (is_string($login_result)) {
                 // ข้อความผิดพลาด
                 self::$login_input = self::$login_input == 'password' ? 'login_password' : 'login_username';
                 self::$login_message = Language::get($login_result);
                 // logout ลบ session และ cookie
                 unset($_SESSION['login']);
                 $time = time();
                 setCookie('login_username', '', $time, '/');
                 setCookie('login_password', '', $time, '/');
             } else {
                 // save login session
                 $login_result['password'] = self::$text_password;
                 $_SESSION['login'] = $login_result;
                 // save login cookie
                 $time = time() + 2592000;
                 if ($login_remember == 1) {
                     setcookie('login_username', $pw->encode(self::$text_username), $time, '/');
                     setcookie('login_password', $pw->encode(self::$text_password), $time, '/');
                     setcookie('login_remember', $login_remember, $time, '/');
                 }
                 setcookie('login_id', $login_result['id'], $time, '/');
             }
         }
         return $login;
     }
 }
Esempio n. 2
0
 /**
  * Generated from @assert ('012 3465') [==] '0123465'.
  *
  * @covers Kotchasan\Text::username
  */
 public function testUsername2()
 {
     $this->assertEquals('0123465', \Kotchasan\Text::username('012 3465'));
 }