diff --git a/adm/admin.lib.php b/adm/admin.lib.php index 1d2d70a97..6ebc6181a 100644 --- a/adm/admin.lib.php +++ b/adm/admin.lib.php @@ -478,6 +478,30 @@ function check_log_folder($log_path, $is_delete = true) } } +// 회원 본인확인 식별값과 인증 이력만 정리한다. 호출부에서 관리자 권한을 검증한다. +function admin_clear_member_certification($mb_id) +{ + global $g5; + + $esc_mb_id = sql_real_escape_string($mb_id); + $history_table = isset($g5['member_cert_history_table']) ? $g5['member_cert_history_table'] : G5_TABLE_PREFIX.'member_cert_history'; + + // 일반 회원정보(이름·연락처)와 이메일 인증 상태는 유지한다. + if (!sql_query(" update {$g5['member_table']} + set mb_certify = '', mb_adult = 0, mb_dupinfo = '', mb_birth = '', mb_sex = '' + where mb_id = '{$esc_mb_id}' ", false)) { + return false; + } + if (!sql_query(" delete from {$history_table} where mb_id = '{$esc_mb_id}' ", false)) { + return false; + } + if (!sql_query(" delete from {$g5['cert_history_table']} where mb_id = '{$esc_mb_id}' ", false)) { + return false; + } + + return true; +} + // POST로 넘어온 토큰과 세션에 저장된 토큰 비교 function check_admin_token() { diff --git a/adm/member_cert_cleanup.php b/adm/member_cert_cleanup.php new file mode 100644 index 000000000..fce93fb42 --- /dev/null +++ b/adm/member_cert_cleanup.php @@ -0,0 +1,30 @@ += $member['mb_level'] || is_admin($mb['mb_id']) === 'super')) { + alert('자신보다 권한이 높거나 같은 회원의 본인확인 정보는 삭제할 수 없습니다.'); +} + +if (!admin_clear_member_certification($mb['mb_id'])) { + alert('본인확인 정보를 모두 삭제하지 못했습니다. DB 상태를 확인한 뒤 다시 시도해 주십시오.'); +} + +alert('본인확인 정보와 인증 내역을 삭제했습니다.', './member_form.php?w=u&mb_id='.urlencode($mb['mb_id'])); diff --git a/adm/member_form.php b/adm/member_form.php index 9a47fd310..77e6a302b 100644 --- a/adm/member_form.php +++ b/adm/member_form.php @@ -438,6 +438,20 @@ add_javascript(G5_POSTCODE_JS, 0); //다음 주소 js 본인인증 내역이 없습니다. + 0 || !empty($mb['mb_dupinfo']) || !empty($mb['mb_certify']) + || !empty($mb['mb_adult']) || !empty($mb['mb_birth']) || !empty($mb['mb_sex']); + if ($w === 'u' && !$has_certification_data) { + $cert_request = sql_fetch("select count(*) as cnt from {$g5['cert_history_table']} where mb_id = '".sql_real_escape_string($mb['mb_id'])."'"); + $has_certification_data = !empty($cert_request['cnt']); + } + $can_cleanup_certification = $w === 'u' && $has_certification_data + && ($is_admin === 'super' || (isset($auth[$sub_menu]) && strpos($auth[$sub_menu], 'd') !== false)); + ?> + +

본인확인 ‘아니오’는 인증 상태만 변경합니다. 정보 삭제는 CI/DI 관련 식별값, 본인확인·성인인증 상태, 생년월일·성별 및 본인인증 내역을 삭제합니다. 회원 이름과 연락처는 유지합니다.

+ + @@ -598,6 +612,13 @@ add_javascript(G5_POSTCODE_JS, 0); //다음 주소 js + +
+ + +
+ +