diff --git a/modules/member/conf/module.xml b/modules/member/conf/module.xml index 3a701e8d1..a0dcc3129 100644 --- a/modules/member/conf/module.xml +++ b/modules/member/conf/module.xml @@ -42,6 +42,7 @@ + diff --git a/modules/member/lang/lang.xml b/modules/member/lang/lang.xml index 271040837..870d43eb7 100644 --- a/modules/member/lang/lang.xml +++ b/modules/member/lang/lang.xml @@ -1308,6 +1308,10 @@ + + + + @@ -1570,6 +1574,9 @@ + + + diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index d762e46b8..5fe397d9d 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -360,6 +360,48 @@ $this->setRedirectUrl($returnUrl); } + + function procMemberModifyInfoBefore() + { + if(!$_SESSION['rechecked_password_step']) + { + return $this->stop('msg_invalid_request'); + } + + if(!Context::get('is_logged')) + { + return $this->stop('msg_not_logged'); + } + + $password = Context::get('password'); + + if(!$password) + { + return $this->stop('msg_invalid_request'); + } + + $oMemberModel = &getModel('member'); + + if(!$this->memberInfo->password) + { + $columnList = array('member_srl', 'password'); + $memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList); + $this->memberInfo->password = $memberInfo->password; + } + // Verify the cuttent password + if(!$oMemberModel->isValidPassword($this->memberInfo->password, $password)) + { + return new Object(-1, 'invalid_password'); + } + + $_SESSION['rechecked_password'] = TRUE; + $_SESSION['rechecked_password_step'] = FALSE; + + $redirectUrl = getUrl('', 'act', 'dispMemberModifyInfo'); + $this->setRedirectUrl($redirectUrl); + + } + /** * Edit member profile * @@ -403,9 +445,7 @@ // Add extra vars after excluding necessary information from all the requested arguments $extra_vars = delObjectVars($all_args, $args); $args->extra_vars = serialize($extra_vars); - // Create a member model object - $oMemberModel = &getModel('member'); - + // remove whitespace $checkInfos = array('user_id', 'nick_name', 'email_address'); $replaceStr = array("\r\n", "\r", "\n", " ", "\t", "\xC2\xAD"); diff --git a/modules/member/member.view.php b/modules/member/member.view.php index 23b2c96b9..17ae96192 100644 --- a/modules/member/member.view.php +++ b/modules/member/member.view.php @@ -146,12 +146,11 @@ { $item->title = $extendFormInfo[$formInfo->member_join_form_srl]->column_title; $orgValue = $extendFormInfo[$formInfo->member_join_form_srl]->value; - - if($formInfo->type=='tel') + if($formInfo->type=='tel' && is_array($orgValue)) { $item->value = implode('-', $orgValue); } - elseif($formInfo->type=='kr_zip') + elseif($formInfo->type=='kr_zip' && is_array($orgValue)) { $item->value = implode(' ', $orgValue); } @@ -211,11 +210,54 @@ $this->setTemplateFile('signup_form'); } + + function dispMemberModifyInfoBefore() + { + $logged_info = Context::get('logged_info'); + $oMemberModel = &getModel('member'); + if(!$oMemberModel->isLogged() || empty($logged_info)) + { + return $this->stop('msg_not_logged'); + } + + $_SESSION['rechecked_password'] = FALSE; + $_SESSION['rechecked_password_step'] = TRUE; + + $templateFile = $this->getTemplatePath().'rechecked_password.html'; + if(!is_readable($templateFile)) + { + $templatePath = sprintf('%sskins/default', $this->module_path); + $this->setTemplatePath($templatePath); + } + + if ($this->member_config->identifier == 'email_address') + { + Context::set('identifierTitle', Context::getLang('email_address')); + Context::set('identifierValue', $logged_info->email_address); + } + else + { + Context::set('identifierTitle', Context::getLang('user_id')); + Context::set('identifierValue', $logged_info->user_id); + } + + $this->setTemplateFile('rechecked_password'); + } + /** * @brief Modify member information **/ - function dispMemberModifyInfo() { - $member_config = $this->member_config; + function dispMemberModifyInfo() + { + if(!$_SESSION['rechecked_password']) + { + $this->dispMemberModifyInfoBefore(); + return; + } + + $_SESSION['rechecked_password'] = FALSE; + + $member_config = $this->member_config; $oMemberModel = &getModel('member'); // A message appears if the user is not logged-in diff --git a/modules/member/ruleset/recheckedPassword.xml b/modules/member/ruleset/recheckedPassword.xml new file mode 100644 index 000000000..272b2dcf1 --- /dev/null +++ b/modules/member/ruleset/recheckedPassword.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/modules/member/skins/default/rechecked_password.html b/modules/member/skins/default/rechecked_password.html new file mode 100644 index 000000000..bb3fcf366 --- /dev/null +++ b/modules/member/skins/default/rechecked_password.html @@ -0,0 +1,24 @@ + +{$lang->msg_rechecked_password} + + {$XE_VALIDATOR_MESSAGE} + + + + + + + {$identifierTitle} + {$identifierValue} + + + {$lang->password} + + {$lang->about_rechecked_password} + + + + + {$lang->cmd_cancel} + +
{$XE_VALIDATOR_MESSAGE}
{$identifierTitle}
{$identifierValue}
{$lang->password}
{$lang->about_rechecked_password}