Add checks for invalid and duplicate phone numbers

This commit is contained in:
Kijin Sung 2019-08-03 20:53:34 +09:00
parent 1ee59e4196
commit 8cf0903065
7 changed files with 71 additions and 9 deletions

View file

@ -33,6 +33,7 @@ $lang->group_order = 'Gropu Priority';
$lang->group_order_change = 'Change Group Priority';
$lang->phone_number_default_country = 'Default Country Code';
$lang->phone_number_hide_country = 'Hide Country Code Selection';
$lang->phone_number_allow_duplicate = 'Allow Multiple Members';
$lang->signature = 'Signature';
$lang->profile_image = 'Profile Image';
$lang->profile_image_max_width = 'Max Width';
@ -155,6 +156,8 @@ $lang->msg_cannot_delete_admin = 'Admin ID cannot be deleted. Please remove the
$lang->msg_column_id_not_available = 'The ID already exists or is not usable.';
$lang->msg_exists_user_id = 'This ID already exists. Please try another one.';
$lang->msg_exists_email_address = 'This email address already exists. Please try another one.';
$lang->msg_exists_phone_number = 'This phone number already exists. Please try another one.';
$lang->msg_invalid_phone_number = 'The phone number you have entered is invalid.';
$lang->msg_exists_nick_name = 'This nickname already exists. Please try another one.';
$lang->msg_signup_disabled = 'You are not able to sign up';
$lang->msg_already_logged = 'You have already signed up.';

View file

@ -33,6 +33,7 @@ $lang->group_order = '그룹 우선순위';
$lang->group_order_change = '그룹 우선순위 변경';
$lang->phone_number_default_country = '기본 선택 국가';
$lang->phone_number_hide_country = '국가 목록 숨김';
$lang->phone_number_allow_duplicate = '중복 가입 허용';
$lang->signature = '서명';
$lang->profile_image = '프로필 사진';
$lang->profile_image_max_width = '가로 제한 길이';
@ -163,6 +164,8 @@ $lang->msg_cannot_delete_admin = '관리자 아이디는 삭제할 수 없습니
$lang->msg_column_id_not_available = '이미 존재하거나 사용할 수 없는 ID입니다.';
$lang->msg_exists_user_id = '이미 존재하는 아이디입니다. 다른 아이디를 입력해주세요.';
$lang->msg_exists_email_address = '이미 존재하는 메일 주소입니다. 다른 메일 주소를 입력해주세요.';
$lang->msg_exists_phone_number = '이미 존재하는 전화번호입니다. 다른 전화번호를 입력해주세요.';
$lang->msg_invalid_phone_number = '전화번호가 형식에 맞지 않습니다.';
$lang->msg_exists_nick_name = '이미 존재하는 닉네임입니다. 다른 닉네임을 입력해주세요.';
$lang->msg_signup_disabled = '회원 가입할 수 없습니다.';
$lang->msg_already_logged = '이미 회원 가입을 한 상태입니다.';

View file

@ -300,7 +300,7 @@ class memberAdminController extends member
'limit_day_description',
'emailhost_check',
'redirect_url',
'phone_number_default_country', 'phone_number_hide_country',
'phone_number_default_country', 'phone_number_hide_country', 'phone_number_allow_duplicate',
'profile_image', 'profile_image_max_width', 'profile_image_max_height', 'profile_image_max_filesize',
'image_name', 'image_name_max_width', 'image_name_max_height', 'image_name_max_filesize',
'image_mark', 'image_mark_max_width', 'image_mark_max_height', 'image_mark_max_filesize',
@ -330,6 +330,7 @@ class memberAdminController extends member
$args->phone_number_default_country = preg_replace('/[^0-9-]/', '', $args->phone_number_default_country);
$args->phone_number_hide_country = $args->phone_number_hide_country == 'Y' ? 'Y' : 'N';
$args->phone_number_allow_duplicate = $args->phone_number_allow_duplicate == 'Y' ? 'Y' : 'N';
$args->profile_image = $args->profile_image ? 'Y' : 'N';
$args->image_name = $args->image_name ? 'Y' : 'N';
$args->image_mark = $args->image_mark ? 'Y' : 'N';

View file

