운영팀 등록 테넌트 수정 및 삭제 금지 기능 구현
This commit is contained in:
@@ -150,7 +150,7 @@ try {
|
||||
// 운영자는 모든 테넌트, 영업관리/매니저는 본인 소속 테넌트만
|
||||
if ($currentUser['role'] === 'operator') {
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT t.*, m.name as register_name, m2.name as manager_name, m2.role as manager_role
|
||||
SELECT t.*, m.name as register_name, m.role as register_role, m2.name as manager_name, m2.role as manager_role
|
||||
FROM sales_tenants t
|
||||
JOIN sales_member m ON t.manager_id = m.id
|
||||
LEFT JOIN sales_member m2 ON t.sales_manager_id = m2.id
|
||||
@@ -161,7 +161,7 @@ try {
|
||||
if ($currentUser['role'] === 'manager') {
|
||||
// 매니저는 본인이 담당 매니저로 배정된 테넌트만 조회
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT t.*, m.name as register_name, m2.name as manager_name, m2.role as manager_role
|
||||
SELECT t.*, m.name as register_name, m.role as register_role, m2.name as manager_name, m2.role as manager_role
|
||||
FROM sales_tenants t
|
||||
JOIN sales_member m ON t.manager_id = m.id
|
||||
LEFT JOIN sales_member m2 ON t.sales_manager_id = m2.id
|
||||
@@ -172,7 +172,7 @@ try {
|
||||
} else {
|
||||
// 영업관리자는 본인이 영업했거나, 본인이 매니저로 배정된 테넌트 조회
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT t.*, m.name as register_name, m2.name as manager_name, m2.role as manager_role
|
||||
SELECT t.*, m.name as register_name, m.role as register_role, m2.name as manager_name, m2.role as manager_role
|
||||
FROM sales_tenants t
|
||||
JOIN sales_member m ON t.manager_id = m.id
|
||||
LEFT JOIN sales_member m2 ON t.sales_manager_id = m2.id
|
||||
@@ -509,6 +509,14 @@ try {
|
||||
$tenant_id = $data['id'] ?? null;
|
||||
if (!checkTenantPermission($pdo, $tenant_id, $currentUser)) throw new Exception("권한이 없습니다.");
|
||||
|
||||
// 운영팀 등록 여부 확인
|
||||
$stmtCheck = $pdo->prepare("SELECT m.role FROM sales_tenants t JOIN sales_member m ON t.manager_id = m.id WHERE t.id = ?");
|
||||
$stmtCheck->execute([$tenant_id]);
|
||||
$reg = $stmtCheck->fetch();
|
||||
if ($reg && $reg['role'] === 'operator' && $currentUser['role'] !== 'operator') {
|
||||
throw new Exception("운영팀에서 등록한 테넌트는 수정할 수 없습니다.");
|
||||
}
|
||||
|
||||
$tenant_name = $data['tenant_name'] ?? '';
|
||||
$representative = $data['representative'] ?? '';
|
||||
$business_no = $data['business_no'] ?? '';
|
||||
@@ -527,6 +535,14 @@ try {
|
||||
} elseif ($action === 'delete_tenant') {
|
||||
$tenant_id = $data['id'] ?? null;
|
||||
if (!checkTenantPermission($pdo, $tenant_id, $currentUser)) throw new Exception("권한이 없습니다.");
|
||||
|
||||
// 운영팀 등록 여부 확인
|
||||
$stmtCheck = $pdo->prepare("SELECT m.role FROM sales_tenants t JOIN sales_member m ON t.manager_id = m.id WHERE t.id = ?");
|
||||
$stmtCheck->execute([$tenant_id]);
|
||||
$reg = $stmtCheck->fetch();
|
||||
if ($reg && $reg['role'] === 'operator' && $currentUser['role'] !== 'operator') {
|
||||
throw new Exception("운영팀에서 등록한 테넌트는 삭제할 수 없습니다.");
|
||||
}
|
||||
|
||||
// 관련 데이터 삭제 (계약, 시나리오, 상담기록)
|
||||
$pdo->prepare("DELETE FROM sales_tenant_products WHERE tenant_id = ?")->execute([$tenant_id]);
|
||||
|
||||
@@ -3403,22 +3403,31 @@
|
||||
</button>
|
||||
)}
|
||||
|
||||
<div className="flex items-center gap-1 ml-2 border-l border-slate-200 pl-2">
|
||||
<button
|
||||
onClick={() => handleOpenEditTenant(t)}
|
||||
className="p-1.5 text-blue-600 hover:bg-blue-50 rounded-lg transition-colors"
|
||||
title="수정 및 계약 관리"
|
||||
>
|
||||
<LucideIcon name="edit-2" className="w-4 h-4" />
|
||||
</button>
|
||||
<button
|
||||
onClick={() => handleDeleteTenant(t.id)}
|
||||
className="p-1.5 text-red-600 hover:bg-red-50 rounded-lg transition-colors"
|
||||
title="삭제"
|
||||
>
|
||||
<LucideIcon name="trash-2" className="w-4 h-4" />
|
||||
</button>
|
||||
</div>
|
||||
{!(t.register_role === 'operator' && currentRole !== '운영자') && (
|
||||
<div className="flex items-center gap-1 ml-2 border-l border-slate-200 pl-2">
|
||||
<button
|
||||
onClick={() => handleOpenEditTenant(t)}
|
||||
className="p-1.5 text-blue-600 hover:bg-blue-50 rounded-lg transition-colors"
|
||||
title="수정 및 계약 관리"
|
||||
>
|
||||
<LucideIcon name="edit-2" className="w-4 h-4" />
|
||||
</button>
|
||||
<button
|
||||
onClick={() => handleDeleteTenant(t.id)}
|
||||
className="p-1.5 text-red-600 hover:bg-red-50 rounded-lg transition-colors"
|
||||
title="삭제"
|
||||
>
|
||||
<LucideIcon name="trash-2" className="w-4 h-4" />
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
{t.register_role === 'operator' && currentRole !== '운영자' && (
|
||||
<div className="flex items-center gap-1 ml-2 border-l border-slate-200 pl-2">
|
||||
<div className="p-1.5 text-slate-300 cursor-help" title="운영팀 등록 테넌트는 수정/삭제가 제약됩니다.">
|
||||
<LucideIcon name="lock" className="w-4 h-4" />
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
Reference in New Issue
Block a user