From 4f984d4f91a8d4308515cf262ddeaf17b6a8bcd5 Mon Sep 17 00:00:00 2001 From: devjin Date: Mon, 27 Aug 2012 08:11:43 +0000 Subject: [PATCH] added a checked password page when information of member before modify. git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.3.2@11099 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/conf/module.xml | 1 + modules/member/lang/lang.xml | 7 +++ modules/member/member.controller.php | 46 ++++++++++++++-- modules/member/member.view.php | 52 +++++++++++++++++-- modules/member/ruleset/recheckedPassword.xml | 8 +++ .../skins/default/rechecked_password.html | 24 +++++++++ 6 files changed, 130 insertions(+), 8 deletions(-) create mode 100644 modules/member/ruleset/recheckedPassword.xml create mode 100644 modules/member/skins/default/rechecked_password.html 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}

    +
  • +
+ +