From 503ad43a9ef54db1847646ec6c01faaac4b22013 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sun, 25 Mar 2018 17:19:07 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8,=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=95=84=EC=9B=83=EC=8B=9C=20member=5Flog=EC=97=90=20?= =?UTF-8?q?=EA=B8=B0=EB=A1=9D=20=EB=82=A8=EA=B9=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- i_entrance/j_logout.php | 13 +++++++++++-- j_login.php | 19 +++++++++++++++---- oauth_kakao/j_login_oauth.php | 14 ++++++++++++-- src/sammo/Session.php | 13 +++++++++++++ 4 files changed, 51 insertions(+), 8 deletions(-) diff --git a/i_entrance/j_logout.php b/i_entrance/j_logout.php index 746cb035..8358460e 100644 --- a/i_entrance/j_logout.php +++ b/i_entrance/j_logout.php @@ -5,12 +5,21 @@ require_once('_common.php'); $session = Session::requireLogin(); + + // 외부 파라미터 +RootDB::db()->insert('member_log',[ + 'member_no'=>$session->userID, + 'action_type'=>'logout', + 'action'=>Json::encode([ + 'ip'=>Util::get_client_ip(true) + ]) +]); +$session->access_token = null; $session->logout(); -unset($_SESSION['access_token']); -session_write_close(); +$session->setReadOnly(); setcookie("hello", "", time()-3600); Json::die([ diff --git a/j_login.php b/j_login.php index ac47e311..63f4485a 100644 --- a/j_login.php +++ b/j_login.php @@ -4,7 +4,7 @@ namespace sammo; require_once('_common.php'); - +$RootDB = RootDB::db(); $session = Session::Instance(); if($session->isLoggedIn()){ $session->logout(); @@ -20,7 +20,7 @@ if(!$username || !$password){ ]); } -$userInfo = RootDB::db()->queryFirstRow( +$userInfo = $RootDB->queryFirstRow( 'SELECT `no`, `id`, `name`, `grade`, `delete_after` '. 'from member where id=%s_username AND '. 'pw=sha2(concat(salt, %s_password, salt), 512)',[ @@ -35,7 +35,7 @@ if(!$userInfo){ ]); } -$canLogin = RootDB::db()->queryFirstField('SELECT `LOGIN` FROM `SYSTEM` WHERE `NO` = 1'); +$canLogin = $RootDB->queryFirstField('SELECT `LOGIN` FROM `SYSTEM` WHERE `NO` = 1'); if($canLogin != 'Y' && $userInfo['grade'] < 5){ Json::die([ 'result'=>false, @@ -46,7 +46,7 @@ if($canLogin != 'Y' && $userInfo['grade'] < 5){ $nowDate = TimeUtil::DatetimeNow(); if($userInfo['delete_after']){ if($userInfo['delete_after'] < $nowDate){ - RootDB::db()->delete('member', 'no=%i', $userInfo['no']); + $RootDB->delete('member', 'no=%i', $userInfo['no']); Json::die([ 'result'=>false, 'reason'=>"기간 만기로 삭제되었습니다. 재 가입을 시도해주세요." @@ -61,6 +61,17 @@ if($userInfo['delete_after']){ } +$RootDB->insert('member_log',[ + 'member_no'=>$userInfo['no'], + 'action_type'=>'login', + 'action'=>Json::encode([ + 'ip'=>Util::get_client_ip(true), + 'type'=>'plain' + ]) +]); + + + $session->login($userInfo['no'], $userInfo['id'], $userInfo['grade']); Json::die([ 'result'=>true, diff --git a/oauth_kakao/j_login_oauth.php b/oauth_kakao/j_login_oauth.php index 15938654..dd8a158b 100644 --- a/oauth_kakao/j_login_oauth.php +++ b/oauth_kakao/j_login_oauth.php @@ -5,6 +5,7 @@ require('_common.php'); use \kakao\Kakao_REST_API_Helper as Kakao_REST_API_Helper; +$RootDB = RootDB::db(); $session = Session::Instance(); if($session->isLoggedIn()){ $session->logout(); @@ -89,7 +90,7 @@ if(!$email){ } -$userInfo = RootDB::db()->queryFirstRow( +$userInfo = $RootDB->queryFirstRow( 'SELECT `no`, `id`, `name`, `grade`, `delete_after` from member where email=%s',$email); if(!$userInfo){ @@ -105,7 +106,7 @@ if($userInfo['delete_after']){ if($userInfo['delete_after'] < $nowDate){ $restAPI->unlink(); unset($_SESSION['access_token']); - RootDB::db()->delete('member', 'no=%i', $userInfo['no']); + $RootDB->delete('member', 'no=%i', $userInfo['no']); Json::die([ 'result'=>false, 'reason'=>"기간 만기로 삭제되었습니다. 재 가입을 시도해주세요." @@ -122,6 +123,15 @@ if($userInfo['delete_after']){ } +$RootDB->insert('member_log',[ + 'member_no'=>$userInfo['no'], + 'action_type'=>'login', + 'action'=>Json::encode([ + 'ip'=>Util::get_client_ip(true), + 'type'=>'kakao' + ]) +]); + $session->login($userInfo['no'], $userInfo['id'], $userInfo['grade']); Json::die([ 'result'=>true, diff --git a/src/sammo/Session.php b/src/sammo/Session.php index 60198ec6..182a6670 100644 --- a/src/sammo/Session.php +++ b/src/sammo/Session.php @@ -4,6 +4,15 @@ namespace sammo; if(!defined('ROOT')){ define('ROOT', '../..'); } + +/** + * Session Wrapper. 내부적으로 $_SESSION을 이용 + * + * @property int $userID 유저코드 + * @property string $userName 유저명 + * @property int $userGrade 유저등급 + * @property string $ip IP + */ class Session { const PROTECTED_NAMES = [ @@ -15,6 +24,8 @@ class Session { 'writeClosed'=>true ]; + + private $writeClosed = false; /** @@ -99,6 +110,7 @@ class Session { $this->set('ip', Util::get_client_ip(true)); $this->set('time', time()); $this->set('userGrade', $grade); + return $this; } public function logout() { @@ -106,6 +118,7 @@ class Session { $this->set('userName', null); $this->set('userGrade', null); $this->set('time', time()); + return $this; } /**