[파일 업로드] 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;
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<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);
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<ApiResponse<String>> 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<Void> tusHook(@RequestBody Map<String, Object> payload) {
log.debug("[tusHook] payload={}", payload);
return ResponseEntity.noContent().build();
}
}
@@ -68,7 +68,10 @@ public class AuthController {
description = "리프레시 토큰으로 엑세스 토큰 재발급"
)
@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);
@@ -117,7 +120,11 @@ public class AuthController {
description = "로그아웃시 redis 에 세션 삭제 합니다."
)
@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);
if (session != null) {
@@ -42,7 +42,11 @@ public class TestAuthController {
description = "아이디/비밀번호로 로그인하고 HttpOnly 쿠키로 토큰을 전달합니다. (웹 브라우저용)"
)
@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());
if (testLoginDto.getResultCode() == 2003) {
@@ -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}
</select>
</mapper>