본문으로 건너뛰기

SMS 발송담당자 지정 인원 제한 해제

PHP 8 · GODO26
변경 파일 수: 5개
변경 파일 목록
총 5개
변경 파일 코드
추가삭제
Admin/policy/_manage_permission_menu_list.php+1-1
변경 전_manage_permission_menu_list.php
?>
</table>
</div>
<input type="hidden" id="messageSenderMeta" data-editor-approver="<?= !empty($isEditorMessageApprover) ? 'y' : 'n'; ?>" data-editor-representative="<?= !empty($isEditorMessageRepresentative) ? 'y' : 'n'; ?>" data-caller-blocked="<?= !empty($isCallerBlocked) ? 'y' : 'n'; ?>" data-caller-uncertified-delegate="<?= !empty($isCallerUncertifiedDelegate) ? 'y' : 'n'; ?>" data-sender-count="<?= (int)(gd_isset($messageSenderCount, 0)); ?>" data-sender-limit="<?= (int)(gd_isset($messageSenderLimit, 0)); ?>"/>
<div class="access-control-reason <?=(!empty($sno) || $changeType == 'init') ? '' : 'display-none'?>" style="clear: both;">
<div class="table-action-dropdown">
<div class="table-action mgt0 mgb15">
 
변경 후_manage_permission_menu_list.php
?>
</table>
</div>
<input type="hidden" id="messageSenderMeta" data-editor-approver="<?= !empty($isEditorMessageApprover) ? 'y' : 'n'; ?>" data-editor-representative="<?= !empty($isEditorMessageRepresentative) ? 'y' : 'n'; ?>" data-caller-blocked="<?= !empty($isCallerBlocked) ? 'y' : 'n'; ?>" data-caller-uncertified-delegate="<?= !empty($isCallerUncertifiedDelegate) ? 'y' : 'n'; ?>"/>
<div class="access-control-reason <?=(!empty($sno) || $changeType == 'init') ? '' : 'display-none'?>" style="clear: both;">
<div class="table-action-dropdown">
<div class="table-action mgt0 mgb15">
 
