Fix #2044 set identifier to 'user_id' unless email is the only option

이메일 이외의 로그인 방법이 하나라도 선택되어 있다면
identifier 설정은 user_id로 고정
This commit is contained in:
Kijin Sung 2023-02-26 21:45:51 +09:00
parent cc40b156da
commit 512ca07680
3 changed files with 6 additions and 5 deletions

View file

@ -564,7 +564,7 @@ class MemberAdminController extends Member
return new BaseObject(-1, 'msg_need_enabled_identifier');
}
$args->signupForm = $config->signupForm;
$args->identifier = array_first($args->identifiers);
$args->identifier = (count($args->identifiers) == 1 && $args->identifiers[0] == 'email_address') ? 'email_address' : 'user_id';
if(!$args->change_password_date)
{

View file

@ -105,8 +105,8 @@ class MemberModel extends Member
}
// Set login config
$config->identifier = $config->identifier ?? 'user_id';
$config->identifiers = $config->identifiers ?? array('user_id', 'email_address');
$config->identifier = (count($config->identifiers) == 1 && $config->identifiers[0] == 'email_address') ? 'email_address' : 'user_id';
$config->change_password_date = $config->change_password_date ?? 0;
$config->enable_login_fail_report = $config->enable_login_fail_report ?? 'Y';
$config->max_error_count = $config->max_error_count ?? 10;

View file

@ -1,3 +1,4 @@
{@ var_dump($config->identifier, $config->identifiers)}
<include target="header.html" />
<form action="./" class="x_form-horizontal" ruleset="insertLoginConfig" method="post">
<input type="hidden" name="module" value="member" />
@ -8,15 +9,15 @@
<p class="x_control-label">{$lang->identifier}</p>
<div class="x_controls">
<label class="x_inline" for="identifiers_user_id">
<input type="checkbox" name="identifiers[]" id="identifiers_user_id" value="user_id" checked="checked"|cond="$config->identifier === 'user_id' || (is_array($config->identifiers) && in_array('user_id', $config->identifiers))" />
<input type="checkbox" name="identifiers[]" id="identifiers_user_id" value="user_id" checked="checked"|cond="!is_array($config->identifiers) || in_array('user_id', $config->identifiers)" />
{$lang->user_id}
</label>
<label class="x_inline" for="identifiers_email_address">
<input type="checkbox" name="identifiers[]" id="identifiers_email_address" value="email_address" checked="checked"|cond="$config->identifier === 'email_address' || (is_array($config->identifiers) && in_array('email_address', $config->identifiers))" />
<input type="checkbox" name="identifiers[]" id="identifiers_email_address" value="email_address" checked="checked"|cond="!is_array($config->identifiers) || in_array('email_address', $config->identifiers)" />
{$lang->email_address}
</label>
<label class="x_inline" for="identifiers_phone_number">
<input type="checkbox" name="identifiers[]" id="identifiers_phone_number" value="phone_number" checked="checked"|cond="$config->identifier === 'phone_number' || (is_array($config->identifiers) && in_array('phone_number', $config->identifiers))" />
<input type="checkbox" name="identifiers[]" id="identifiers_phone_number" value="phone_number" checked="checked"|cond="is_array($config->identifiers) && in_array('phone_number', $config->identifiers)" />
{$lang->phone_number}
</label>
<p class="x_help-block">{$lang->about_identifier}</p>