[파일 업로드] tus 훅추가
This commit is contained in:
@@ -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>
|
||||||
Reference in New Issue
Block a user