diff --git a/common/framework/session.php b/common/framework/session.php index 1740856db..de67c1999 100644 --- a/common/framework/session.php +++ b/common/framework/session.php @@ -353,9 +353,13 @@ class Session { self::login($member_srl, false); } + else + { + $_SESSION['member_srl'] = false; + } // Try autologin. - elseif (self::$_autologin_key) + if (!$member_srl && self::$_autologin_key) { $member_srl = getController('member')->doAutologin(self::$_autologin_key); if ($member_srl && self::isValid($member_srl)) diff --git a/tests/unit/framework/SessionTest.php b/tests/unit/framework/SessionTest.php index 5ca61074c..806da9ee3 100644 --- a/tests/unit/framework/SessionTest.php +++ b/tests/unit/framework/SessionTest.php @@ -238,6 +238,34 @@ class SessionTest extends \Codeception\TestCase\Test Rhymix\Framework\Session::close(); } + public function testIsValid() + { + Rhymix\Framework\Session::start(); + + $member_srl = 4; + Rhymix\Framework\Session::login($member_srl); + + $invalid_before = time() - 300; + $filename = \RX_BASEDIR . sprintf('files/member_extra_info/invalid_before/%s%d.txt', getNumberingPath($member_srl), $member_srl); + Rhymix\Framework\Storage::write($filename, $invalid_before); + Rhymix\Framework\Cache::set(sprintf('session:invalid_before:%d', $member_srl), $invalid_before); + $this->assertTrue(Rhymix\Framework\Session::isValid()); + + $invalid_before = time() + 300; + $filename = \RX_BASEDIR . sprintf('files/member_extra_info/invalid_before/%s%d.txt', getNumberingPath($member_srl), $member_srl); + Rhymix\Framework\Storage::write($filename, $invalid_before); + Rhymix\Framework\Cache::set(sprintf('session:invalid_before:%d', $member_srl), $invalid_before); + $this->assertFalse(Rhymix\Framework\Session::isValid()); + + $invalid_before = time(); + $filename = \RX_BASEDIR . sprintf('files/member_extra_info/invalid_before/%s%d.txt', getNumberingPath($member_srl), $member_srl); + Rhymix\Framework\Storage::write($filename, $invalid_before); + Rhymix\Framework\Cache::set(sprintf('session:invalid_before:%d', $member_srl), $invalid_before); + $this->assertTrue(Rhymix\Framework\Session::isValid()); + + Rhymix\Framework\Session::close(); + } + public function testGetMemberSrl() { Rhymix\Framework\Session::start();