본문으로 건너뛰기

정기결제 개인정보 보안 강화

PHP 8 · GODO26
변경 파일 수: 3개
변경 파일 목록
총 3개
변경 파일 코드
추가삭제
Component/Member/HackOut/HackOutService.php+8
변경 전HackOutService.php
$memberList = $this->hackOutByMemberList($request->post()->get('chk'));
\DB::commit();
} catch (Exception $e) {
 
 
\DB::rollback();
 
 
 
 
 
 
throw $e;
}
 
 
변경 후HackOutService.php
$memberList = $this->hackOutByMemberList($request->post()->get('chk'));
\DB::commit();
} catch (Exception $e) {
// 회원 삭제 과정의 개인정보 파기는 Eloquent(PDO) 로 동작해 이 mysqli 트랜잭션에 참여하지 않는다.
// 롤백해도 이미 파기된 개인정보는 되돌아오지 않으므로, 회원은 남고 개인정보만 사라진 대상을 되짚을 수 있게 남긴다
\DB::rollback();
\Logger::channel('member')->error('관리자 회원 일괄 탈퇴 실패', [
'exception' => $e,
'errorMessage' => $e->getMessage(),
'memNos' => $request->post()->get('chk'),
]);
 
throw $e;
}
 
 
Component/Member/Member.php+1-1
변경 전Member.php
$memNo,
];
 
// 개인정보를 먼저 파기한 뒤 회원 본체를 삭제한다
\App::getInstance(MemberHackOutPrivacyDestroyService::class)->destroyByMemNo((int) $memNo);
 
$this->db->set_delete_db(DB_MEMBER, 'memNo = ?', $arrBind);
 
변경 후Member.php
$memNo,
];
 
// 개인정보를 먼저 파기한 뒤 회원 본체를 삭제한다. 순서가 반대면 memNo 로 잔존 개인정보를 되짚을 수 없다
\App::getInstance(MemberHackOutPrivacyDestroyService::class)->destroyByMemNo((int) $memNo);
 
$this->db->set_delete_db(DB_MEMBER, 'memNo = ?', $arrBind);
 
Component/Member/MemberSleep.php+7
변경 전MemberSleep.php
\DB::commit();
gd_set_policy('member.hackout', ['isMigrations' => 'y']);
} catch (Exception $e) {
 
 
\DB::rollback();
gd_set_policy('member.hackout', ['isMigrations' => 'n']);
 
 
 
 
 
}
}
}
 
변경 후MemberSleep.php
\DB::commit();
gd_set_policy('member.hackout', ['isMigrations' => 'y']);
} catch (Exception $e) {
// 회원 삭제 과정의 개인정보 파기는 Eloquent(PDO) 로 동작해 이 mysqli 트랜잭션에 참여하지 않는다.
// 롤백해도 이미 파기된 개인정보는 되돌아오지 않으므로, 실패를 삼키면 회원은 남고 개인정보만 사라진 상태를 아무도 모르게 된다
\DB::rollback();
gd_set_policy('member.hackout', ['isMigrations' => 'n']);
Logger::channel('memberSleep')->error('휴면회원 탈퇴내역 마이그레이션 실패', [
'exception' => $e,
'errorMessage' => $e->getMessage(),
'memNo' => $item['memNo'] ?? null,
]);
}
}
}