@ -2538,13 +2538,20 @@ class memberController extends member
$args->phone_country = trim(preg_replace('/[^0-9-]/', '', $args->phone_country), '-');
$args->phone_number = preg_replace('/[^0-9]/', '', $args->phone_number);
$args->phone_type = '';
if(!$args->phone_country && $config->phone_number_default_country)
if ($config->phone_number_hide_country || (!$args->phone_country && $config->phone_number_default_country))
{
$args->phone_country = $config->phone_number_default_country;
}
if ($args->phone_country == '82')
{
$args->phone_number = Rhymix\Framework\Korea::formatPhoneNumber($args->phone_number);
if (Rhymix\Framework\Korea::isValidPhoneNumber($args->phone_number))
{
$args->phone_number = Rhymix\Framework\Korea::formatPhoneNumber($args->phone_number);
}
else
{
return new BaseObject(-1, 'msg_invalid_phone_number');
}
}
}
else
@ -2561,6 +2568,16 @@ class memberController extends member
return new BaseObject(-1, 'msg_exists_email_address');
}
// Check if phone number is duplicate
if ($config->phone_number_allow_duplicate !== 'Y' && $args->phone_number)
{
$member_srl = $oMemberModel->getMemberSrlByPhoneNumber($args->phone_number, $args->phone_country);
if($member_srl)
{
return new BaseObject(-1, 'msg_exists_phone_number');
}
}
// Insert data into the DB
$args->list_order = -1 * $args->member_srl;
@ -2750,13 +2767,20 @@ class memberController extends member
$args->phone_country = trim(preg_replace('/[^0-9-]/', '', $args->phone_country), '-');
$args->phone_number = preg_replace('/[^0-9]/', '', $args->phone_number);
$args->phone_type = '';
if(!$args->phone_country && $config->phone_number_default_country)
if ($config->phone_number_hide_country || (!$args->phone_country && $config->phone_number_default_country))
{
$args->phone_country = $config->phone_number_default_country;
}
if ($args->phone_country == '82')
{
$args->phone_number = Rhymix\Framework\Korea::formatPhoneNumber($args->phone_number);
if (Rhymix\Framework\Korea::isValidPhoneNumber($args->phone_number))
{
$args->phone_number = Rhymix\Framework\Korea::formatPhoneNumber($args->phone_number);
}
else
{
return new BaseObject(-1, 'msg_invalid_phone_number');
}
}
}
else
@ -2802,6 +2826,16 @@ class memberController extends member
$args->user_id = $orgMemberInfo->user_id;
}
// Check if phone number is duplicate
if ($config->phone_number_allow_duplicate !== 'Y' && $args->phone_number)
{
$member_srl = $oMemberModel->getMemberSrlByPhoneNumber($args->phone_number, $args->phone_country);
if ($member_srl && $args->member_srl != $member_srl)
{
return new BaseObject(-1, 'msg_exists_phone_number');
}
}
// Check if ID is prohibited
if($logged_info->is_admin !== 'Y' && $args->user_id && $oMemberModel->isDeniedID($args->user_id))
{

View file

@ -453,6 +453,18 @@ class memberModel extends member
return $output->data->member_srl;
}
/**
* @brief Get member_srl corresponding to phone number
*/
function getMemberSrlByPhoneNumber($phone_number, $phone_country = null)
{
$args = new stdClass();
$args->phone_number = $phone_number;
$args->phone_country = $phone_country;
$output = executeQueryArray('member.getMemberSrl', $args);
return count($output->data) ? array_first($output->data)->member_srl : null;
}
/**
* @brief Get member_srl corresponding to nickname
*/

View file

@ -8,6 +8,8 @@
<conditions>
<condition operation="equal" column="user_id" var="user_id" pipe="and" />
<condition operation="equal" column="email_address" var="email_address" pipe="and" />
<condition operation="equal" column="phone_number" var="phone_number" pipe="and" />
<condition operation="equal" column="phone_country" var="phone_country" pipe="and" />
<condition operation="equal" column="nick_name" var="nick_name" pipe="and" />
</conditions>
</query>

View file

@ -157,10 +157,17 @@
</option>
<!--@endif-->
<!--@endforeach-->
</select><br />
<label class="x_inline">{$lang->phone_number_hide_country}</label>
<label class="x_inline"><input type="radio" name="phone_number_hide_country" value="Y" checked="checked"|cond="$config->phone_number_hide_country === 'Y'" /> {$lang->cmd_yes}</label>
<label class="x_inline"><input type="radio" name="phone_number_hide_country" value="N" checked="checked"|cond="$config->phone_number_hide_country !== 'Y'" /> {$lang->cmd_no}</label>
</select>
<p class="x_help-block">
<label class="x_inline">{$lang->phone_number_hide_country}</label>
<label class="x_inline"><input type="radio" name="phone_number_hide_country" value="Y" checked="checked"|cond="$config->phone_number_hide_country === 'Y'" /> {$lang->cmd_yes}</label>
<label class="x_inline"><input type="radio" name="phone_number_hide_country" value="N" checked="checked"|cond="$config->phone_number_hide_country !== 'Y'" /> {$lang->cmd_no}</label>
</p>
<p class="x_help-block">
<label class="x_inline">{$lang->phone_number_allow_duplicate}</label>
<label class="x_inline"><input type="radio" name="phone_number_allow_duplicate" value="Y" checked="checked"|cond="$config->phone_number_allow_duplicate === 'Y'" /> {$lang->cmd_yes}</label>
<label class="x_inline"><input type="radio" name="phone_number_allow_duplicate" value="N" checked="checked"|cond="$config->phone_number_allow_duplicate !== 'Y'" /> {$lang->cmd_no}</label>
</p>
</div>
<div cond="$item->name == 'signature'" class="_subItem" style="display:none;padding-top:5px"|cond="!$item->isUse">