Files
egbim_homepage/eng/sw_upload/upload_list.php
T
2026-07-23 16:15:57 +09:00

129 lines
3.9 KiB
PHP

<?php
// header("Content-Type: application/json; charset=utf-8");
// // require_once __DIR__ . '/upload_common.php';
// // require_once $_SERVER['DOCUMENT_ROOT'].'/egbim/bbs/admin_guard.php';
// $conn = new mysqli('localhost', 'egbim', 'baron3840!!', 'egbim');
// if ($conn->connect_error) {
// http_response_code(500);
// echo json_encode(['message' => 'DB 연결 실패']);
// exit;
// }
// mysqli_set_charset($conn, 'utf8mb4');
// // === 선택된 제품코드 파라미터 ===
// $product_code = $_GET['product_code'] ?? '';
// // TODO: 권한 부여는 추후 적용
// // $user_role = $_SESSION['user']['role'] ?? 'user'; // 예: admin, manager, user
// // if ($user_role !== 'admin') {
// // // 권한 체크 로직 들어갈 자리
// // }
// $sql = "SELECT id, product_code, sw_version, version_type,
// filename, filepath, filetype,
// filesize, uploader,
// DATE_FORMAT(upload_date, '%Y-%m-%d %H:%i:%s') as upload_date,
// DATE_FORMAT(test_done_date, '%Y-%m-%d %H:%i:%s') as test_done_date,
// tester,
// DATE_FORMAT(release_date, '%Y-%m-%d %H:%i:%s') as release_date,
// releaser,
// deleted
// FROM deploy_files
// WHERE 1=1";
// // 제품코드가 지정된 경우만 필터
// if ($product_code !== '') {
// $sql .= " AND product_code = '". $conn->real_escape_string($product_code) ."'";
// }
// $sql .= " ORDER BY id DESC";
// $res = $conn->query($sql);
// $files = [];
// while ($row = $res->fetch_assoc()) {
// $files[] = $row;
// }
// echo json_encode(['files' => $files], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
// $conn->close();
?>
<?php
header("Content-Type: application/json; charset=utf-8");
// ✅ 1) Descope 세션 복원 (JWT → $_SESSION['user'])
require_once $_SERVER['DOCUMENT_ROOT'].'/eng/skin/member/basic/descope_session.php';
// ✅ 2) 관리자 권한 체크
require_once $_SERVER['DOCUMENT_ROOT'].'/eng/bbs/upload_admin_guard.php';
// ✅ 관리자만 접근 가능. 일반 사용자는 403 Forbidden
$host = 'localhost';
$user = 'egbim';
$pass = 'baron3840!!';
$db = 'egbim';
$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
http_response_code(500);
echo json_encode(['status'=>'fail','message'=>'DB 연결 실패']);
exit;
}
mysqli_set_charset($conn, 'utf8mb4');
// === 파라미터 ===
$product_code = $_GET['product_code'] ?? '';
$show_deleted = isset($_GET['show_deleted']) ? (int)$_GET['show_deleted'] : 0;
if (!$product_code) {
echo json_encode(['status'=>'fail','message'=>'제품코드 누락']);
exit;
}
// === 삭제 여부 조건 ===
$whereDeleted = $show_deleted ? "1=1" : "deleted=0";
// === 쿼리 ===
$sql = "
SELECT
id, product_code, sw_version, filename, filetype, filesize, filepath,
DATE_FORMAT(upload_date, '%Y-%m-%d %H:%i:%s') AS upload_date,
uploader,
tester,
DATE_FORMAT(test_done_date, '%Y-%m-%d %H:%i:%s') AS test_done_date,
releaser,
DATE_FORMAT(release_date, '%Y-%m-%d %H:%i:%s') AS release_date,
deleted
FROM deploy_files
WHERE product_code = ?
AND $whereDeleted
ORDER BY sw_version DESC, upload_date ASC
";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $product_code);
$stmt->execute();
$res = $stmt->get_result();
$files = [];
while ($row = $res->fetch_assoc()) {
$files[] = $row;
}
// ✅ 현재 로그인 관리자 정보 포함
echo json_encode([
'status' => 'ok',
'files' => $files,
'current_user' => [
'loginId' => $_SESSION['user']['loginIds'][0] ?? '',
'name' => get_upload_admin_display_name(
$_SESSION['user']['loginIds'][0] ?? '',
$_SESSION['user']['name'] ?? '알 수 없음'
)
]
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$stmt->close();
$conn->close();