Admin/policy/manage_permission.php+1-12
변경 전manage_permission.php
var $smsSetBox = $('#menuList input:checkbox[data-value="messageSendSms"]:not(:disabled)');
if ($smsSetBox.length > 0) {
var smsSetGranted = $smsSetBox.is(':checked');
var smsChanged = false, smsNewSenderCount = 0;
$smsCheckedRows.each(function () {
var smsRole = $(this).data('smsRole');
// 잠금 판정은 서버가 행마다 내려준다 — 미등록 최고운영자는 smsRole 이 비어 있어 역할값만으로는 걸러지지 않는다
if (nowSender !== smsSetGranted) {
smsChanged = true;
}
if (smsSetGranted && !nowSender) {
smsNewSenderCount++;
}
});
if (smsChanged) {
var $smsMeta = $('#messageSenderMeta');
dialog_alert('SMS 발송 메뉴 접근이 제한되었습니다.<br>스팸 또는 부정 사용으로 차단되어 접근할 수 없습니다.<br>자세한 사항은 1:1문의로 문의하시기 바랍니다.', '경고');
return false;
}
if (smsSetGranted) {
var smsSenderCount = parseInt($smsMeta.data('senderCount'), 10) || 0;
var smsSenderLimit = parseInt($smsMeta.data('senderLimit'), 10) || 0;
if (smsSenderCount + smsNewSenderCount > smsSenderLimit) {
dialog_alert('발송담당자는 최대 ' + smsSenderLimit + '명까지 지정 가능합니다.', '경고');
return false;
}
}
if ($.trim($('#accessControlReason').val()) === '') {
dialog_alert('발송담당자 권한 변경 사유를 작성해주세요.', '경고');
return false;
 
변경 후manage_permission.php
var $smsSetBox = $('#menuList input:checkbox[data-value="messageSendSms"]:not(:disabled)');
if ($smsSetBox.length > 0) {
var smsSetGranted = $smsSetBox.is(':checked');
var smsChanged = false;
$smsCheckedRows.each(function () {
var smsRole = $(this).data('smsRole');
// 잠금 판정은 서버가 행마다 내려준다 — 미등록 최고운영자는 smsRole 이 비어 있어 역할값만으로는 걸러지지 않는다
if (nowSender !== smsSetGranted) {
smsChanged = true;
}
 
 
 
});
if (smsChanged) {
var $smsMeta = $('#messageSenderMeta');
dialog_alert('SMS 발송 메뉴 접근이 제한되었습니다.<br>스팸 또는 부정 사용으로 차단되어 접근할 수 없습니다.<br>자세한 사항은 1:1문의로 문의하시기 바랍니다.', '경고');
return false;
}
 
 
 
 
 
 
 
 
if ($.trim($('#accessControlReason').val()) === '') {
dialog_alert('발송담당자 권한 변경 사유를 작성해주세요.', '경고');
return false;
 
Component/Member/Manager.php-7
변경 전Manager.php
$smsRoleGuard = \App::getInstance(MessageOperatorRoleGuard::class);
$smsGranted = is_array($arrData['functionAuth']) && (($arrData['functionAuth'][MessageOperatorRoleService::SEND_SMS_FUNCTION_AUTH] ?? '') === 'y');
$smsChanged = false;
$smsNewSenderCount = 0;
foreach ($managersData as $smsTarget) {
// 최고운영자(sno=1)/위임자는 messageSendSms 강제(잠금)라 변경 대상 아님
if ($smsRoleService->isSenderPermissionLocked((int)$smsTarget['sno'])) {
if ($smsNowGranted !== $smsGranted) {
$smsChanged = true;
}
if ($smsGranted && $smsNowGranted === false) {
$smsNewSenderCount++; // 신규로 발송담당자가 되는 대상
}
}
if ($smsChanged) {
if ($smsRoleGuard->isDelegateOrHigher() === false) {
if ($smsRoleGuard->isRepresentative() && $smsRoleService->isBlockedRepresentative()) {
throw new Exception(__('SMS 발송 메뉴 접근이 제한되었습니다.<br>스팸 또는 부정 사용으로 차단되어 접근할 수 없습니다.<br>자세한 사항은 1:1문의로 문의하시기 바랍니다.'));
}
if ($smsGranted && ($smsRoleService->countSenders() + $smsNewSenderCount) > MessageOperatorRoleService::MAX_SENDER_COUNT) {
throw new Exception(__('발송담당자는 최대 %d명까지 지정 가능합니다.', MessageOperatorRoleService::MAX_SENDER_COUNT));
}
if (trim((string)($arrData['accessControlReason'] ?? '')) === '') {
throw new Exception(__('발송담당자 권한 변경 사유를 작성해주세요.'));
}
 
변경 후Manager.php
$smsRoleGuard = \App::getInstance(MessageOperatorRoleGuard::class);
$smsGranted = is_array($arrData['functionAuth']) && (($arrData['functionAuth'][MessageOperatorRoleService::SEND_SMS_FUNCTION_AUTH] ?? '') === 'y');
$smsChanged = false;
 
foreach ($managersData as $smsTarget) {
// 최고운영자(sno=1)/위임자는 messageSendSms 강제(잠금)라 변경 대상 아님
if ($smsRoleService->isSenderPermissionLocked((int)$smsTarget['sno'])) {
if ($smsNowGranted !== $smsGranted) {
$smsChanged = true;
}
 
 
 
}
if ($smsChanged) {
if ($smsRoleGuard->isDelegateOrHigher() === false) {
if ($smsRoleGuard->isRepresentative() && $smsRoleService->isBlockedRepresentative()) {
throw new Exception(__('SMS 발송 메뉴 접근이 제한되었습니다.<br>스팸 또는 부정 사용으로 차단되어 접근할 수 없습니다.<br>자세한 사항은 1:1문의로 문의하시기 바랍니다.'));
}
 
 
 
if (trim((string)($arrData['accessControlReason'] ?? '')) === '') {
throw new Exception(__('발송담당자 권한 변경 사유를 작성해주세요.'));
}
 
Controller/Admin/Policy/ManagePsController.php-2
변경 전ManagePsController.php
$this->setData('isCallerBlocked', $isEditorMessageRepresentative && $messageOperatorRoleService->isBlockedRepresentative());
// 위임자 아님 안내가 우선이라 위임자 이상일 때만 판정한다 — isUncertifiedDelegateActor 는 위임자가 아닌 운영자도 DI 가 없으면 true 다
$this->setData('isCallerUncertifiedDelegate', $messageOperatorRoleGuard->isDelegateOrHigher() && $messageOperatorRoleService->isUncertifiedDelegateActor());
$this->setData('messageSenderCount', $messageOperatorRoleService->countSenders());
$this->setData('messageSenderLimit', MessageOperatorRoleService::MAX_SENDER_COUNT);
break;
 
// --- 운영자 권한 설정> 운영자 검색
 
변경 후ManagePsController.php
$this->setData('isCallerBlocked', $isEditorMessageRepresentative && $messageOperatorRoleService->isBlockedRepresentative());
// 위임자 아님 안내가 우선이라 위임자 이상일 때만 판정한다 — isUncertifiedDelegateActor 는 위임자가 아닌 운영자도 DI 가 없으면 true 다
$this->setData('isCallerUncertifiedDelegate', $messageOperatorRoleGuard->isDelegateOrHigher() && $messageOperatorRoleService->isUncertifiedDelegateActor());
 
 
break;
 
// --- 운영자 권한 설정> 운영자 검색
 
Controller/Admin/Share/LayerManagePermissionController.php-2
변경 전LayerManagePermissionController.php
$this->setData('isCallerBlocked', $isEditorMessageRepresentative && $messageOperatorRoleService->isBlockedRepresentative());
// 위임자 아님 안내가 우선이라 위임자 이상일 때만 판정한다 — isUncertifiedDelegateActor 는 위임자가 아닌 운영자도 DI 가 없으면 true 다
$this->setData('isCallerUncertifiedDelegate', $messageOperatorRoleGuard->isDelegateOrHigher() && $messageOperatorRoleService->isUncertifiedDelegateActor());
$this->setData('messageSenderCount', $messageOperatorRoleService->countSenders());
$this->setData('messageSenderLimit', MessageOperatorRoleService::MAX_SENDER_COUNT);
$this->setData('scmFl', $scmFl);
$this->setData('scmNo', $scmNo);
$this->setData('viewMemuDepth', $viewMemuDepth);
 
변경 후LayerManagePermissionController.php
$this->setData('isCallerBlocked', $isEditorMessageRepresentative && $messageOperatorRoleService->isBlockedRepresentative());
// 위임자 아님 안내가 우선이라 위임자 이상일 때만 판정한다 — isUncertifiedDelegateActor 는 위임자가 아닌 운영자도 DI 가 없으면 true 다
$this->setData('isCallerUncertifiedDelegate', $messageOperatorRoleGuard->isDelegateOrHigher() && $messageOperatorRoleService->isUncertifiedDelegateActor());
 
 
$this->setData('scmFl', $scmFl);
$this->setData('scmNo', $scmNo);
$this->setData('viewMemuDepth', $viewMemuDepth);