[파일 업로드] tus 훅추가

This commit is contained in:
2026-03-05 16:05:14 +09:00
parent 4360298934
commit 35f3f9d679
4 changed files with 37 additions and 12 deletions
@@ -1,7 +1,6 @@
package com.alist.api.common.modules.file; package com.alist.api.common.modules.file;
import com.alist.api.common.modules.file.dto.UploadTokenDto; 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.ApiResponse;
import com.alist.api.common.response.ApiResponseCode; import com.alist.api.common.response.ApiResponseCode;
import com.alist.api.common.modules.file.dto.UploadStartDto; 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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Map;
@Slf4j @Slf4j
@Tag(name = "99. 파일 관리", description = "파일 관리") @Tag(name = "99. 파일 관리", description = "파일 관리")
@RestController @RestController
@@ -32,7 +33,10 @@ public class FileController {
description = "업로드 토큰 획득 및 업로드 정보 db 기록" description = "업로드 토큰 획득 및 업로드 정보 db 기록"
) )
@PostMapping("/uploadStart") @PostMapping("/uploadStart")
public ResponseEntity<ApiResponse<UploadStartDto>> uploadStart(@Valid @RequestBody UploadStartForm uploadStartForm, HttpServletRequest request) { public ResponseEntity<ApiResponse<UploadStartDto>> uploadStart(
@Valid @RequestBody UploadStartForm uploadStartForm
, HttpServletRequest request
) {
HttpSession session = request.getSession(false); HttpSession session = request.getSession(false);
Integer userTokenIdx = (session == null) ? null : (Integer) session.getAttribute("userTokenIdx"); Integer userTokenIdx = (session == null) ? null : (Integer) session.getAttribute("userTokenIdx");
Integer userIdx = (session == null) ? null : (Integer) session.getAttribute("userIdx"); Integer userIdx = (session == null) ? null : (Integer) session.getAttribute("userIdx");
@@ -54,23 +58,32 @@ public class FileController {
public ResponseEntity<ApiResponse<String>> uploadAuthCheck( public ResponseEntity<ApiResponse<String>> uploadAuthCheck(
@RequestHeader(value = "Authorization", required = false) String uploadToken @RequestHeader(value = "Authorization", required = false) String uploadToken
, @RequestHeader(value = "X-File-Master-Key", required = false) String fileMasterKey , @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.setUploadToken(uploadToken.substring(7).trim());
uploadTokenDto.setFileMasterKey(fileMasterKey.trim()); uploadTokenDto.setFileMasterKey(fileMasterKey.trim());
// uploadTokenForm.setUploadToken(uploadToken.substring(7).trim()); UploadTokenDto uploadTokenCheck = fileService.isUploadTokenCheck(uploadTokenDto);
UploadTokenDto uploadTokenInfo = fileService.isUploadTokenCheck(uploadTokenDto); if (uploadTokenCheck.getResultCode() == 401) {
if (uploadTokenInfo.getResultCode() == 401) {
return ApiResponse.entity("", ApiResponseCode.CODE_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_403);
} }
return ApiResponse.entity("", ApiResponseCode.CODE_200); return ApiResponse.entity("", ApiResponseCode.CODE_200);
} }
@PostMapping("/tusHook")
public ResponseEntity<Void> tusHook(@RequestBody Map<String, Object> payload) {
log.debug("[tusHook] payload={}", payload);
return ResponseEntity.noContent().build();
}
} }
@@ -68,7 +68,10 @@ public class AuthController {
description = "리프레시 토큰으로 엑세스 토큰 재발급" description = "리프레시 토큰으로 엑세스 토큰 재발급"
) )
@PostMapping("/refresh") @PostMapping("/refresh")
public ResponseEntity<ApiResponse<Map<String, Object>>> refresh(@CookieValue(name = "refreshToken", required = false) String refreshToken, HttpServletResponse response) { public ResponseEntity<ApiResponse<Map<String, Object>>> refresh(
@CookieValue(name = "refreshToken", required = false) String refreshToken
, HttpServletResponse response
) {
TestLoginDto testLogin = testAuthService.refreshByToken(refreshToken); TestLoginDto testLogin = testAuthService.refreshByToken(refreshToken);
@@ -117,7 +120,11 @@ public class AuthController {
description = "로그아웃시 redis 에 세션 삭제 합니다." description = "로그아웃시 redis 에 세션 삭제 합니다."
) )
@PostMapping("/logout") @PostMapping("/logout")
public ResponseEntity<ApiResponse<Map<String, Object>>> logout(HttpServletRequest request, HttpServletResponse response, @CookieValue(name = "refreshToken", required = false) String refreshToken) { public ResponseEntity<ApiResponse<Map<String, Object>>> logout(
HttpServletRequest request
, HttpServletResponse response
, @CookieValue(name = "refreshToken", required = false) String refreshToken
) {
HttpSession session = request.getSession(false); HttpSession session = request.getSession(false);
if (session != null) { if (session != null) {
@@ -42,7 +42,11 @@ public class TestAuthController {
description = "아이디/비밀번호로 로그인하고 HttpOnly 쿠키로 토큰을 전달합니다. (웹 브라우저용)" description = "아이디/비밀번호로 로그인하고 HttpOnly 쿠키로 토큰을 전달합니다. (웹 브라우저용)"
) )
@PostMapping("/testLogin") @PostMapping("/testLogin")
public ResponseEntity<ApiResponse<TestLoginDto>> testUserLogin(@Valid @RequestBody TestLoginForm testLoginForm, HttpServletResponse response, HttpSession session) { public ResponseEntity<ApiResponse<TestLoginDto>> testUserLogin(
@Valid @RequestBody TestLoginForm testLoginForm
, HttpServletResponse response
, HttpSession session
) {
TestLoginDto testLoginDto = testAuthService.selectTestLogin(testLoginForm.testLoginDto()); TestLoginDto testLoginDto = testAuthService.selectTestLogin(testLoginForm.testLoginDto());
if (testLoginDto.getResultCode() == 2003) { if (testLoginDto.getResultCode() == 2003) {
@@ -19,5 +19,6 @@
WHERE LFM.DEL_YN = 'N' WHERE LFM.DEL_YN = 'N'
AND LFM.FILE_MASTER_KEY = #{fileMasterKey} AND LFM.FILE_MASTER_KEY = #{fileMasterKey}
AND LFM.STATUS = 1 AND LFM.STATUS = 1
AND LTUT.user_token_idx = #{userTokenIdx}
</select> </select>
</mapper> </mapper>