영업관리 통합 로그인 명칭수정
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -187,7 +187,7 @@ $roleData = [
|
||||
],
|
||||
'current_user' => [
|
||||
"id" => "user_sales_admin",
|
||||
"name" => "영업관리자",
|
||||
"name" => "영업파트너",
|
||||
"role" => "영업관리",
|
||||
"sub_managers" => [
|
||||
[
|
||||
|
||||
@@ -53,16 +53,16 @@ try {
|
||||
$stmt->execute();
|
||||
}
|
||||
|
||||
// 기본 영업관리자 계정 생성
|
||||
// 기본 영업파트너 계정 생성
|
||||
$check = $pdo->prepare("SELECT id FROM sales_member WHERE member_id = 'sales'");
|
||||
$check->execute();
|
||||
if (!$check->fetch()) {
|
||||
$stmt = $pdo->prepare("INSERT INTO sales_member (member_id, password, name, role) VALUES ('sales', 'sales', '영업관리자', 'sales_admin')");
|
||||
$stmt = $pdo->prepare("INSERT INTO sales_member (member_id, password, name, role) VALUES ('sales', 'sales', '영업파트너', 'sales_admin')");
|
||||
$stmt->execute();
|
||||
}
|
||||
$sales_id = $pdo->lastInsertId() ?: 2;
|
||||
|
||||
// 기본 매니저 계정 생성 (영업관리자 하위)
|
||||
// 기본 매니저 계정 생성 (영업파트너 하위)
|
||||
$check = $pdo->prepare("SELECT id FROM sales_member WHERE member_id = 'manager'");
|
||||
$check->execute();
|
||||
if (!$check->fetch()) {
|
||||
@@ -77,7 +77,7 @@ try {
|
||||
if (!$check->fetch()) {
|
||||
$stmt = $pdo->prepare("INSERT INTO sales_record (member_id, customer_name, contract_date, amount) VALUES (?, ?, ?, ?)");
|
||||
|
||||
// 영업관리자(sales) 직접 실적
|
||||
// 영업파트너(sales) 직접 실적
|
||||
$stmt->execute([$sales_id, '스타트업 A', '2024-12-01', 25000000]);
|
||||
$stmt->execute([$sales_id, '벤처기업 B', '2024-12-10', 30000000]);
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ try {
|
||||
return;
|
||||
}
|
||||
if ($member_id === 'sales' && $password === 'sales') {
|
||||
$pdo->prepare("INSERT IGNORE INTO sales_member (member_id, password, name, role) VALUES ('sales', 'sales', '영업관리자', 'sales_admin')")->execute();
|
||||
$pdo->prepare("INSERT IGNORE INTO sales_member (member_id, password, name, role) VALUES ('sales', 'sales', '영업파트너', 'sales_admin')")->execute();
|
||||
$stmt = $pdo->prepare("SELECT * FROM sales_member WHERE member_id = 'sales'");
|
||||
$stmt->execute();
|
||||
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
@@ -33,7 +33,7 @@ function checkTenantPermission($pdo, $tenant_id, $currentUser) {
|
||||
return $tenant['sales_manager_id'] == $currentUser['id'];
|
||||
}
|
||||
|
||||
// 영업관리자는 본인이 등록했거나, 본인이 담당 매니저인 경우 가능
|
||||
// 영업파트너는 본인이 등록했거나, 본인이 담당 매니저인 경우 가능
|
||||
return ($tenant['manager_id'] == $currentUser['id'] || $tenant['sales_manager_id'] == $currentUser['id']);
|
||||
}
|
||||
|
||||
@@ -41,8 +41,8 @@ function checkTenantPermission($pdo, $tenant_id, $currentUser) {
|
||||
$pdo->exec("
|
||||
CREATE TABLE IF NOT EXISTS `sales_tenants` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`manager_id` int(11) NOT NULL COMMENT '영업한 영업관리자 ID',
|
||||
`sales_manager_id` int(11) DEFAULT NULL COMMENT '매칭된 매니저 ID (영업관리자 본인 또는 별도 매니저)',
|
||||
`manager_id` int(11) NOT NULL COMMENT '영업한 영업파트너 ID',
|
||||
`sales_manager_id` int(11) DEFAULT NULL COMMENT '매칭된 매니저 ID (영업파트너 본인 또는 별도 매니저)',
|
||||
`tenant_name` varchar(200) NOT NULL,
|
||||
`representative` varchar(100) DEFAULT NULL,
|
||||
`business_no` varchar(20) DEFAULT NULL,
|
||||
@@ -180,7 +180,7 @@ try {
|
||||
switch ($method) {
|
||||
case 'GET':
|
||||
if ($action === 'list_tenants') {
|
||||
// 운영자는 모든 테넌트, 영업관리/매니저는 본인 소속 테넌트만
|
||||
// 운영자는 모든 테넌트, 영업파트너/매니저는 본인 소속 테넌트만
|
||||
if ($currentUser['role'] === 'operator') {
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT t.*, m.name as register_name, m.role as register_role, m2.name as manager_name, m2.role as manager_role
|
||||
@@ -203,7 +203,7 @@ try {
|
||||
");
|
||||
$stmt->execute([$currentUser['id']]);
|
||||
} else {
|
||||
// 영업관리자는 본인이 영업했거나, 본인이 매니저로 배정된 테넌트 조회
|
||||
// 영업파트너는 본인이 영업했거나, 본인이 매니저로 배정된 테넌트 조회
|
||||
$stmt = $pdo->prepare("
|
||||
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
|
||||
@@ -365,7 +365,7 @@ try {
|
||||
$manager_id = $row['manager_id'];
|
||||
$amount = $row['contract_amount'];
|
||||
|
||||
// 영업관리자 계층 확인
|
||||
// 영업파트너 계층 확인
|
||||
// 1. 등록자 본인이 sales_admin인지 확인
|
||||
// 2. 상위(parent)가 sales_admin인지 확인
|
||||
$sales_admin_count = 0;
|
||||
@@ -600,7 +600,7 @@ try {
|
||||
|
||||
if (!$tenant_id) throw new Exception("테넌트 ID가 누락되었습니다.");
|
||||
|
||||
// 권한 확인: 배지 지정은 운영자 또는 해당 테넌트를 등록한 영업관리자만 가능
|
||||
// 권한 확인: 배지 지정은 운영자 또는 해당 테넌트를 등록한 영업파트너만 가능
|
||||
$stmt = $pdo->prepare("SELECT manager_id FROM sales_tenants WHERE id = ?");
|
||||
$stmt->execute([$tenant_id]);
|
||||
$t = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
@@ -805,7 +805,7 @@
|
||||
</div>
|
||||
{detailModalUser.name} ({detailModalUser.member_id}) 하위 멤버
|
||||
</h3>
|
||||
<p className="text-slate-500 mt-1">이 영업관리자에게 소속된 모든 매니저 목록입니다.</p>
|
||||
<p className="text-slate-500 mt-1">이 영업파트너에게 소속된 모든 매니저 목록입니다.</p>
|
||||
</div>
|
||||
<button onClick={() => setDetailModalUser(null)} className="p-2 hover:bg-slate-200 rounded-full transition-colors text-slate-400">
|
||||
<LucideIcon name="x" className="w-6 h-6" />
|
||||
@@ -1654,7 +1654,7 @@
|
||||
<div className="w-16 h-16 bg-blue-600 rounded-full flex items-center justify-center mx-auto mb-4 text-white shadow-lg shadow-blue-100">
|
||||
<LucideIcon name="lock" className="w-8 h-8" />
|
||||
</div>
|
||||
<h2 className="text-3xl font-black text-slate-900 tracking-tight">영업관리 통합 로그인</h2>
|
||||
<h2 className="text-3xl font-black text-slate-900 tracking-tight">SAM 로그인</h2>
|
||||
<p className="text-slate-500 mt-2 font-medium">서비스 이용을 위해 로그인해주세요.</p>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user