/** * ตรวจสอบการ 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; } }
/** * Generated from @assert ('012 3465') [==] '0123465'. * * @covers Kotchasan\Text::username */ public function testUsername2() { $this->assertEquals('0123465', \Kotchasan\Text::username('012 3465')); }