From f9ffc1c1f3773d90434be25ba8f1964e8564211f Mon Sep 17 00:00:00 2001 From: hide_d Date: Sun, 9 Sep 2018 23:57:26 +0900 Subject: [PATCH] =?UTF-8?q?oauth=20=EC=9D=B8=EC=A6=9D=EC=A4=91=20token=5Fv?= =?UTF-8?q?alid=5Funtil=EB=A7=8C=20table=20column=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- f_install/sql/common_schema.sql | 6 ++++-- i_entrance/j_get_user_info.php | 7 +++---- index.php | 2 +- j_login.php | 4 ++-- js/user_info.js | 2 +- oauth_kakao/j_check_OTP.php | 8 ++++---- oauth_kakao/j_login_oauth.php | 6 +++--- oauth_kakao/j_reset_token.php | 13 ++++++------- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/f_install/sql/common_schema.sql b/f_install/sql/common_schema.sql index 7e09f2a8..973a5b6f 100644 --- a/f_install/sql/common_schema.sql +++ b/f_install/sql/common_schema.sql @@ -20,16 +20,18 @@ ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `member` ( `NO` INT(11) NOT NULL AUTO_INCREMENT, `oauth_id` BIGINT(20) NULL DEFAULT NULL, - `oauth_type` ENUM('NONE','KAKAO') NOT NULL, `ID` VARCHAR(64) NOT NULL, `EMAIL` VARCHAR(64) NULL DEFAULT NULL, + `oauth_type` ENUM('NONE','KAKAO') NOT NULL, + `oauth_info` TEXT NOT NULL DEFAULT '{}', + `token_valid_until` DATETIME NULL DEFAULT NULL, `PW` CHAR(128) NOT NULL, `salt` CHAR(16) NOT NULL, `third_use` INT(1) NOT NULL DEFAULT '0', `NAME` VARCHAR(64) NOT NULL, `PICTURE` VARCHAR(64) NULL DEFAULT 'default.jpg', `IMGSVR` INT(1) NULL DEFAULT '0', - `acl` text NOT NULL DEFAULT '{}' COMMENT 'json', + `acl` TEXT NOT NULL DEFAULT '{}' COMMENT 'json', `GRADE` INT(1) NULL DEFAULT '1', `REG_NUM` INT(3) NULL DEFAULT '0', `REG_DATE` DATETIME NOT NULL, diff --git a/i_entrance/j_get_user_info.php b/i_entrance/j_get_user_info.php index 757bf350..2c1bb432 100644 --- a/i_entrance/j_get_user_info.php +++ b/i_entrance/j_get_user_info.php @@ -9,7 +9,7 @@ $userID = Session::getUserID(); // 외부 파라미터 $db = RootDB::db(); -$member = $db->queryFirstRow('SELECT `id`, `name`, `grade`, `picture`, reg_date, third_use, acl, oauth_type, oauth_info FROM `member` WHERE `NO` = %i', $userID); +$member = $db->queryFirstRow('SELECT `id`, `name`, `grade`, `picture`, reg_date, third_use, acl, oauth_type, token_valid_until FROM `member` WHERE `NO` = %i', $userID); if(!$member['picture']){ $picture = ServConfig::getSharedIconPath().'/default.jpg'; @@ -30,8 +30,7 @@ else{ } } -$oauthInfo = Json::decode($member['oauth_info'])??[]; -$loginTokenValid = $oauthInfo['OTPValidUntil']??null; +$tokenValidUntil = $member['token_valid_until']; if($member['grade'] == 6) { $grade = '운영자'; @@ -86,6 +85,6 @@ Json::die([ 'third_use'=>($member['third_use']!=0), 'acl'=>$acl, 'oauth_type'=>$member['oauth_type'], - 'login_token_valid'=>$loginTokenValid + 'token_valid_until'=>$tokenValidUntil ]); diff --git a/index.php b/index.php index 0e161a0c..0e5db2e4 100644 --- a/index.php +++ b/index.php @@ -217,7 +217,7 @@ function postOAuthResult(result){
인증 코드가 필요합니다.

카카오톡의 '나와의 채팅'란을 확인해 주세요.
- (별도의 알림[소리, 진동, 숫자]가 발생하지 않습니다.) + (별도의 알림[소리, 진동, 숫자]이 발생하지 않습니다.)
diff --git a/j_login.php b/j_login.php index fb18c875..ac28aa51 100644 --- a/j_login.php +++ b/j_login.php @@ -41,7 +41,7 @@ function kakaoOAuthCheck(array $userInfo) : ?array { $refreshTokenValidUntil = $oauthInfo['refreshTokenValidUntil']??null; $OTPValue = $oauthInfo['OTPValue']??null; $OTPTrialUntil = $oauthInfo['OTPTrialUntil']??null; - $OTPValidUntil = $oauthInfo['OTPValidUntil']??null; + $tokenValidUntil = $member['token_valid_until']; if(!$accessToken || !$refreshToken || !$accessTokenValidUntil || !$refreshTokenValidUntil){ return [false, 'OAuth 정보가 보관되어 있지 않습니다. 카카오 로그인을 수행해 주세요.']; @@ -79,7 +79,7 @@ function kakaoOAuthCheck(array $userInfo) : ?array { ], 'no=%i', $userInfo['no']); } - if($OTPValidUntil && $now <= $OTPValidUntil){ + if($tokenValidUntil && $now <= $tokenValidUntil){ return null; } diff --git a/js/user_info.js b/js/user_info.js index 0ed86887..8f31836d 100644 --- a/js/user_info.js +++ b/js/user_info.js @@ -22,7 +22,7 @@ function fillUserInfo(result){ } $('#slot_oauth_type').text(result.oauth_type); if(result.oauth_type != 'NONE'){ - $('#slot_token_valid_until').text(result.login_token_valid); + $('#slot_token_valid_until').text(result.token_valid_until); } else{ $('#slot_token_valid_until').parent().html(''); diff --git a/oauth_kakao/j_check_OTP.php b/oauth_kakao/j_check_OTP.php index 7aecc402..bf8b72dc 100644 --- a/oauth_kakao/j_check_OTP.php +++ b/oauth_kakao/j_check_OTP.php @@ -78,15 +78,15 @@ if($OTPValue != $otp){ ]); } -$OTPValidUntil = TimeUtil::DatetimeFromNowDay(10); +$tokenValidUntil = TimeUtil::DatetimeFromNowDay(10); $session->setReqOTP(false); -$oauthInfo['OTPValidUntil'] = $OTPValidUntil; RootDB::db()->update('member', [ - 'oauth_info'=>Json::encode($oauthInfo) + 'oauth_info'=>Json::encode($oauthInfo), + 'token_valid_until'=>$tokenValidUntil, ], 'no=%i', $userNo); Json::die([ 'result'=>true, 'reset'=>false, - 'reason'=>"로그인을 성공했습니다. {$OTPValidUntil}까지 유효합니다." + 'reason'=>"로그인을 성공했습니다. {$tokenValidUntil}까지 유효합니다." ]); \ No newline at end of file diff --git a/oauth_kakao/j_login_oauth.php b/oauth_kakao/j_login_oauth.php index cf0200d9..1eb6601d 100644 --- a/oauth_kakao/j_login_oauth.php +++ b/oauth_kakao/j_login_oauth.php @@ -117,7 +117,7 @@ if(!$email){ $userInfo = $RootDB->queryFirstRow( - 'SELECT `no`, `id`, `name`, `grade`, `delete_after`, `acl`, oauth_info from member where email=%s',$email); + 'SELECT `no`, `id`, `name`, `grade`, `delete_after`, `acl`, oauth_info, token_valid_until from member where email=%s',$email); if(!$userInfo){ $restAPI->unlink(); @@ -164,9 +164,9 @@ RootDB::db()->update('member', [ ], 'no=%i', $userInfo['no']); -$OTPValidUntil = $oauthInfo['OTPValidUntil']??null; +$tokenValidUntil = $userInfo['token_valid_until']; -if(!$OTPValidUntil || $OTPValidUntil < $now){ +if(!$tokenValidUntil || $tokenValidUntil < $now){ if(!createOTPbyUserNO($userInfo['no'])){ Json::die([ 'result'=>false, diff --git a/oauth_kakao/j_reset_token.php b/oauth_kakao/j_reset_token.php index d8abaa11..92f6c143 100644 --- a/oauth_kakao/j_reset_token.php +++ b/oauth_kakao/j_reset_token.php @@ -12,29 +12,28 @@ $session = Session::requireLogin([ $userID = Session::getUserID(); -$oauthInfo = Json::decode(RootDB::db()->queryFirstField('SELECT oauth_info from member where no=%i',$userID))??[]; -if(!$oauthInfo){ +$tokenValidUntil = RootDB::db()->queryFirstField('SELECT token_valid_until from member where no=%i',$userID); + +if(!$tokenValidUntil){ Json::die([ 'result'=>false, 'reason'=>'초기화 가능한 로그인 상태가 아닙니다.' ]); } -$OTPValidUntil = $oauthInfo['OTPValidUntil']??null; - $now = TimeUtil::DatetimeNow(); $expectedDate = TimeUtil::DatetimeFromNowDay(5); -if($expectedDate <= $OTPValidUntil){ +if($expectedDate <= $tokenValidUntil){ Json::die([ 'result'=>false, 'reason'=>'아직 연장 가능하지 않습니다.' ]); } -unset($oauthInfo['OTPValidUntil']); +unset($oauthInfo['tokenValidUntil']); RootDB::db()->update('member', [ - 'oauth_info'=>Json::encode($oauthInfo) + 'token_valid_until'=> null ], 'no=%i', $userID); $session->logout();