1. 정확한 제품 또는 플러그인 이름
코스모스팜 회원관리 3.4
2. 상세 내용
회원정보를 수정할때 비밀번호 입력과 같은 추가 인증 절차가 없습니다.
보안측면에서 이런 기능이 있으면 좋을것 같은데,
혹시 도움을 받을 수 있을까요?
3. 확인 가능한 상세 페이지 주소
4. 수정한 코드 내역 (있다면)
안녕하세요~^^
저희 쪽에서 한번 확인해 보고
빠른 시일 내에 업데이트할 수 있도록 하겠습니다
급하게 필요하시다면
프로젝트 의뢰에 상세 내용을 올려보시겠어요?
https://www.cosmosfarm.com/project
고맙습니다.
답변 감사합니다!
<?php
// function_exists('ray') && ray('', );
function get_redirect_url_of_profile_edit_page() {
$account_page_id = get_option('cosmosfarm_members_account_page_id', '');
$account_page_url = get_option('cosmosfarm_members_account_page_url', '');
$redirect_url = home_url();
if (intval($account_page_id) > 0) {
$redirect_url = get_permalink( $account_page_id );
} else if ($account_page_url) {
$redirect_url = $account_page_url;
}
return $redirect_url . '&a=edit';
}
add_filter('wpmem_register_fields_arr', function($fields, $tag) {
global $wpmem;
if ($tag !== 'edit') {
return $fields;
}
$original_fields = $wpmem->fields;
if (!isset($original_fields['password'])) {
$wpmem->forms->load_fields('edit');
$original_fields = $wpmem->fields;
}
$fields['password'] = $original_fields['password'];
$wpmem->fields = $original_fields; // 다시 되돌리기
return $fields;
}, 2, 10000);
add_action( 'wpmem_pre_update_data', function($fields) {
if (!isset($fields['password'])) {
return;
}
$user_id = get_current_user_id();
$current_password = get_the_author_meta( 'user_pass', $user_id );
if ( !wp_check_password( $fields['password'], $current_password, $user_id ) ) {
$redirect_url = get_redirect_url_of_profile_edit_page();
$redirect_url = add_query_arg( 'profile_update_error_message', '비밀번호를 다시 확인해주세요', $redirect_url );
wp_safe_redirect( $redirect_url );
exit;
}
} );
add_action('wp_footer', function() {
if (!isset($_REQUEST['profile_update_error_message'])) {
return;
}
$error_message = $_REQUEST['profile_update_error_message']; ?>
<script>
(() => {
const message = "<?php echo $error_message; ?>";
alert(message);
})();
</script> <?php
});
코드 공유합니다!!