Merge pull request 'fix: 精简身份认证申请表单' (#340) from worktree-identity-form-simplify into main
Reviewed-on: CYL/wordpress-theme-aksrt#340
This commit is contained in:
commit
a1bb8ba9d2
4 files changed
+43
-22
No files matched your search
@@ -405,9 +405,13 @@
|
|||||||
.uc-auth-modal__body { padding: 22px; }
|
.uc-auth-modal__body { padding: 22px; }
|
||||||
|
|
||||||
.uc-auth-form { display: grid; gap: 17px; }
|
.uc-auth-form { display: grid; gap: 17px; }
|
||||||
.uc-auth-form > label { display: grid; gap: 7px; color: var(--color-ink-2); font-size: 13px; font-weight: 600; }
|
.uc-auth-field { display: grid; gap: 7px; color: var(--color-ink-2); font-size: 13px; font-weight: 600; }
|
||||||
|
.uc-auth-enterprise-fields { display: grid; gap: 17px; }
|
||||||
|
.uc-auth-enterprise-fields[hidden] { display: none; }
|
||||||
.uc-auth-form .form-control { width: 100%; min-height: 42px; padding: 9px 11px; border: 1px solid var(--color-line-soft, rgba(15, 23, 42, 0.1)); border-radius: 9px; background: var(--surface-1); color: var(--color-ink); font: inherit; font-weight: 400; box-sizing: border-box; }
|
.uc-auth-form .form-control { width: 100%; min-height: 42px; padding: 9px 11px; border: 1px solid var(--color-line-soft, rgba(15, 23, 42, 0.1)); border-radius: 9px; background: var(--surface-1); color: var(--color-ink); font: inherit; font-weight: 400; box-sizing: border-box; }
|
||||||
.uc-auth-form textarea.form-control { resize: vertical; }
|
.uc-auth-form textarea.form-control { resize: vertical; }
|
||||||
|
.uc-auth-consent { display: flex; align-items: flex-start; gap: 8px; color: var(--color-ink-3); font-size: 13px; font-weight: 400; line-height: 1.6; }
|
||||||
|
.uc-auth-consent input { flex: 0 0 auto; margin-top: 3px; }
|
||||||
.uc-auth-upload small { color: var(--color-ink-4); font-weight: 400; }
|
.uc-auth-upload small { color: var(--color-ink-4); font-weight: 400; }
|
||||||
.uc-auth-submit { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; }
|
.uc-auth-submit { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; }
|
||||||
.uc-auth-form__message { min-height: 18px; color: var(--color-error, #dc2626); font-size: 12px; text-align: center; }
|
.uc-auth-form__message { min-height: 18px; color: var(--color-error, #dc2626); font-size: 12px; text-align: center; }
|
||||||
|
|||||||
@@ -87,10 +87,14 @@
|
|||||||
if (createForm) {
|
if (createForm) {
|
||||||
var typeSelect = createForm.querySelector('[name="type"]');
|
var typeSelect = createForm.querySelector('[name="type"]');
|
||||||
var enterprise = createForm.querySelector('[data-enterprise-fields]');
|
var enterprise = createForm.querySelector('[data-enterprise-fields]');
|
||||||
|
var personLabel = createForm.querySelector('[data-auth-person-label]');
|
||||||
|
var idLabel = createForm.querySelector('[data-auth-id-label]');
|
||||||
function syncEnterprise() {
|
function syncEnterprise() {
|
||||||
var enabled = typeSelect && typeSelect.value === 'enterprise';
|
var enabled = typeSelect && typeSelect.value === 'enterprise';
|
||||||
if (enterprise) enterprise.hidden = !enabled;
|
if (enterprise) enterprise.hidden = !enabled;
|
||||||
if (enterprise) enterprise.querySelectorAll('input').forEach(function (input) { input.required = enabled; });
|
if (enterprise) enterprise.querySelectorAll('input').forEach(function (input) { input.required = enabled; });
|
||||||
|
if (personLabel) personLabel.textContent = enabled ? '法定代表人姓名' : '真实姓名';
|
||||||
|
if (idLabel) idLabel.textContent = enabled ? '法定代表人身份证号' : '身份证号码';
|
||||||
}
|
}
|
||||||
if (typeSelect) typeSelect.addEventListener('change', syncEnterprise);
|
if (typeSelect) typeSelect.addEventListener('change', syncEnterprise);
|
||||||
syncEnterprise();
|
syncEnterprise();
|
||||||
|
|||||||
@@ -76,19 +76,17 @@ $config = [
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form class="aksrt-user-auth-form uc-auth-form" data-auth-create <?php echo $record !== [] ? 'hidden' : ''; ?>>
|
<form class="aksrt-user-auth-form uc-auth-form" data-auth-create <?php echo $record !== [] ? 'hidden' : ''; ?>>
|
||||||
<label><span><?php esc_html_e('认证类型', 'aksrt'); ?></span><select class="form-control" name="type" required><option value="personal"><?php esc_html_e('个人认证', 'aksrt'); ?></option><option value="enterprise"><?php esc_html_e('企业认证', 'aksrt'); ?></option></select></label>
|
<label class="uc-auth-field"><span><?php esc_html_e('认证类型', 'aksrt'); ?></span><select class="form-control" name="type" required><option value="personal"><?php esc_html_e('个人认证', 'aksrt'); ?></option><option value="enterprise"><?php esc_html_e('企业认证', 'aksrt'); ?></option></select></label>
|
||||||
<label><span><?php esc_html_e('公开认证名称', 'aksrt'); ?></span><input class="form-control" name="public_name" minlength="2" maxlength="64" required></label>
|
<div class="uc-auth-enterprise-fields" data-enterprise-fields hidden>
|
||||||
<label><span><?php esc_html_e('公开身份简介', 'aksrt'); ?></span><textarea class="form-control" name="public_desc" maxlength="300"></textarea></label>
|
<label class="uc-auth-field"><span><?php esc_html_e('企业全称', 'aksrt'); ?></span><input class="form-control" name="company_name" maxlength="191"></label>
|
||||||
<label><span><?php esc_html_e('真实姓名/法定代表人姓名', 'aksrt'); ?></span><input class="form-control" name="person_name" maxlength="50" required autocomplete="name"></label>
|
<label class="uc-auth-field"><span><?php esc_html_e('统一社会信用代码', 'aksrt'); ?></span><input class="form-control" name="company_code" maxlength="32" autocomplete="off"></label>
|
||||||
<label><span><?php esc_html_e('身份证号码', 'aksrt'); ?></span><input class="form-control" name="id_number" maxlength="20" required autocomplete="off"></label>
|
|
||||||
<div data-enterprise-fields hidden>
|
|
||||||
<label><span><?php esc_html_e('企业名称', 'aksrt'); ?></span><input class="form-control" name="company_name" maxlength="191"></label>
|
|
||||||
<label><span><?php esc_html_e('统一社会信用代码', 'aksrt'); ?></span><input class="form-control" name="company_code" maxlength="32"></label>
|
|
||||||
</div>
|
</div>
|
||||||
<label><input type="checkbox" name="consent" value="1" required> <?php esc_html_e('我同意为身份认证目的将必要身份信息提交给站点当前配置的云服务商;站点不保存人脸素材,并仅保留脱敏结果。', 'aksrt'); ?></label>
|
<label class="uc-auth-field"><span data-auth-person-label><?php esc_html_e('真实姓名', 'aksrt'); ?></span><input class="form-control" name="person_name" maxlength="50" required autocomplete="name"></label>
|
||||||
|
<label class="uc-auth-field"><span data-auth-id-label><?php esc_html_e('身份证号码', 'aksrt'); ?></span><input class="form-control" name="id_number" maxlength="20" required autocomplete="off"></label>
|
||||||
|
<label class="uc-auth-consent"><input type="checkbox" name="consent" value="1" required><span><?php esc_html_e('我同意为身份认证目的将必要身份信息提交给站点当前配置的云服务商;站点不保存人脸素材,并仅保留脱敏结果。', 'aksrt'); ?></span></label>
|
||||||
<input type="hidden" name="return_url" value="<?php echo esc_url(aksrt_get_user_center_tab_url('auth')); ?>">
|
<input type="hidden" name="return_url" value="<?php echo esc_url(aksrt_get_user_center_tab_url('auth')); ?>">
|
||||||
<button type="submit" class="btn-primary"><?php esc_html_e('创建认证会话', 'aksrt'); ?></button>
|
<button type="submit" class="btn-primary uc-auth-submit"><?php esc_html_e('创建认证会话', 'aksrt'); ?></button>
|
||||||
<div data-auth-message role="status"></div>
|
<div class="uc-auth-form__message" data-auth-message role="status"></div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form data-auth-manual hidden enctype="multipart/form-data">
|
<form data-auth-manual hidden enctype="multipart/form-data">
|
||||||
|
|||||||
@@ -53,14 +53,21 @@ final class ApplicationService {
|
|||||||
return $this->view($existing);
|
return $this->view($existing);
|
||||||
}
|
}
|
||||||
|
|
||||||
$public_name = sanitize_text_field((string) ($input['public_name'] ?? ''));
|
$person_name = sanitize_text_field((string) ($input['person_name'] ?? ''));
|
||||||
$public_desc = sanitize_textarea_field((string) ($input['public_desc'] ?? ''));
|
$id_number = preg_replace('/\s+/', '', sanitize_text_field((string) ($input['id_number'] ?? ''))) ?: '';
|
||||||
if ($this->length($public_name) < 2 || $this->length($public_name) > 64 || $this->length($public_desc) > 300) {
|
$company_name = $type === 'enterprise' ? sanitize_text_field((string) ($input['company_name'] ?? '')) : '';
|
||||||
return new \WP_Error('aksrt_identity_public_info', __('认证展示信息长度无效', 'aksrt'));
|
$company_code = $type === 'enterprise' ? (preg_replace('/\s+/', '', sanitize_text_field((string) ($input['company_code'] ?? ''))) ?: '') : '';
|
||||||
|
if ($person_name === '' || $this->length($person_name) > 50 || $id_number === '' || $this->length($id_number) > 20) {
|
||||||
|
return new \WP_Error('aksrt_identity_person_fields', __('请填写有效的姓名和身份证号码', 'aksrt'));
|
||||||
|
}
|
||||||
|
if ($type === 'enterprise' && ($company_name === '' || $this->length($company_name) > 191 || $company_code === '' || $this->length($company_code) > 32)) {
|
||||||
|
return new \WP_Error('aksrt_identity_enterprise_fields', __('请填写有效的企业全称和统一社会信用代码', 'aksrt'));
|
||||||
}
|
}
|
||||||
if (empty($input['consent'])) {
|
if (empty($input['consent'])) {
|
||||||
return new \WP_Error('aksrt_identity_consent', __('请先同意身份信息处理说明', 'aksrt'));
|
return new \WP_Error('aksrt_identity_consent', __('请先同意身份信息处理说明', 'aksrt'));
|
||||||
}
|
}
|
||||||
|
$public_name = $type === 'enterprise' ? $this->truncate($company_name, 64) : __('个人认证', 'aksrt');
|
||||||
|
$public_desc = '';
|
||||||
|
|
||||||
$type_settings = \AKSRT\User\AuthApply::type_settings($type);
|
$type_settings = \AKSRT\User\AuthApply::type_settings($type);
|
||||||
$attempt = $this->applications->count_user_type($user_id, $type);
|
$attempt = $this->applications->count_user_type($user_id, $type);
|
||||||
@@ -75,12 +82,12 @@ final class ApplicationService {
|
|||||||
'provider_flow' => (string) $settings['personal_flow'],
|
'provider_flow' => (string) $settings['personal_flow'],
|
||||||
'public_name' => $public_name,
|
'public_name' => $public_name,
|
||||||
'public_desc' => $public_desc,
|
'public_desc' => $public_desc,
|
||||||
'person_name_masked' => SettingsRuntime::mask_name((string) ($input['person_name'] ?? '')),
|
'person_name_masked' => SettingsRuntime::mask_name($person_name),
|
||||||
'id_number_masked' => SettingsRuntime::mask_id_number((string) ($input['id_number'] ?? '')),
|
'id_number_masked' => SettingsRuntime::mask_id_number($id_number),
|
||||||
'id_number_hash' => !empty($input['id_number']) ? SettingsRuntime::hmac((string) $input['id_number']) : '',
|
'id_number_hash' => SettingsRuntime::hmac($id_number),
|
||||||
'company_name' => $type === 'enterprise' ? sanitize_text_field((string) ($input['company_name'] ?? '')) : '',
|
'company_name' => $company_name,
|
||||||
'company_code_masked' => $type === 'enterprise' ? SettingsRuntime::mask_id_number((string) ($input['company_code'] ?? '')) : '',
|
'company_code_masked' => $type === 'enterprise' ? SettingsRuntime::mask_id_number($company_code) : '',
|
||||||
'company_code_hash' => $type === 'enterprise' && !empty($input['company_code']) ? SettingsRuntime::hmac((string) $input['company_code']) : '',
|
'company_code_hash' => $type === 'enterprise' ? SettingsRuntime::hmac($company_code) : '',
|
||||||
'fee_amount' => $fee,
|
'fee_amount' => $fee,
|
||||||
'fee_status' => $fee > 0 ? 'pending' : 'not_required',
|
'fee_status' => $fee > 0 ? 'pending' : 'not_required',
|
||||||
'attempt_ordinal' => $attempt + 1,
|
'attempt_ordinal' => $attempt + 1,
|
||||||
@@ -101,6 +108,10 @@ final class ApplicationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$provider_request = $input;
|
$provider_request = $input;
|
||||||
|
$provider_request['person_name'] = $person_name;
|
||||||
|
$provider_request['id_number'] = $id_number;
|
||||||
|
$provider_request['company_name'] = $company_name;
|
||||||
|
$provider_request['company_code'] = $company_code;
|
||||||
$provider_request['application_uuid'] = $application['application_uuid'];
|
$provider_request['application_uuid'] = $application['application_uuid'];
|
||||||
$provider_request['user_id'] = $user_id;
|
$provider_request['user_id'] = $user_id;
|
||||||
$result = $type === 'personal'
|
$result = $type === 'personal'
|
||||||
@@ -283,4 +294,8 @@ final class ApplicationService {
|
|||||||
private function length(string $value): int {
|
private function length(string $value): int {
|
||||||
return function_exists('mb_strlen') ? mb_strlen($value) : strlen($value);
|
return function_exists('mb_strlen') ? mb_strlen($value) : strlen($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function truncate(string $value, int $length): string {
|
||||||
|
return function_exists('mb_substr') ? mb_substr($value, 0, $length) : substr($value, 0, $length);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user