'error', // 'step' => 'auth', // 'message' => '인증에 실패했습니다. 올바른 인증키를 사용했는지 확인해 주세요.' // ], JSON_UNESCAPED_UNICODE); // exit; // } // // 2. POST된 JSON 데이터 수신 // $input = file_get_contents('php://input'); // $data = json_decode($input, true); // if (!is_array($data)) { // echo json_encode([ // 'status' => 'error', // 'step' => 'parse', // 'message' => '전달된 JSON이 올바르지 않습니다.' // ], JSON_UNESCAPED_UNICODE); // exit; // } // // 3. 필수 파라미터 확인 // $required = ['emp_no','name','email','type','date']; // foreach ($required as $key) { // if (empty($data[$key])) { // $friendly = [ // 'emp_no' => '사번', // 'name' => '이름', // 'email' => '이메일', // 'type' => '퇴사 유형', // 'date' => '퇴사 일자' // ][$key] ?? $key; // echo json_encode([ // 'status' => 'error', // 'step' => 'validation', // 'message' => "필수 항목이 누락되었습니다: {$friendly} 누락." // ], JSON_UNESCAPED_UNICODE); // exit; // } // } // // 4. DB 연결 및 INSERT // $db = new mysqli('localhost','egbim','baron3840!!','egbim'); // if ($db->connect_error) { // echo json_encode([ // 'status' => 'error', // 'step' => 'db_connect', // 'message' => '데이터베이스 연결에 실패했습니다.' // ], JSON_UNESCAPED_UNICODE); // exit; // } // $stmt = $db->prepare(" // INSERT INTO resign_info (emp_no,name,email,type,date) // VALUES (?,?,?,?,?) // "); // $stmt->bind_param('sssss', // $data['emp_no'], // $data['name'], // $data['email'], // $data['type'], // $data['date'] // ); // if (! $stmt->execute()) { // // 중복 키(Primary Key/email) 에러 // if ($stmt->errno === 1062) { // echo json_encode([ // 'status' => 'error', // 'step' => 'db_insert', // 'message' => '이미 동일한 이메일의 퇴사자 정보가 등록되어 있습니다.' // ], JSON_UNESCAPED_UNICODE); // } else { // echo json_encode([ // 'status' => 'error', // 'step' => 'db_insert', // 'message' => '퇴사자 정보를 저장하는 데 실패했습니다: ' . $stmt->error // ], JSON_UNESCAPED_UNICODE); // } // $stmt->close(); // $db->close(); // exit; // } // $stmt->close(); // $db->close(); // // 초기 응답 객체 // $result = [ // 'status' => 'success', // 'db' => 'ok', // 'descope' => null, // 'emp_status' => null, // 'message' => '퇴사자 정보가 DB에 정상적으로 등록되었습니다.' // ]; // // DB 실패 시 바로 리턴 // if (! $dbResult) { // $result['status'] = 'error'; // echo json_encode($result, JSON_UNESCAPED_UNICODE); // exit; // } // // 이메일이 비어 있으면 나머지 호출 생략 // if (empty($data['email'])) { // $result['status'] = 'partial_success'; // $result['message'] = '(이메일 정보가 없어 Descope 삭제 및 사내 상태 업데이트는 생략되었습니다.)'; // echo json_encode($result, JSON_UNESCAPED_UNICODE); // exit; // } // // 5. Descope 사용자 삭제 // $projectId = 'P2wON5fy1K6kyia269VpeIzYP8oP'; // $managementKey = 'K2ycqpjeh1voPBdxXxzB3ScZOQ6v9aiLmU2cIj70X1H8Kcoz0KWfCWmofUwAsAkJroXA8QC'; // $ch1 = curl_init('https://api.descope.com/v1/mgmt/user/delete'); // curl_setopt_array($ch1, [ // CURLOPT_RETURNTRANSFER => true, // CURLOPT_POST => true, // CURLOPT_POSTFIELDS => json_encode(['loginId'=>$data['email']]), // CURLOPT_HTTPHEADER => [ // 'Content-Type: application/json', // "Authorization: Bearer {$projectId}:{$managementKey}" // ], // ]); // $res1 = curl_exec($ch1); // $code1 = curl_getinfo($ch1, CURLINFO_HTTP_CODE); // $err1 = curl_error($ch1); // curl_close($ch1); // if ($err1) { // $result['descope'] = [ // 'status' => 'error', // 'message' => 'Descope 사용자 삭제 중 오류가 발생했습니다: ' . $err1 // ]; // } elseif ($code1 >= 200 && $code1 < 300) { // $result['descope'] = ['status'=>'ok','message'=>'Descope 사용자 삭제에 성공했습니다.']; // } else { // $result['descope'] = [ // 'status' => 'error', // 'message' => "Descope API 에러 (HTTP {$code1})", // 'response' => json_decode($res1, true) // ]; // } // 6. 사내 emp_status 업데이트 // $ch2 = curl_init('http://172.16.10.191:20000/user/emp_status'); // curl_setopt_array($ch2, [ // CURLOPT_RETURNTRANSFER => true, // CURLOPT_POST => true, // CURLOPT_POSTFIELDS => json_encode([ // 'email' => $data['email'], // 'status' => 'inactive' // ]), // CURLOPT_HTTPHEADER => ['Content-Type: application/json'], // ]); // $res2 = curl_exec($ch2); // $code2 = curl_getinfo($ch2, CURLINFO_HTTP_CODE); // $err2 = curl_error($ch2); // curl_close($ch2); // if ($err2) { // $result['emp_status'] = [ // 'status' => 'error', // 'message' => 'BEPs에 전송 오류가 발생했습니다: ' . $err2 // ]; // } elseif ($code2 >= 200 && $code2 < 300) { // $result['emp_status'] = ['status'=>'ok','message'=>'BEPs에 전송 성공했습니다.']; // } else { // $result['emp_status'] = [ // 'status' => 'error', // 'message' => "BEPS API 에러 (HTTP {$code2})", // 'response' => json_decode($res2, true) // ]; // } // echo json_encode($result, JSON_UNESCAPED_UNICODE); // exit; // 6. 사내 emp_status 업데이트 (테스트용) ?> true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json' ], CURLOPT_POSTFIELDS => json_encode([ 'email' => 'b24014@hanmaceng.co.kr', // 테스트용 하드코딩 'status' => 'inactive' // 'active' 또는 'inactive' ], JSON_UNESCAPED_UNICODE) ]); $res2 = curl_exec($ch2); $code2 = curl_getinfo($ch2, CURLINFO_HTTP_CODE); $err2 = curl_error($ch2); curl_close($ch2); // 결과 처리 if ($err2) { $result = [ 'status' => 'error', 'message' => 'BEPs에 전송 오류: ' . $err2 ]; } elseif ($code2 >= 200 && $code2 < 300) { $result = [ 'status' => 'ok', 'message' => 'BEPs에 전송 성공', 'response'=> json_decode($res2, true) ]; } else { $result = [ 'status' => 'error', 'message' => "BEPs API 에러 (HTTP {$code2})", 'response' => json_decode($res2, true) ]; } echo json_encode($result, JSON_UNESCAPED_UNICODE); ?> $email, // 'status' => $status // ], JSON_UNESCAPED_UNICODE); // // cURL 초기화 // $ch = curl_init($url); // curl_setopt_array($ch, [ // CURLOPT_RETURNTRANSFER => true, // CURLOPT_POST => true, // CURLOPT_HTTPHEADER => [ // 'Content-Type: application/json' // ], // CURLOPT_POSTFIELDS => $payload, // CURLOPT_HEADER => true, // 헤더+바디 함께 받기 // CURLINFO_HEADER_OUT => true, // 요청 헤더 디버그용 // ]); // $response = curl_exec($ch); // $err = curl_error($ch); // $info = curl_getinfo($ch); // curl_close($ch); // if ($err) { // echo "=== cURL ERROR ===\n$err\n"; // exit; // } // // 응답 분리 (헤더 / 바디) // $headerSize = $info['header_size']; // $respHeader = substr($response, 0, $headerSize); // $respBody = substr($response, $headerSize); // // 디버그 출력 // echo "=== 요청 URL ===\n{$url}\n\n"; // echo "=== 요청 메서드 ===\nPOST\n\n"; // echo "=== 요청 헤더 ===\n" . implode("\n", $info['request_header'] ?? []) . "\n\n"; // echo "=== 요청 바디 ===\n$payload\n\n"; // echo "=== 응답 코드 ===\n{$info['http_code']}\n\n"; // echo "=== 응답 헤더 ===\n$respHeader\n\n"; // echo "=== 응답 바디 ===\n$respBody\n\n"; // // JSON 파싱 가능하면 보기 좋게 출력 // $json = json_decode($respBody, true); // if ($json !== null) { // echo "=== 응답 JSON 파싱 ===\n"; // print_r($json); // } ?>