From e6a19417fff32012eb8df4e086cc30bd8a39f8cf Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 29 Apr 2008 02:32:06 +0000 Subject: [PATCH] =?UTF-8?q?#466=20Context=20class=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=EC=9C=A0=EB=AC=B4=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8=ED=9B=84=20=EB=A7=A4=EB=B2=88=20=EC=84=B8=EC=85=98=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=EB=A5=BC=20=EC=83=88=EB=A1=9C=20=EA=B0=B1?= =?UTF-8?q?=EC=8B=A0=ED=95=98=EB=8F=84=EB=A1=9D=20=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=EB=90=9C=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EC=9D=98=20=ED=98=84=20=EC=A0=95=EB=B3=B4=EB=A5=BC=20=EC=A0=9C?= =?UTF-8?q?=EB=8C=80=EB=A1=9C=20=EC=9A=B4=EC=98=81=ED=95=A0=20=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=BD=94=EB=93=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4159 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 29 ++++++++------- modules/member/member.controller.php | 54 +++++++++++++--------------- modules/member/tpl/member_list.html | 2 +- modules/point/point.controller.php | 7 ---- 4 files changed, 39 insertions(+), 53 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index de6481a23..d6e68f614 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -109,24 +109,23 @@ $this->_setRequestArgument(); $this->_setUploadedArgument(); - // 인증관련 데이터를 Context에 설정 - $oMemberModel = &getModel('member'); - - // 로그인되어 있지 않고 자동로그인 키값이 있으면 자동 로그인 체크 - if(Context::isInstalled() && !$oMemberModel->isLogged() && $_COOKIE['xeak']) { + // 인증 관련 정보를 Context와 세션에 설정 + if(Context::isInstalled()) { + // 인증관련 데이터를 Context에 설정 + $oMemberModel = &getModel('member'); $oMemberController = &getController('member'); - $oMemberController->doAutologin(); - } - // 로그인되어 있으면 로그인 정보 기록 - if($oMemberModel->isLogged()) { - $this->_set('is_logged', true); - $this->_set('logged_info', $_SESSION['logged_info']); + // 인증이 되어 있을 경우 유효성 체크 + if($oMemberModel->isLogged()) { + $oMemberController->setSessionInfo(); - // 로그인 되어 있지 않으면 먼저 자동 로그인을 체크 비로그인 상태 기록 - } else { - $this->_set('is_logged', false); - $this->_set('logged_info', NULL); + // 인증이 되어 있지 않을 경우 자동 로그인 확인 + } elseif($_COOKIE['xeak']) { + $oMemberController->doAutologin(); + } + + $this->_set('is_logged', $oMemberModel->isLogged() ); + $this->_set('logged_info', $oMemberModel->getLoggedInfo() ); } // rewrite 모듈사용 상태 체크 diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index c69a2782e..2e8aff7e7 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -775,9 +775,6 @@ // user_id 에 따른 정보 가져옴 $member_info = $oMemberModel->getMemberInfoByMemberSrl($args->member_srl); - // 사용자의 전용 메뉴 구성 - $member_info->menu_list = $this->getMemberMenuList(); - // 로그인 성공후 trigger 호출 (after) $trigger_output = ModuleHandler::triggerCall('member.doLogin', 'after', $member_info); if(!$trigger_output->toBool()) return $trigger_output; @@ -1168,8 +1165,7 @@ if ($output->data->is_register == 'Y') { $args->password = $output->data->new_password; $args->denied = 'N'; - } - else { + } else { $args->password = md5($output->data->new_password); unset($args->denied); } @@ -1186,9 +1182,6 @@ // 회원의 정보를 가져옴 $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); - // 사용자의 전용 메뉴 구성 - $member_info->menu_list = $this->getMemberMenuList(); - // 로그인 성공후 trigger 호출 (after) $trigger_output = ModuleHandler::triggerCall('member.doLogin', 'after', $member_info); if(!$trigger_output->toBool()) return $trigger_output; @@ -1309,15 +1302,12 @@ } // denied_date가 현 시간보다 적으면 알림 - if($member_info->limit_date && $member_info->limit_date >= date("Ymd")) return new Object(-1,sprintf(Context::getLang('msg_user_limited'),zdate($member_info->limit_date,"Y-m-d"))); + if($member_info->limit_date && substr($member_info->limit_date,0,8) >= date("Ymd")) return new Object(-1,sprintf(Context::getLang('msg_user_limited'),zdate($member_info->limit_date,"Y-m-d"))); // 사용자 정보의 최근 로그인 시간을 기록 $args->member_srl = $member_info->member_srl; $output = executeQuery('member.updateLastLogin', $args); - // 사용자의 전용 메뉴 구성 - $member_info->menu_list = $this->getMemberMenuList(); - // 로그인 성공후 trigger 호출 (after) $trigger_output = ModuleHandler::triggerCall('member.doLogin', 'after', $member_info); if(!$trigger_output->toBool()) return $trigger_output; @@ -1329,9 +1319,7 @@ $autologin_args->member_srl = $member_info->member_srl; executeQuery('member.deleteAutologin', $autologin_args); $autologin_output = executeQuery('member.insertAutologin', $autologin_args); - if($autologin_output->toBool()) { - setCookie('xeak',$autologin_args->autologin_key, time()+60*60*24*365, '/'); - } + if($autologin_output->toBool()) setCookie('xeak',$autologin_args->autologin_key, time()+60*60*24*365, '/'); } $this->setSessionInfo($member_info); @@ -1339,24 +1327,30 @@ return $output; } - /** - * @brief 로그인 사용자의 전용 메뉴를 구성 - **/ - function getMemberMenuList() { - $menu_list['dispMemberInfo'] = 'cmd_view_member_info'; - $menu_list['dispMemberFriend'] = 'cmd_view_friend'; - $menu_list['dispMemberMessages'] = 'cmd_view_message_box'; - $menu_list['dispMemberScrappedDocument'] = 'cmd_view_scrapped_document'; - $menu_list['dispMemberSavedDocument'] = 'cmd_view_saved_document'; - $menu_list['dispMemberOwnDocument'] = 'cmd_view_own_document'; - return $menu_list; - } - /** * @brief 세션 정보 갱싱 또는 생성 **/ - function setSessionInfo($member_info) { - if(!$member_info->member_srl) return; + function setSessionInfo($member_info = null) { + $oMemberModel = &getModel('member'); + + // 사용자 정보가 넘어오지 않았다면 현재 세션 정보에서 사용자 정보를 추출 + if(!$member_info && $_SESSION['member_srl'] && $oMemberModel->isLogged() ) { + $member_info = $oMemberModel->getMemberInfoByMemberSrl($_SESSION['member_srl']); + + // 회원정보가 없다면 세션 파기 + if($member_info->member_srl != $_SESSION['member_srl']) { + $this->destroySessionInfo(); + return; + } + } + + // 사용자의 전용 메뉴 구성 (이 메뉴는 애드온등으로 변경될 수 있음) + $member_info->menu_list['dispMemberInfo'] = 'cmd_view_member_info'; + $member_info->menu_list['dispMemberFriend'] = 'cmd_view_friend'; + $member_info->menu_list['dispMemberMessages'] = 'cmd_view_message_box'; + $member_info->menu_list['dispMemberScrappedDocument'] = 'cmd_view_scrapped_document'; + $member_info->menu_list['dispMemberSavedDocument'] = 'cmd_view_saved_document'; + $member_info->menu_list['dispMemberOwnDocument'] = 'cmd_view_own_document'; // 오픈아이디인지 체크 (일단 아이디 형식으로만 결정) if(preg_match("/^([0-9a-z]+)$/is", $member_info->user_id)) $member_info->is_openid = false; diff --git a/modules/member/tpl/member_list.html b/modules/member/tpl/member_list.html index 56e34322f..4be6b77f0 100644 --- a/modules/member/tpl/member_list.html +++ b/modules/member/tpl/member_list.html @@ -84,7 +84,7 @@ {$lang->cmd_delete}{$lang->is_admin} - {$val->group_list} + {$val->group_list}  {$lang->homepage} {$lang->blog}   diff --git a/modules/point/point.controller.php b/modules/point/point.controller.php index 7acee02d1..b62e50a0f 100644 --- a/modules/point/point.controller.php +++ b/modules/point/point.controller.php @@ -422,13 +422,6 @@ $new_group_args->member_srl = $member_srl; $new_group_args->group_srl = $current_group_srl; $new_group_output = executeQuery('member.addMemberToGroup', $new_group_args); - - // 만약 대상 사용자와 로그인 사용자의 정보가 동일하다면 세션을 변경해줌 - $logged_info = Context::get('logged_info'); - if($logged_info->member_srl == $member_srl) { - $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); - $_SESSION['logged_info']->group_list = $member_info->group_list; - } } }