diff --git a/src/main/java/ru/soune/nocopy/controller/ApiController.java b/src/main/java/ru/soune/nocopy/controller/ApiController.java index 89c54a9..719f967 100644 --- a/src/main/java/ru/soune/nocopy/controller/ApiController.java +++ b/src/main/java/ru/soune/nocopy/controller/ApiController.java @@ -361,7 +361,6 @@ public class ApiController { public ResponseEntity findSimilarFiles( @PathVariable("version") int version, @PathVariable String fileId, - @RequestParam(value = "auth_token", required = false) String authToken, @RequestParam(required = false) List similarityLevels, @PageableDefault(size = 20, sort = "hammingDistance") Pageable pageable) { @@ -373,10 +372,12 @@ public class ApiController { MessageCode.INVALID_FIELD.getDescription(), null)); } + Long userId = (Long) httpServletRequest.getAttribute("userId"); + BaseResponse response; if ("image".equals(fileEntity.getMimeType())) { Page similarFilesPage = fileSimilarityService.findSimilarFiles( - fileId, similarityLevels, pageable, authToken); + fileId, similarityLevels, pageable, userId); response = buildSuccessResponse(similarFilesPage, MessageCode.SIMILAR_FILES_FOUND); } else { List results = processNonImageFile(fileEntity, true); diff --git a/src/main/java/ru/soune/nocopy/controller/GlobalSearchController.java b/src/main/java/ru/soune/nocopy/controller/GlobalSearchController.java index f9e596a..7e23158 100644 --- a/src/main/java/ru/soune/nocopy/controller/GlobalSearchController.java +++ b/src/main/java/ru/soune/nocopy/controller/GlobalSearchController.java @@ -14,7 +14,6 @@ import ru.soune.nocopy.dto.violation.ViolationRequest; import ru.soune.nocopy.entity.file.FileEntity; import ru.soune.nocopy.entity.search.GlobalSearchTask; import ru.soune.nocopy.entity.search.SearchStatus; -import ru.soune.nocopy.exception.NotFoundAuthToken; import ru.soune.nocopy.repository.GlobalSearchTaskRepository; import ru.soune.nocopy.service.search.GlobalSearchService; import ru.soune.nocopy.service.violation.ViolationService; @@ -37,92 +36,47 @@ public class GlobalSearchController { @PostMapping("/start") public ResponseEntity startSearch( - @RequestBody GlobalSearchStartRequest request, - @RequestHeader(value = "Authorization", required = false) String tokenHeader) { - if (tokenHeader == null || tokenHeader.isBlank()) { - Map errorData = new HashMap<>(); - errorData.put("token", tokenHeader); - - return ResponseEntity.ok().body(Map.of("error", errorData)); - } - + @RequestBody GlobalSearchStartRequest request) { GlobalSearchStartResponse response = new GlobalSearchStartResponse(); - try { - Long userId = (Long) httpServletRequest.getAttribute("userId"); + Long userId = (Long) httpServletRequest.getAttribute("userId"); - List filesToProcess = globalSearchService.getFilesToProcess(request, userId); + List filesToProcess = globalSearchService.getFilesToProcess(request, userId); - if (filesToProcess.isEmpty()) return ResponseEntity.ok().body("Files for search not found"); + if (filesToProcess.isEmpty()) return ResponseEntity.ok().body("Files for search not found"); - String taskId = globalSearchService.startSearch(request, userId, filesToProcess); + String taskId = globalSearchService.startSearch(request, userId, filesToProcess); - response.setTaskId(taskId); - response.setStatus(SearchStatus.ACCEPTED.name()); - response.setTotalFiles(filesToProcess.size()); - } catch (NotFoundAuthToken e) { - Map errorData = new HashMap<>(); - errorData.put("token", tokenHeader); - - return ResponseEntity.ok().body(Map.of("error", errorData)); - } + response.setTaskId(taskId); + response.setStatus(SearchStatus.ACCEPTED.name()); + response.setTotalFiles(filesToProcess.size()); return ResponseEntity.ok(response); } @GetMapping("/actual-task") - public ResponseEntity getStatus(@RequestHeader(value = "Authorization", required = false) String tokenHeader) { - - if (tokenHeader == null || tokenHeader.isBlank()) { - Map errorData = new HashMap<>(); - errorData.put("token", tokenHeader); - - return ResponseEntity.ok().body(Map.of("error", errorData)); - } - + public ResponseEntity getStatus() { Optional taskOptional; - try { - Long userId = (Long) httpServletRequest.getAttribute("userId"); + Long userId = (Long) httpServletRequest.getAttribute("userId"); - taskOptional = searchTaskRepository.findByUserIdAndStatus(userId, - "PROCESSING"); + taskOptional = searchTaskRepository.findByUserIdAndStatus(userId, + "PROCESSING"); - if (taskOptional.isEmpty()) return ResponseEntity.ok().body("Task not found"); - } catch (NotFoundAuthToken e) { - Map errorData = new HashMap<>(); - errorData.put("token", tokenHeader); - - return ResponseEntity.ok().body(Map.of("error", errorData)); - } + if (taskOptional.isEmpty()) return ResponseEntity.ok().body("Task not found"); return ResponseEntity.ok(taskOptional.get()); } @GetMapping("/violation-summary") - public ResponseEntity getSummary(@RequestHeader(value = "Authorization", required = false) String tokenHeader) { - - if (tokenHeader == null || tokenHeader.isBlank()) { - Map errorData = new HashMap<>(); - errorData.put("token", tokenHeader); - - return ResponseEntity.ok().body(Map.of("error", errorData)); - } - + public ResponseEntity getSummary() { List fileViolationsSummary; - try { - Long userId = (Long) httpServletRequest.getAttribute("userId"); + Long userId = (Long) httpServletRequest.getAttribute("userId"); - fileViolationsSummary = violationService.getFileViolationsSummary(userId); + fileViolationsSummary = violationService.getFileViolationsSummary(userId); - if (fileViolationsSummary.isEmpty()) return ResponseEntity.ok().body("Violations summary not found"); - } catch (NotFoundAuthToken e) { - Map errorData = new HashMap<>(); - errorData.put("token", tokenHeader); - - return ResponseEntity.ok().body(Map.of("error", errorData)); - } + if (fileViolationsSummary.isEmpty()) return ResponseEntity.ok().body("Violations summary not found"); return ResponseEntity.ok(fileViolationsSummary); } @@ -139,38 +93,23 @@ public class GlobalSearchController { } @GetMapping("/status/{taskId}") - public ResponseEntity getStatus(@PathVariable String taskId, - @RequestHeader(value = "Authorization", required = false) String tokenHeader) { - - if (tokenHeader == null || tokenHeader.isBlank()) { - Map errorData = new HashMap<>(); - errorData.put("token", tokenHeader); - - return ResponseEntity.ok().body(Map.of("error", errorData)); - } + public ResponseEntity getStatus(@PathVariable String taskId) { GlobalSearchStatusResponse response; + Long userId = (Long) httpServletRequest.getAttribute("userId"); - try { - Long userId = (Long) httpServletRequest.getAttribute("userId"); + Optional taskOptional = searchTaskRepository.findByTaskIdAndUserId(taskId, userId); - Optional taskOptional = searchTaskRepository.findByTaskIdAndUserId(taskId, userId); + if (taskOptional.isEmpty()) return ResponseEntity.ok().body("Task not found"); - if (taskOptional.isEmpty()) return ResponseEntity.ok().body("Task not found"); + GlobalSearchTask task = taskOptional.orElseThrow(); - GlobalSearchTask task = taskOptional.orElseThrow(); + int progress = task.getTotalFiles() > 0 ? task.getProcessedFiles() * 100 / task.getTotalFiles() : 0; - int progress = task.getTotalFiles() > 0 ? task.getProcessedFiles() * 100 / task.getTotalFiles() : 0; + response = new GlobalSearchStatusResponse(); + response.setTaskId(taskId); + response.setStatus(task.getStatus()); + response.setProgress(progress); - response = new GlobalSearchStatusResponse(); - response.setTaskId(taskId); - response.setStatus(task.getStatus()); - response.setProgress(progress); - } catch (NotFoundAuthToken e) { - Map errorData = new HashMap<>(); - errorData.put("token", tokenHeader); - - return ResponseEntity.ok().body(Map.of("error", errorData)); - } return ResponseEntity.ok(response); } diff --git a/src/main/java/ru/soune/nocopy/controller/PayoutController.java b/src/main/java/ru/soune/nocopy/controller/PayoutController.java index 1b57c74..16aba6e 100644 --- a/src/main/java/ru/soune/nocopy/controller/PayoutController.java +++ b/src/main/java/ru/soune/nocopy/controller/PayoutController.java @@ -1,6 +1,7 @@ package ru.soune.nocopy.controller; +import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -12,20 +13,16 @@ import ru.soune.nocopy.entity.payout.BankTransferPayoutMethod; import ru.soune.nocopy.entity.payout.CardPayoutMethod; import ru.soune.nocopy.entity.payout.PayoutRequest; import ru.soune.nocopy.entity.payout.PayoutType; -import ru.soune.nocopy.entity.user.AuthToken; import ru.soune.nocopy.entity.user.User; import ru.soune.nocopy.exception.InsufficientFundsException; import ru.soune.nocopy.exception.InvalidPayoutMethodException; -import ru.soune.nocopy.exception.NotFoundAuthToken; import ru.soune.nocopy.exception.PendingPayoutExistsException; -import ru.soune.nocopy.repository.AuthTokenRepository; import ru.soune.nocopy.service.payout.PayoutMethodService; import ru.soune.nocopy.service.payout.PayoutRequestService; +import ru.soune.nocopy.service.user.UserService; import java.util.Arrays; import java.util.List; -import java.util.Map; -import java.util.Optional; import java.util.stream.Collectors; @RestController @@ -38,21 +35,21 @@ public class PayoutController { private final PayoutMethodService payoutMethodService; - private final AuthTokenRepository authTokenRepository; + private final HttpServletRequest httpServletRequest; + + private final UserService userService; /* Create payout */ @PostMapping("/create-request") - public ResponseEntity createPayoutRequest(@RequestHeader("Authorization") String tokenHeader, - @Valid @RequestBody PayoutRequestDTO request) { - String token = tokenHeader.replace("Bearer ", ""); + public ResponseEntity createPayoutRequest(@Valid @RequestBody PayoutRequestDTO request) { + Long userId = (Long) httpServletRequest.getAttribute("userId"); + User user = userService.getUserById(userId).orElse(null); - Optional tokenOptional = authTokenRepository.findByToken(token); - - AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); - - User user = authToken.getUser(); + if (user == null) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("User not found with id: " + userId); + } try { PayoutRequest payoutRequest = payoutRequestService.createPayoutRequest(user.getId(), request); @@ -76,15 +73,13 @@ public class PayoutController { Cancel payout */ @PostMapping("/requests/{requestId}/cancel") - public ResponseEntity cancelPayoutRequest(@PathVariable Long requestId, - @RequestHeader("Authorization") String tokenHeader) { - String token = tokenHeader.replace("Bearer ", ""); + public ResponseEntity cancelPayoutRequest(@PathVariable Long requestId) { + Long userId = (Long) httpServletRequest.getAttribute("userId"); + User user = userService.getUserById(userId).orElse(null); - Optional tokenOptional = authTokenRepository.findByToken(token); - - AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); - - User user = authToken.getUser(); + if (user == null) { + return ResponseEntity.notFound().build(); + } PayoutRequest cancelled = payoutRequestService.cancelPayoutRequest(user.getId(), requestId); @@ -95,14 +90,13 @@ public class PayoutController { Get user payouts */ @GetMapping("/requests") - public ResponseEntity> getUserRequests(@RequestHeader("Authorization") String tokenHeader) { - String token = tokenHeader.replace("Bearer ", ""); + public ResponseEntity> getUserRequests() { + Long userId = (Long) httpServletRequest.getAttribute("userId"); + User user = userService.getUserById(userId).orElse(null); - Optional tokenOptional = authTokenRepository.findByToken(token); - - AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); - - User user = authToken.getUser(); + if (user == null) { + return ResponseEntity.notFound().build(); + } return ResponseEntity.ok(payoutRequestService.getUserPayoutRequests(user.getId())); } @@ -111,15 +105,13 @@ public class PayoutController { Get payout by id */ @GetMapping("/requests/{requestId}") - public ResponseEntity getPayoutRequest(@PathVariable Long requestId, - @RequestHeader("Authorization") String tokenHeader) { - String token = tokenHeader.replace("Bearer ", ""); + public ResponseEntity getPayoutRequest(@PathVariable Long requestId) { + Long userId = (Long) httpServletRequest.getAttribute("userId"); + User user = userService.getUserById(userId).orElse(null); - Optional tokenOptional = authTokenRepository.findByToken(token); - - AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); - - User user = authToken.getUser(); + if (user == null) { + return ResponseEntity.notFound().build(); + } return ResponseEntity.ok(payoutRequestService.getPayoutRequest(user.getId(), requestId)); } @@ -128,14 +120,13 @@ public class PayoutController { Get payout by id */ @GetMapping("user/payout-methods") - public ResponseEntity> getUserMethods(@RequestHeader("Authorization") String tokenHeader) { - String token = tokenHeader.replace("Bearer ", ""); + public ResponseEntity> getUserMethods() { + Long userId = (Long) httpServletRequest.getAttribute("userId"); + User user = userService.getUserById(userId).orElse(null); - Optional tokenOptional = authTokenRepository.findByToken(token); - - AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); - - User user = authToken.getUser(); + if (user == null) { + return ResponseEntity.notFound().build(); + } return ResponseEntity.ok(payoutMethodService.getUserMethods(user.getId())); } @@ -158,15 +149,13 @@ public class PayoutController { add card method by userId */ @PostMapping("/payout-method/card") - public ResponseEntity addCardMethod(@Valid @RequestBody AddCardRequest request, - @RequestHeader("Authorization") String tokenHeader) { - String token = tokenHeader.replace("Bearer ", ""); + public ResponseEntity addCardMethod(@Valid @RequestBody AddCardRequest request) { + Long userId = (Long) httpServletRequest.getAttribute("userId"); + User user = userService.getUserById(userId).orElse(null); - Optional tokenOptional = authTokenRepository.findByToken(token); - - AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); - - User user = authToken.getUser(); + if (user == null) { + return ResponseEntity.notFound().build(); + } CardPayoutMethod method = payoutMethodService.addCardMethod(user.getId(), request); @@ -178,15 +167,13 @@ public class PayoutController { add bank payout-method */ @PostMapping("/payout-method/bank-transfer") - public ResponseEntity addBankTransferMethod(@Valid @RequestBody AddBankTransferRequest request, - @RequestHeader("Authorization") String tokenHeader) { - String token = tokenHeader.replace("Bearer ", ""); + public ResponseEntity addBankTransferMethod(@Valid @RequestBody AddBankTransferRequest request) { + Long userId = (Long) httpServletRequest.getAttribute("userId"); + User user = userService.getUserById(userId).orElse(null); - Optional tokenOptional = authTokenRepository.findByToken(token); - - AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); - - User user = authToken.getUser(); + if (user == null) { + return ResponseEntity.notFound().build(); + } BankTransferPayoutMethod method = payoutMethodService.addBankTransferMethod(user.getId(), request); @@ -199,15 +186,13 @@ public class PayoutController { set default bank payout-method */ @PutMapping("/payout-method/{methodId}/default") - public ResponseEntity setDefaultMethod(@PathVariable Long methodId, - @RequestHeader("Authorization") String tokenHeader) { - String token = tokenHeader.replace("Bearer ", ""); + public ResponseEntity setDefaultMethod(@PathVariable Long methodId) { + Long userId = (Long) httpServletRequest.getAttribute("userId"); + User user = userService.getUserById(userId).orElse(null); - Optional tokenOptional = authTokenRepository.findByToken(token); - - AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found")); - - User user = authToken.getUser(); + if (user == null) { + return ResponseEntity.notFound().build(); + } payoutMethodService.setDefaultMethod(user.getId(), methodId); diff --git a/src/main/java/ru/soune/nocopy/dto/file/AppealRequest.java b/src/main/java/ru/soune/nocopy/dto/file/AppealRequest.java index 1590820..482b914 100644 --- a/src/main/java/ru/soune/nocopy/dto/file/AppealRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/file/AppealRequest.java @@ -9,5 +9,4 @@ public class AppealRequest { private String fileId; private String appealReason; private String additionalInfo; - private String token; } diff --git a/src/main/java/ru/soune/nocopy/dto/monitoring/GetViolationsRequest.java b/src/main/java/ru/soune/nocopy/dto/monitoring/GetViolationsRequest.java index 9c9dda1..9cdc78c 100644 --- a/src/main/java/ru/soune/nocopy/dto/monitoring/GetViolationsRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/monitoring/GetViolationsRequest.java @@ -17,7 +17,4 @@ public class GetViolationsRequest { @JsonProperty("mark_as_read") private boolean markAsRead; - - @JsonProperty("auth_token") - private String authToken; } diff --git a/src/main/java/ru/soune/nocopy/handler/RegRequestHandler.java b/src/main/java/ru/soune/nocopy/handler/RegRequestHandler.java index 791d227..ea2aa35 100644 --- a/src/main/java/ru/soune/nocopy/handler/RegRequestHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/RegRequestHandler.java @@ -1,6 +1,7 @@ package ru.soune.nocopy.handler; import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -46,6 +47,8 @@ public class RegRequestHandler implements RequestHandler { private final JwtUtil jwtUtil; + private final HttpServletRequest httpServletRequest; + @Override public BaseResponse handle(BaseRequest request) throws ValidationException { RegRequest regRequest = objectMapper.convertValue(request.getMessageBody(), RegRequest.class); @@ -92,8 +95,9 @@ public class RegRequestHandler implements RequestHandler { } boolean verified = mailVerified.equals("true"); + Long createrId = (Long) httpServletRequest.getAttribute("userId"); - User user = userService.createUser(regRequest, verified); + User user = userService.createUser(regRequest, verified, createrId); EmailVerificationToken emailToken = emailService.createEmailVerificationToken(user); RegAnswer regAnswer = new RegAnswer(); diff --git a/src/main/java/ru/soune/nocopy/handler/ViolationNotionHandler.java b/src/main/java/ru/soune/nocopy/handler/ViolationNotionHandler.java index 749d148..eae4908 100644 --- a/src/main/java/ru/soune/nocopy/handler/ViolationNotionHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/ViolationNotionHandler.java @@ -9,12 +9,9 @@ import ru.soune.nocopy.dto.BaseRequest; import ru.soune.nocopy.dto.BaseResponse; import ru.soune.nocopy.dto.MessageCode; import ru.soune.nocopy.dto.violation.*; -import ru.soune.nocopy.entity.user.AuthToken; -import ru.soune.nocopy.repository.AuthTokenRepository; import ru.soune.nocopy.service.violation.ViolationNotionService; import java.util.List; -import java.util.Optional; @Slf4j @Component diff --git a/src/main/java/ru/soune/nocopy/service/FileSimilarityService.java b/src/main/java/ru/soune/nocopy/service/FileSimilarityService.java index b84261c..18ce025 100644 --- a/src/main/java/ru/soune/nocopy/service/FileSimilarityService.java +++ b/src/main/java/ru/soune/nocopy/service/FileSimilarityService.java @@ -20,7 +20,6 @@ import ru.soune.nocopy.repository.*; import ru.soune.nocopy.service.file.cloud.CloudStorageService; import ru.soune.nocopy.util.FileUtil; -import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.security.MessageDigest; @@ -38,8 +37,6 @@ public class FileSimilarityService { private final FileUtil fileUtil; - private final AuthTokenRepository authTokenRepository; - private final FileEntityRepository fileEntityRepository; private final CloudStorageService cloudStorageService; @@ -149,7 +146,7 @@ public class FileSimilarityService { String fileId, List similarityLevels, Pageable pageable, - String authToken) { + Long userId) { try { var imageHashEntity = hashRepository.findById(fileId) @@ -159,7 +156,6 @@ public class FileSimilarityService { List userIds; List candidates = repository.findCandidates(fileId); - Long userId = authTokenRepository.findUserIdByToken(authToken); User user = userRepository.findById(userId).orElseThrow(() -> new RuntimeException("User not found")); Company company = user.getCompany(); diff --git a/src/main/java/ru/soune/nocopy/service/user/UserService.java b/src/main/java/ru/soune/nocopy/service/user/UserService.java index 45569ed..0c59685 100644 --- a/src/main/java/ru/soune/nocopy/service/user/UserService.java +++ b/src/main/java/ru/soune/nocopy/service/user/UserService.java @@ -21,7 +21,6 @@ import ru.soune.nocopy.exception.CompanyAlreadyExist; import ru.soune.nocopy.exception.InvalidUserEmail; import ru.soune.nocopy.exception.NotValidationPasswordException; import ru.soune.nocopy.exception.UserNotFoundException; -import ru.soune.nocopy.repository.AuthTokenRepository; import ru.soune.nocopy.repository.CompanyRepository; import ru.soune.nocopy.repository.UserRepository; import ru.soune.nocopy.service.file.FileStatsService; @@ -44,7 +43,7 @@ public class UserService { private final TariffInfoService tariffInfoService; - private final AuthTokenRepository authTokenRepository; + private final UserService userService; @Transactional public User changePassword(User user, ChangePasswordRequest request) { @@ -99,7 +98,7 @@ public class UserService { } @Transactional - public User createUser(RegRequest registerRequest, boolean verified) { + public User createUser(RegRequest registerRequest, boolean verified, Long createrId) { User user = new User(); user.setFullName(registerRequest.getFullName()); user.setEmail(registerRequest.getEmail()); @@ -118,7 +117,7 @@ public class UserService { } else if (accountType == AccountType.B2C && registerRequest.getCompanyName() == null) { createIndividualAccount(user); } else { - createIndividualCompanyAccount(registerRequest, user); + createIndividualCompanyAccount(user, createrId); } if (registerRequest.getPhone() != null) { @@ -167,11 +166,9 @@ public class UserService { } - private void createIndividualCompanyAccount(RegRequest request, User user) { - String authToken = request.getAuthToken(); - Long userIdByToken = authTokenRepository.findUserIdByToken(authToken); - User companyUser = userRepository.findById(userIdByToken) - .orElseThrow(() -> new EntityNotFoundException("Not found token: " + authToken)); + private void createIndividualCompanyAccount(User user, Long companyUserId) { + User companyUser = userService.getUserById(companyUserId).orElseThrow(() -> + new EntityNotFoundException("Not found user id: " + companyUserId)); Company company = companyUser.getCompany(); if (company == null) {