mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-29 23:32:54 +09:00
Clean up activation workflow (fixes #1154)
This commit is contained in:
parent
f9b58784cb
commit
5d058942af
8 changed files with 42 additions and 235 deletions
|
|
@ -1656,11 +1656,22 @@ class memberController extends member
|
|||
|
||||
$args = new stdClass;
|
||||
$args->email_address = $email_address;
|
||||
$memberSrl = $oMemberModel->getMemberSrlByEmailAddress($email_address);
|
||||
if(!$memberSrl) throw new Rhymix\Framework\Exception('msg_not_exists_member');
|
||||
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($email_address);
|
||||
if(!$member_srl)
|
||||
{
|
||||
throw new Rhymix\Framework\Exception('msg_not_exists_member');
|
||||
}
|
||||
|
||||
$columnList = array('member_srl', 'user_id', 'user_name', 'nick_name', 'email_address');
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($memberSrl, 0, $columnList);
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList);
|
||||
if(!$member_info || !$member_info->member_srl)
|
||||
{
|
||||
throw new Rhymix\Framework\Exception('msg_not_exists_member');
|
||||
}
|
||||
if($member_info->denied !== 'Y')
|
||||
{
|
||||
throw new Rhymix\Framework\Exception('msg_activation_not_needed');
|
||||
}
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
$member_config = $oModuleModel->getModuleConfig('member');
|
||||
|
|
@ -1671,12 +1682,19 @@ class memberController extends member
|
|||
$chk_args = new stdClass;
|
||||
$chk_args->member_srl = $member_info->member_srl;
|
||||
$output = executeQuery('member.chkAuthMail', $chk_args);
|
||||
if($output->toBool() && $output->data->count == '0') throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
if($output->toBool() && $output->data->count == '0')
|
||||
{
|
||||
throw new Rhymix\Framework\Exception('msg_activation_key_not_found');
|
||||
}
|
||||
|
||||
$auth_args = new stdClass;
|
||||
$auth_args->member_srl = $member_info->member_srl;
|
||||
$output = executeQueryArray('member.getAuthMailInfo', $auth_args);
|
||||
if(!$output->data || !$output->data[0]->auth_key) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
if(!$output->data || !$output->data[0]->auth_key)
|
||||
{
|
||||
throw new Rhymix\Framework\Exception('msg_activation_key_not_found');
|
||||
}
|
||||
|
||||
$auth_info = $output->data[0];
|
||||
|
||||
// Update the regdate of authmail entry
|
||||
|
|
@ -1733,97 +1751,6 @@ class memberController extends member
|
|||
$this->setRedirectUrl($returnUrl);
|
||||
}
|
||||
|
||||
function procMemberResetAuthMail()
|
||||
{
|
||||
$memberInfo = $_SESSION['auth_member_info'];
|
||||
unset($_SESSION['auth_member_info']);
|
||||
|
||||
if(!$memberInfo)
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$newEmail = Context::get('email_address');
|
||||
|
||||
if(!$newEmail)
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$oMemberModel = getModel('member');
|
||||
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($newEmail);
|
||||
if($member_srl)
|
||||
{
|
||||
throw new Rhymix\Framework\Exception('msg_exists_email_address');
|
||||
}
|
||||
|
||||
// Check managed Email Host
|
||||
if($oMemberModel->isDeniedEmailHost($newEmail))
|
||||
{
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
$emailhost_check = $config->emailhost_check;
|
||||
|
||||
$managed_email_host = lang('managed_email_host');
|
||||
$email_hosts = $oMemberModel->getManagedEmailHosts();
|
||||
foreach ($email_hosts as $host)
|
||||
{
|
||||
$hosts[] = $host->email_host;
|
||||
}
|
||||
$message = sprintf($managed_email_host[$emailhost_check], implode(', ',$hosts), 'id@' . implode(', id@', $hosts));
|
||||
throw new Rhymix\Framework\Exception($message);
|
||||
}
|
||||
|
||||
// remove all key by member_srl
|
||||
$args = new stdClass;
|
||||
$args->member_srl = $memberInfo->member_srl;
|
||||
$output = executeQuery('member.deleteAuthMail', $args);
|
||||
|
||||
if(!$output->toBool())
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
|
||||
// update member info
|
||||
$args->email_address = $newEmail;
|
||||
list($args->email_id, $args->email_host) = explode('@', $newEmail);
|
||||
|
||||
$output = executeQuery('member.updateMemberEmailAddress', $args);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
|
||||
$this->_clearMemberCache($args->member_srl);
|
||||
|
||||
// Call a trigger (after)
|
||||
$trigger_obj = new stdClass;
|
||||
$trigger_obj->member_srl = $args->member_srl;
|
||||
$trigger_obj->email_address = $args->email_address;
|
||||
$trigger_output = ModuleHandler::triggerCall('member.updateMemberEmailAddress', 'after', $trigger_obj);
|
||||
|
||||
// generate new auth key
|
||||
$auth_args = new stdClass();
|
||||
$auth_args->user_id = $memberInfo->user_id;
|
||||
$auth_args->member_srl = $memberInfo->member_srl;
|
||||
$auth_args->new_password = $memberInfo->password;
|
||||
$auth_args->auth_key = Rhymix\Framework\Security::getRandom(40, 'hex');
|
||||
$auth_args->is_register = 'Y';
|
||||
|
||||
$output = executeQuery('member.insertAuthMail', $auth_args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$memberInfo->email_address = $newEmail;
|
||||
|
||||
// resend auth mail.
|
||||
$this->_sendAuthMail($auth_args, $memberInfo);
|
||||
|
||||
$msg = sprintf(lang('msg_confirm_mail_sent'), $memberInfo->email_address);
|
||||
$this->setMessage($msg);
|
||||
|
||||
$returnUrl = getUrl('');
|
||||
$this->setRedirectUrl($returnUrl);
|
||||
}
|
||||
|
||||
function _sendAuthMail($auth_args, $member_info)
|
||||
{
|
||||
$oMemberModel = getModel('member');
|
||||
|
|
@ -2240,11 +2167,9 @@ class memberController extends member
|
|||
{
|
||||
$args->member_srl = $member_info->member_srl;
|
||||
$output = executeQuery('member.chkAuthMail', $args);
|
||||
if ($output->toBool() && $output->data->count != '0')
|
||||
if ($output->toBool() && $output->data->count)
|
||||
{
|
||||
$_SESSION['auth_member_srl'] = $member_info->member_srl;
|
||||
$redirectUrl = getUrl('', 'act', 'dispMemberResendAuthMail');
|
||||
return $this->setRedirectUrl($redirectUrl, new BaseObject(-1,'msg_user_not_confirmed'));
|
||||
return new BaseObject(-1, sprintf(lang('msg_user_not_confirmed'), $member_info->email_address));
|
||||
}
|
||||
|
||||
$refused_reason = $member_info->refused_reason ? ('<br>' . lang('refused_reason') . ': ' . $member_info->refused_reason) : '';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue