From 35f3f9d6794cebefb869e67389d36c3489f6b59e Mon Sep 17 00:00:00 2001 From: sdw086 Date: Thu, 5 Mar 2026 16:05:14 +0900 Subject: [PATCH] =?UTF-8?q?[=ED=8C=8C=EC=9D=BC=20=EC=97=85=EB=A1=9C?= =?UTF-8?q?=EB=93=9C]=20tus=20=ED=9B=85=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/modules/file/FileController.java | 31 +++++++++++++------ .../api/modules/auth/AuthController.java | 11 +++++-- .../api/modules/auth/TestAuthController.java | 6 +++- .../mapper/common/file/FileMapper.xml | 1 + 4 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/alist/api/common/modules/file/FileController.java b/src/main/java/com/alist/api/common/modules/file/FileController.java index 5de685e..57a3a03 100644 --- a/src/main/java/com/alist/api/common/modules/file/FileController.java +++ b/src/main/java/com/alist/api/common/modules/file/FileController.java @@ -1,7 +1,6 @@ package com.alist.api.common.modules.file; import com.alist.api.common.modules.file.dto.UploadTokenDto; -import com.alist.api.common.modules.file.form.UploadTokenForm; import com.alist.api.common.response.ApiResponse; import com.alist.api.common.response.ApiResponseCode; import com.alist.api.common.modules.file.dto.UploadStartDto; @@ -16,6 +15,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Map; + @Slf4j @Tag(name = "99. 파일 관리", description = "파일 관리") @RestController @@ -32,7 +33,10 @@ public class FileController { description = "업로드 토큰 획득 및 업로드 정보 db 기록" ) @PostMapping("/uploadStart") - public ResponseEntity> uploadStart(@Valid @RequestBody UploadStartForm uploadStartForm, HttpServletRequest request) { + public ResponseEntity> uploadStart( + @Valid @RequestBody UploadStartForm uploadStartForm + , HttpServletRequest request + ) { HttpSession session = request.getSession(false); Integer userTokenIdx = (session == null) ? null : (Integer) session.getAttribute("userTokenIdx"); Integer userIdx = (session == null) ? null : (Integer) session.getAttribute("userIdx"); @@ -54,23 +58,32 @@ public class FileController { public ResponseEntity> uploadAuthCheck( @RequestHeader(value = "Authorization", required = false) String uploadToken , @RequestHeader(value = "X-File-Master-Key", required = false) String fileMasterKey - , UploadTokenForm uploadTokenForm ) { - UploadTokenDto uploadTokenDto = new UploadTokenDto(); + if (uploadToken == null || !uploadToken.startsWith("Bearer ")) { + return ApiResponse.entity("", ApiResponseCode.CODE_401); + } + if (fileMasterKey == null || fileMasterKey.isBlank()) { + return ApiResponse.entity("", ApiResponseCode.CODE_403); + } + UploadTokenDto uploadTokenDto = new UploadTokenDto(); uploadTokenDto.setUploadToken(uploadToken.substring(7).trim()); uploadTokenDto.setFileMasterKey(fileMasterKey.trim()); - // uploadTokenForm.setUploadToken(uploadToken.substring(7).trim()); + UploadTokenDto uploadTokenCheck = fileService.isUploadTokenCheck(uploadTokenDto); - UploadTokenDto uploadTokenInfo = fileService.isUploadTokenCheck(uploadTokenDto); - - if (uploadTokenInfo.getResultCode() == 401) { + if (uploadTokenCheck.getResultCode() == 401) { return ApiResponse.entity("", ApiResponseCode.CODE_401); - } else if (uploadTokenInfo.getResultCode() == 403) { + } else if (uploadTokenCheck.getResultCode() == 403) { return ApiResponse.entity("", ApiResponseCode.CODE_403); } return ApiResponse.entity("", ApiResponseCode.CODE_200); } + + @PostMapping("/tusHook") + public ResponseEntity tusHook(@RequestBody Map payload) { + log.debug("[tusHook] payload={}", payload); + return ResponseEntity.noContent().build(); + } } diff --git a/src/main/java/com/alist/api/modules/auth/AuthController.java b/src/main/java/com/alist/api/modules/auth/AuthController.java index 7c0d3f1..f1083a6 100644 --- a/src/main/java/com/alist/api/modules/auth/AuthController.java +++ b/src/main/java/com/alist/api/modules/auth/AuthController.java @@ -68,7 +68,10 @@ public class AuthController { description = "리프레시 토큰으로 엑세스 토큰 재발급" ) @PostMapping("/refresh") - public ResponseEntity>> refresh(@CookieValue(name = "refreshToken", required = false) String refreshToken, HttpServletResponse response) { + public ResponseEntity>> refresh( + @CookieValue(name = "refreshToken", required = false) String refreshToken + , HttpServletResponse response + ) { TestLoginDto testLogin = testAuthService.refreshByToken(refreshToken); @@ -117,7 +120,11 @@ public class AuthController { description = "로그아웃시 redis 에 세션 삭제 합니다." ) @PostMapping("/logout") - public ResponseEntity>> logout(HttpServletRequest request, HttpServletResponse response, @CookieValue(name = "refreshToken", required = false) String refreshToken) { + public ResponseEntity>> logout( + HttpServletRequest request + , HttpServletResponse response + , @CookieValue(name = "refreshToken", required = false) String refreshToken + ) { HttpSession session = request.getSession(false); if (session != null) { diff --git a/src/main/java/com/alist/api/modules/auth/TestAuthController.java b/src/main/java/com/alist/api/modules/auth/TestAuthController.java index aaceb2a..f831433 100644 --- a/src/main/java/com/alist/api/modules/auth/TestAuthController.java +++ b/src/main/java/com/alist/api/modules/auth/TestAuthController.java @@ -42,7 +42,11 @@ public class TestAuthController { description = "아이디/비밀번호로 로그인하고 HttpOnly 쿠키로 토큰을 전달합니다. (웹 브라우저용)" ) @PostMapping("/testLogin") - public ResponseEntity> testUserLogin(@Valid @RequestBody TestLoginForm testLoginForm, HttpServletResponse response, HttpSession session) { + public ResponseEntity> testUserLogin( + @Valid @RequestBody TestLoginForm testLoginForm + , HttpServletResponse response + , HttpSession session + ) { TestLoginDto testLoginDto = testAuthService.selectTestLogin(testLoginForm.testLoginDto()); if (testLoginDto.getResultCode() == 2003) { diff --git a/src/main/resources/mapper/common/file/FileMapper.xml b/src/main/resources/mapper/common/file/FileMapper.xml index 71f901c..52487be 100644 --- a/src/main/resources/mapper/common/file/FileMapper.xml +++ b/src/main/resources/mapper/common/file/FileMapper.xml @@ -19,5 +19,6 @@ WHERE LFM.DEL_YN = 'N' AND LFM.FILE_MASTER_KEY = #{fileMasterKey} AND LFM.STATUS = 1 + AND LTUT.user_token_idx = #{userTokenIdx} \ No newline at end of file