NCBACK-162
Test Workflow / test (push) Has been cancelled

This commit is contained in:
2026-05-29 18:17:04 +07:00
parent bc26b39d86
commit 5e494ffc4b
60 changed files with 670 additions and 837 deletions
@@ -1,15 +1,14 @@
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;
import ru.soune.nocopy.dto.BaseRequest;
import ru.soune.nocopy.dto.BaseResponse;
import ru.soune.nocopy.dto.MessageCode;
import ru.soune.nocopy.dto.TokenProcessRequest;
import ru.soune.nocopy.exception.NotFoundAuthToken;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.util.JwtUtil;
import java.util.Map;
@@ -18,20 +17,19 @@ import java.util.Map;
@RequiredArgsConstructor
public class AuthRequestHandler implements RequestHandler {
private final ObjectMapper objectMapper;
private final HttpServletRequest httpServletRequest;
private final AuthService authService;
private final JwtUtil jwtUtil;
@Override
public BaseResponse handle(BaseRequest request) throws NotFoundAuthToken {
TokenProcessRequest tokenProcessRequest = objectMapper.convertValue(request.getMessageBody(),
TokenProcessRequest.class);
authService.useUserAuthToken(tokenProcessRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
String email = (String) httpServletRequest.getAttribute("email");
String token = jwtUtil.generateToken(userId, email);
return new BaseResponse(request.getMsgId(),
MessageCode.SUCCESS.getCode(),
"Token processed successfully",
Map.of("token", tokenProcessRequest.getToken()));
Map.of("token", token));
}
}
@@ -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.data.domain.PageRequest;
@@ -21,7 +22,6 @@ import ru.soune.nocopy.repository.FileEntityRepository;
import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.repository.ViolationRepository;
import ru.soune.nocopy.service.complaint.ComplaintEntityService;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.user.UserService;
import ru.soune.nocopy.service.violation.ViolationStatus;
@@ -39,21 +39,20 @@ public class ComplaintEntityHandler implements RequestHandler {
private final UserService userService;
private final AuthService authService;
private final FileEntityRepository fileEntityRepository;
private final ComplaintEntityRepository complaintEntityRepository;
private final ViolationRepository violationRepository;
private final HttpServletRequest httpServletRequest;
@Override
public BaseResponse handle(BaseRequest request) throws Exception {
Integer msgId = request.getMsgId();
ComplaintRequest complaintRequest = objectMapper.convertValue(request.getMessageBody(), ComplaintRequest.class);
String action = complaintRequest.getAction() == null ? "" : complaintRequest.getAction();
String token = complaintRequest.getToken();
Long userId = authService.useUserAuthToken(token);
Long userId = (Long) httpServletRequest.getAttribute("userId");
User user = userRepository.findById(userId).orElse(null);
if (user == null) {
@@ -61,7 +60,7 @@ public class ComplaintEntityHandler implements RequestHandler {
request.getMsgId(),
MessageCode.USER_NOT_FOUND.getCode(),
MessageCode.USER_NOT_FOUND.getDescription(),
Map.of("token: ", token));
Map.of("userId: ", userId));
}
List<String> emails = user.getCompany() == null ? List.of(user.getEmail()):
@@ -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;
@@ -9,12 +10,11 @@ import ru.soune.nocopy.dto.BaseResponse;
import ru.soune.nocopy.dto.MessageCode;
import ru.soune.nocopy.dto.cost.CostRequest;
import ru.soune.nocopy.dto.cost.CostResponse;
import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.repository.AuthTokenRepository;
import ru.soune.nocopy.service.cost.CostService;
import ru.soune.nocopy.service.user.UserService;
import java.util.Optional;
import java.util.Map;
@Slf4j
@Component
@@ -23,10 +23,12 @@ public class CostHandler implements RequestHandler {
private final CostService costService;
private final AuthTokenRepository authTokenRepository;
private final HttpServletRequest httpServletRequest;
private final ObjectMapper objectMapper;
private final UserService userService;
private final Integer MAX_FILES_FOR_CHECK = 1000;
@Override
@@ -64,18 +66,17 @@ public class CostHandler implements RequestHandler {
}
private BaseResponse handleCheckTokensForFilesProtect(CostRequest costRequest, BaseRequest request) {
String authToken = costRequest.getAuthToken();
Optional<AuthToken> token = authTokenRepository.findByToken(authToken);
Long userId = (Long) httpServletRequest.getAttribute("userId");
User user = userService.getUserById(userId).orElse(null);
if (token.isEmpty()) {
return new BaseResponse(
if (user == null) {
return new BaseResponse(
request.getMsgId(),
MessageCode.AUTH_TOKEN_NOT_FOUND.getCode(),
MessageCode.AUTH_TOKEN_NOT_FOUND.getDescription(),
null);
MessageCode.USER_NOT_FOUND.getCode(),
MessageCode.USER_NOT_FOUND.getDescription(),
Map.of("User: ", userId));
}
User user = token.get().getUser();
Integer tokens = user.getActiveTariffInfo().getTokens();
int cost = costService.protectFileCost(costRequest.getFileType());
@@ -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;
@@ -14,7 +15,6 @@ import ru.soune.nocopy.entity.file.FileEntity;
import ru.soune.nocopy.exception.NotFoundAuthToken;
import ru.soune.nocopy.service.dockview.DockViewService;
import ru.soune.nocopy.service.file.FileEntityService;
import ru.soune.nocopy.service.register.AuthService;
import java.util.Arrays;
import java.util.List;
@@ -28,10 +28,10 @@ public class DockViewFileHandler implements RequestHandler {
private final FileEntityService fileEntityService;
private final AuthService authService;
private final ObjectMapper objectMapper;
private final HttpServletRequest httpServletRequest;
@Override
public BaseResponse handle(BaseRequest request) throws Exception {
DocViewerRequest docViewerRequest = objectMapper.convertValue(request.getMessageBody(), DocViewerRequest.class);
@@ -55,7 +55,7 @@ public class DockViewFileHandler implements RequestHandler {
private BaseResponse handleGetHistory(BaseRequest request, DocViewerRequest docViewerRequest) {
try {
Long userId = authService.useUserAuthToken(docViewerRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
List<String> fileIds = fileEntityService.getAllUserFiles(userId)
.stream()
.filter(fileEntity -> fileEntity.getMimeType().equals("document"))
@@ -94,7 +94,7 @@ public class DockViewFileHandler implements RequestHandler {
private BaseResponse handleGetViewStats(BaseRequest request, DocViewerRequest docViewerRequest) {
try {
Long userId = authService.useUserAuthToken(docViewerRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
List<String> fileIds = fileEntityService.getAllUserFiles(userId)
.stream()
.filter(fileEntity -> fileEntity.getMimeType().equals("document"))
@@ -1,12 +1,10 @@
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.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import ru.soune.nocopy.dto.*;
@@ -14,13 +12,11 @@ import ru.soune.nocopy.dto.file.*;
import ru.soune.nocopy.entity.file.*;
import ru.soune.nocopy.entity.file.moderation.ModerationLog;
import ru.soune.nocopy.entity.file.permission.PermissionType;
import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity;
import ru.soune.nocopy.exception.*;
import ru.soune.nocopy.repository.*;
import ru.soune.nocopy.service.file.cloud.CloudStorageService;
import ru.soune.nocopy.service.file.moderation.ModerationService;
import ru.soune.nocopy.service.file.permission.FileAccessService;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.file.FileEntityService;
import ru.soune.nocopy.service.file.FileStatsService;
@@ -39,8 +35,6 @@ public class FileEntityHandler implements RequestHandler {
private final FileEntityService fileEntityService;
private final AuthService authService;
private final FileStatsService fileStatsService;
private final ObjectMapper objectMapper;
@@ -61,6 +55,8 @@ public class FileEntityHandler implements RequestHandler {
private final FileAccessService fileAccessService;
private final HttpServletRequest httpServletRequest;
@Override
public BaseResponse handle(BaseRequest request) {
try {
@@ -118,7 +114,7 @@ public class FileEntityHandler implements RequestHandler {
}
private BaseResponse handleGetFilesUserInfo(BaseRequest request, FileEntityRequest fileRequest) {
Long userId = authService.useUserAuthToken(fileRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
FileInfoUserResponse userFileStats = fileStatsService.getUserFileStats(userId);
return new BaseResponse(request.getMsgId(),
@@ -129,7 +125,7 @@ public class FileEntityHandler implements RequestHandler {
private BaseResponse handleGetFileInfo(BaseRequest request, FileEntityRequest fileRequest) {
try {
Long userId = authService.useUserAuthToken(fileRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
FileEntityResponse fileInfo = fileEntityService.getById(fileRequest.getFileId(), request.getVersion());
if (!fileInfo.getUserId().equals(userId)) {
@@ -160,7 +156,7 @@ public class FileEntityHandler implements RequestHandler {
private BaseResponse handleChangePermission(BaseRequest request, FileEntityRequest fileRequest) {
try {
Long userId = authService.useUserAuthToken(fileRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
FileEntityResponse fileInfo = fileEntityService.getById(fileRequest.getFileId(), request.getVersion());
if (!fileInfo.getUserId().equals(userId)) {
@@ -211,7 +207,7 @@ public class FileEntityHandler implements RequestHandler {
private BaseResponse handleGetFileBySession(BaseRequest request, FileEntityRequest fileRequest) {
try {
Long userId = authService.useUserAuthToken(fileRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
FileEntityResponse fileInfo = fileEntityService.getByUploadSessionId(fileRequest.getUploadSessionId(),
request.getVersion());
@@ -243,7 +239,7 @@ public class FileEntityHandler implements RequestHandler {
private BaseResponse handleGetUserFiles(BaseRequest request, FileEntityRequest fileRequest) {
try {
Long userId = authService.useUserAuthToken(fileRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
int page = fileRequest.getPage() != null ? fileRequest.getPage() : 1;
int pageSize = fileRequest.getPageSize() != null ? fileRequest.getPageSize() : 20;
@@ -270,7 +266,7 @@ public class FileEntityHandler implements RequestHandler {
private BaseResponse handleSearchFiles(BaseRequest request, FileEntityRequest fileRequest) {
try {
Long userId = authService.useUserAuthToken(fileRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
int page = fileRequest.getPage() != null ? fileRequest.getPage() : 1;
int pageSize = fileRequest.getPageSize() != null ? fileRequest.getPageSize() : 20;
@@ -509,7 +505,7 @@ public class FileEntityHandler implements RequestHandler {
private BaseResponse handleGetUserFilesWithSort(BaseRequest request, FileEntityRequest fileRequest,
String sortBy, SortOrder sortOrder) {
try {
Long userId = authService.useUserAuthToken(fileRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
int page = fileRequest.getPage() != null ? fileRequest.getPage() : 1;
int pageSize = fileRequest.getPageSize() != null ? fileRequest.getPageSize() : 20;
@@ -563,7 +559,7 @@ public class FileEntityHandler implements RequestHandler {
private BaseResponse handleGetStorageUsage(BaseRequest request, FileEntityRequest fileRequest) {
try {
Long userId = authService.useUserAuthToken(fileRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
long usage = fileEntityService.getUserStorageUsed(userId);
StorageUsageResponse response = StorageUsageResponse.builder()
@@ -674,7 +670,7 @@ public class FileEntityHandler implements RequestHandler {
private BaseResponse handleDeleteFile(BaseRequest request, FileEntityRequest fileRequest) {
try {
Long userId = authService.useUserAuthToken(fileRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
String fileId = fileRequest.getFileId();
FileEntityResponse fileInfo = fileEntityService.getById(fileId, request.getVersion());
DeleteFileResponse response;
@@ -764,7 +760,7 @@ public class FileEntityHandler implements RequestHandler {
private BaseResponse handleSubmitAppeal(BaseRequest request, FileEntityRequest fileRequest) {
try {
Long userId = authService.useUserAuthToken(fileRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
AppealRequest appealRequest = AppealRequest.builder()
.fileId(fileRequest.getFileId())
@@ -793,7 +789,7 @@ public class FileEntityHandler implements RequestHandler {
private BaseResponse handleGetUserAppeals(BaseRequest request, FileEntityRequest fileRequest) {
try {
Long userId = authService.useUserAuthToken(fileRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
int page = fileRequest.getPage() != null ? fileRequest.getPage() : 1;
int pageSize = fileRequest.getPageSize() != null ? fileRequest.getPageSize() : 20;
@@ -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.beans.factory.annotation.Value;
@@ -10,14 +11,11 @@ import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import ru.soune.nocopy.dto.*;
import ru.soune.nocopy.dto.file.*;
import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.entity.file.FileType;
import ru.soune.nocopy.entity.file.FileUploadSession;
import ru.soune.nocopy.exception.*;
import ru.soune.nocopy.handler.validator.FileUploadRequestValidator;
import ru.soune.nocopy.repository.AuthTokenRepository;
import ru.soune.nocopy.repository.FileUploadSessionRepository;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.file.FileUploadService;
import java.util.*;
@@ -29,16 +27,14 @@ import java.util.stream.Collectors;
public class FileUploadHandler implements RequestHandler {
private final FileUploadService fileUploadService;
private final AuthService authService;
private final AuthTokenRepository authTokenRepository;
private final FileUploadSessionRepository fileUploadSessionRepository;
private final ObjectMapper objectMapper;
private final FileUploadRequestValidator fileUploadRequestValidator;
private final HttpServletRequest httpServletRequest;
@Value("${file.storage.max-file-size}")
private long maxFileSize;
@@ -80,16 +76,7 @@ public class FileUploadHandler implements RequestHandler {
}
private BaseResponse handleInitUpload(BaseRequest request, FileUploadRequest fileRequest) {
String token = fileRequest.getToken();
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(token);
if (tokenOptional.isEmpty()) {
return new BaseResponse(request.getMsgId(), MessageCode.INVALID_TOKEN.getCode(),
MessageCode.INVALID_TOKEN.getDescription(), Map.of("token", token));
}
Long userId = authService.useUserAuthToken(token);
Long userId = (Long) httpServletRequest.getAttribute("userId");
BindingResult bindingResult = new BeanPropertyBindingResult(fileRequest, "fileRequest");
fileUploadRequestValidator.validate(fileRequest, bindingResult);
@@ -219,7 +206,6 @@ public class FileUploadHandler implements RequestHandler {
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
MessageCode.SUCCESS.getDescription(), response);
} catch (Exception e) {
log.error("Error getting file types", e);
return new BaseResponse(request.getMsgId(), MessageCode.FILE_UPLOAD_ERROR.getCode(),
@@ -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;
@@ -8,12 +9,8 @@ import ru.soune.nocopy.dto.BaseRequest;
import ru.soune.nocopy.dto.BaseResponse;
import ru.soune.nocopy.dto.search.GlobalSearchStatisticsRequest;
import ru.soune.nocopy.dto.search.GlobalSearchStatisticsResponse;
import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.repository.AuthTokenRepository;
import ru.soune.nocopy.service.search.GlobalSearchStatisticsService;
import java.util.Optional;
@Slf4j
@Component
@RequiredArgsConstructor
@@ -23,28 +20,17 @@ public class GlobalSearchHandler implements RequestHandler {
private final GlobalSearchStatisticsService statisticsService;
private final AuthTokenRepository authTokenRepository;
private final HttpServletRequest httpServletRequest;
@Override
public BaseResponse handle(BaseRequest request) throws Exception {
GlobalSearchStatisticsRequest statRequest = objectMapper.convertValue(
request.getMessageBody(), GlobalSearchStatisticsRequest.class);
if (statRequest.getToken() == null) {
throw new IllegalArgumentException("User token is required");
}
Long userId = (Long) httpServletRequest.getAttribute("userId");
Optional<AuthToken> tokenOptional =
authTokenRepository.findByToken(statRequest.getToken());
if (tokenOptional.isEmpty()) {
throw new IllegalArgumentException("User token is required");
}
Long userId = tokenOptional.orElseThrow().getUser().getId();
GlobalSearchStatisticsResponse statistics = statisticsService.getStatistics(
userId, statRequest.getLimit(), statRequest.getDays());
GlobalSearchStatisticsResponse statistics = statisticsService.getStatistics(userId, statRequest.getLimit(),
statRequest.getDays());
return BaseResponse.builder()
.msgId(request.getMsgId())
@@ -61,12 +61,6 @@ public class ImageFoundRequestHandler implements RequestHandler {
private final FileUploadService fileUploadService;
private final ImageHashService imageHashService;
private final ImageHashRepository imageHashRepository;
private final FileSimilarityService fileSimilarityService;
private final NoCopyFileService noCopyFileService;
@Override
@@ -2,6 +2,7 @@ package ru.soune.nocopy.handler;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.mail.MessagingException;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
@@ -24,7 +25,6 @@ import ru.soune.nocopy.exception.TariffNotFoundException;
import ru.soune.nocopy.exception.UserNotFoundException;
import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.complaint.LawCaseService;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.tariff.TariffConstants;
import ru.soune.nocopy.service.tariff.TariffInfoService;
import ru.soune.nocopy.service.violation.ViolationService;
@@ -41,8 +41,6 @@ public class LawCaseHandler implements RequestHandler {
private final LawCaseService lawCaseService;
private final AuthService authService;
private final ObjectMapper objectMapper;
private final UserRepository userRepository;
@@ -51,11 +49,13 @@ public class LawCaseHandler implements RequestHandler {
private final ViolationService violationService;
private final HttpServletRequest httpServletRequest;
@Override
public BaseResponse handle(BaseRequest request) throws Exception {
LawCaseRequest lawCaseRequest = objectMapper.convertValue(request.getMessageBody(),
LawCaseRequest.class);
Long userId = authService.useUserAuthToken(lawCaseRequest.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
String action = lawCaseRequest.getAction();
return switch (action) {
@@ -6,11 +6,10 @@ import org.springframework.stereotype.Component;
import ru.soune.nocopy.dto.*;
import ru.soune.nocopy.dto.register.LoginAnswer;
import ru.soune.nocopy.dto.register.LoginRequest;
import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.exception.NotValidFieldException;
import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.util.JwtUtil;
import java.util.Arrays;
import java.util.Map;
@@ -21,10 +20,10 @@ public class LoginRequestHandler implements RequestHandler {
private final UserRepository userRepository;
private final AuthService authService;
private final ObjectMapper objectMapper;
private final JwtUtil jwtUtil;
@Override
public BaseResponse handle(BaseRequest request) {
LoginRequest loginRequest = objectMapper.convertValue(request.getMessageBody(), LoginRequest.class);
@@ -60,14 +59,11 @@ public class LoginRequestHandler implements RequestHandler {
MessageCode.PERMISSION_NOT_FOUND.getDescription(), loginAnswer);
}
AuthToken authToken = authService.login(loginRequest);
String token = authToken.getToken();
String token = jwtUtil.generateToken(user.getId(), user.getEmail());
LoginAnswer loginAnswer = new LoginAnswer();
loginAnswer.setToken(token);
authService.useUserAuthToken(token);
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
MessageCode.SUCCESS.getDescription(), loginAnswer);
}
@@ -11,8 +11,6 @@ import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.exception.NotValidFieldException;
import ru.soune.nocopy.repository.AuthTokenRepository;
import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.register.AuthService;
import java.util.Objects;
import java.util.Optional;
@@ -20,8 +18,6 @@ import java.util.Optional;
@RequiredArgsConstructor
public class LogoutRequestHandler implements RequestHandler {
private final AuthService authService;
private final AuthTokenRepository authTokenRepository;
private final ObjectMapper objectMapper;
@@ -49,9 +45,6 @@ public class LogoutRequestHandler implements RequestHandler {
new LogoutRequest(logoutRequest.getEmail(), logoutRequest.getToken())));
}
authService.logout(logoutRequest.getToken());
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(), MessageCode.SUCCESS.getDescription(),
new LogOutAnswer(logoutRequest.getEmail()));
}
@@ -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;
@@ -10,11 +11,8 @@ import ru.soune.nocopy.dto.MessageCode;
import ru.soune.nocopy.dto.monitoring.MonitoringStatusResponse;
import ru.soune.nocopy.dto.monitoring.SetMonitoringRequest;
import ru.soune.nocopy.entity.monitoring.MonitoringType;
import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.exception.UserNotHavePermission;
import ru.soune.nocopy.service.monitoring.FileMonitoringService;
import ru.soune.nocopy.service.register.AuthService;
import java.io.FileNotFoundException;
import java.util.Arrays;
@@ -29,24 +27,14 @@ public class MonitoringHandler implements RequestHandler {
private final FileMonitoringService monitoringService;
private final AuthService authService;
private final HttpServletRequest httpServletRequest;
@Override
public BaseResponse handle(BaseRequest request) throws Exception {
SetMonitoringRequest setRequest = objectMapper.convertValue(
request.getMessageBody(), SetMonitoringRequest.class);
String authToken = setRequest.getAuthToken();
AuthToken userAuthToken = authService.getAuthToken(authToken);
if (authToken == null || userAuthToken == null) {
return new BaseResponse(30007, MessageCode.AUTH_TOKEN_NOT_FOUND.getCode(),
MessageCode.AUTH_TOKEN_NOT_FOUND.getDescription(),
Map.of("token", authToken));
}
User user = userAuthToken.getUser();
Long userId = user.getId();
Long userId = (Long) httpServletRequest.getAttribute("userId");
String typeStr = setRequest.getMonitoringType();
MonitoringType monitoringType;
@@ -64,7 +52,7 @@ public class MonitoringHandler implements RequestHandler {
} catch (UserNotHavePermission e) {
return new BaseResponse(request.getMsgId(),
MessageCode.USER_NOT_HAD_PERMISSION.getCode(),
MessageCode.USER_NOT_HAD_PERMISSION.getDescription(), Map.of("token", authToken));
MessageCode.USER_NOT_HAD_PERMISSION.getDescription(), Map.of("User id: ", userId));
} catch (FileNotFoundException e) {
return new BaseResponse(request.getMsgId(),
MessageCode.FILE_NOT_FOUND.getCode(),
@@ -1,20 +1,18 @@
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;
import ru.soune.nocopy.dto.BaseRequest;
import ru.soune.nocopy.dto.BaseResponse;
import ru.soune.nocopy.dto.MessageCode;
import ru.soune.nocopy.dto.statistic.MonitoringStatisticRequest;
import ru.soune.nocopy.dto.statistic.MonitoringStatisticResponse;
import ru.soune.nocopy.entity.company.Company;
import ru.soune.nocopy.entity.monitoring.MonitoringType;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.repository.FileMonitoringRepository;
import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.register.AuthService;
import java.util.List;
@@ -23,24 +21,19 @@ import java.util.List;
@RequiredArgsConstructor
public class MonitoringStatisticHandler implements RequestHandler {
private final ObjectMapper objectMapper;
private final AuthService authService;
private final FileMonitoringRepository fileMonitoringRepository;
private final UserRepository userRepository;
private final HttpServletRequest httpServletRequest;
@Override
public BaseResponse handle(BaseRequest request) throws Exception {
MonitoringStatisticRequest monitoringStatisticRequest = objectMapper.convertValue(request.getMessageBody(),
MonitoringStatisticRequest.class);
try {
String authToken = monitoringStatisticRequest.getAuthToken();
Long userId = authService.useUserAuthToken(authToken);
Long userId = (Long) httpServletRequest.getAttribute("userId");
User user = userRepository.findById(userId).orElseThrow();
Company company = user.getCompany();
List<Long> userIds = company == null ? List.of(userId) :
user.getCompany()
.getUsers()
@@ -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.data.domain.Page;
@@ -14,7 +15,7 @@ import com.fasterxml.jackson.databind.type.TypeFactory;
import ru.soune.nocopy.dto.notification.*;
import ru.soune.nocopy.entity.notification.Notification;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.user.UserService;
import java.util.Arrays;
import java.util.List;
@@ -31,7 +32,9 @@ public class NotificationHandler implements RequestHandler {
private final ObjectMapper objectMapper;
private final AuthService authService;
private final HttpServletRequest httpServletRequest;
private final UserService userService;
@Override
public BaseResponse handle(BaseRequest request) throws Exception {
@@ -56,7 +59,16 @@ public class NotificationHandler implements RequestHandler {
case "list": {
NotificationListRequest listRequest = objectMapper.convertValue(request.getMessageBody(),
NotificationListRequest.class);
User user = authService.getUser(listRequest.getAuthToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
User user = userService.getUserById(userId).orElse(null);
if (user == null) {
return new BaseResponse(
request.getMsgId(),
MessageCode.USER_NOT_FOUND.getCode(),
MessageCode.USER_NOT_FOUND.getDescription(),
Map.of("User:", userId));
}
Page<Notification> page = notificationService.getAllNotifications(
user,
@@ -87,7 +99,8 @@ public class NotificationHandler implements RequestHandler {
case "active": {
ActivateNotificationRequest activateRequest = objectMapper.convertValue(request.getMessageBody(),
ActivateNotificationRequest.class);
User user = authService.getUser(activateRequest.getAuthToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
User user = userService.getUserById(userId).orElse(null);
List<Notification> recent = notificationService.getActiveNotifications(user);
@@ -107,7 +120,8 @@ public class NotificationHandler implements RequestHandler {
case "markRead": {
MarkAsReadRequest markRequest = objectMapper.convertValue(request.getMessageBody(),
MarkAsReadRequest.class);
User user = authService.getUser(markRequest.getAuthToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
User user = userService.getUserById(userId).orElse(null);
int updated = notificationService.markAsRead(user, markRequest.getNotificationIds());
@@ -1,6 +1,7 @@
package ru.soune.nocopy.handler;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import ru.soune.ReferralInvitee;
@@ -11,8 +12,8 @@ import ru.soune.nocopy.dto.BaseRequest;
import ru.soune.nocopy.dto.BaseResponse;
import ru.soune.nocopy.dto.MessageCode;
import ru.soune.nocopy.dto.referral.ReferralRequest;
import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.repository.AuthTokenRepository;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.service.user.UserService;
import java.util.List;
import java.util.Map;
@@ -24,7 +25,9 @@ public class ReferralHandler implements RequestHandler {
private final ReferralService referralService;
private final AuthTokenRepository authTokenRepository;
private final HttpServletRequest httpServletRequest;
private final UserService userService;
private final ObjectMapper mapper = new ObjectMapper();
@@ -32,20 +35,28 @@ public class ReferralHandler implements RequestHandler {
public BaseResponse handle(BaseRequest request) throws Exception {
ReferralRequest referralRequest = mapper.convertValue(request.getMessageBody(), ReferralRequest.class);
String action = referralRequest.getAction();
String token = referralRequest.getToken();
AuthToken authToken = authTokenRepository.findByToken(token).orElseThrow();
Long userId = (Long) httpServletRequest.getAttribute("userId");
User user = userService.getUserById(userId).orElse(null);
if (user == null) {
return new BaseResponse(
request.getMsgId(),
MessageCode.USER_NOT_FOUND.getCode(),
MessageCode.USER_NOT_FOUND.getDescription(),
Map.of("User: ", userId));
}
switch (action) {
case "refill":
return handleRefill(request, authToken.getUser().getId(), referralRequest.getAmount());
return handleRefill(request, userId, referralRequest.getAmount());
case "levels":
return handleReferralLevels(request);
case "level":
return handleUserLevel(request, authToken.getUser().getId());
return handleUserLevel(request, userId);
case "userStats" :
return handleUserStats(request, authToken.getUser().getId());
return handleUserStats(request, userId);
case "invitees":
return handleInvitees(referralRequest, request, authToken.getUser().getId());
return handleInvitees(referralRequest, request, userId);
}
return null;
@@ -11,17 +11,17 @@ import ru.soune.nocopy.dto.*;
import ru.soune.nocopy.dto.register.RegAnswer;
import ru.soune.nocopy.dto.register.RegRequest;
import ru.soune.nocopy.entity.referral.Referral;
import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.entity.user.EmailVerificationToken;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.exception.CompanyAlreadyExist;
import ru.soune.nocopy.exception.NotValidFieldException;
import ru.soune.nocopy.exception.ValidationException;
import ru.soune.nocopy.handler.validator.RegRequestValidator;
import ru.soune.nocopy.repository.ReferralJpaRepository;
import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.mail.EmailService;
import ru.soune.nocopy.service.user.AdditionalInfoService;
import ru.soune.nocopy.service.user.UserService;
import ru.soune.nocopy.util.JwtUtil;
import java.util.Arrays;
import java.util.Map;
@@ -30,12 +30,10 @@ import java.util.Map;
@Component
@RequiredArgsConstructor
public class RegRequestHandler implements RequestHandler {
private final UserRepository userRepository;
private final UserService userService;
private final RegRequestValidator regRequestValidator;
private final AuthService authService;
private final ObjectMapper objectMapper;
private final EmailService emailService;
@@ -46,11 +44,13 @@ public class RegRequestHandler implements RequestHandler {
private final AdditionalInfoService additionalInfoService;
private final JwtUtil jwtUtil;
@Override
public BaseResponse handle(BaseRequest request) throws ValidationException {
RegRequest regRequest = objectMapper.convertValue(request.getMessageBody(), RegRequest.class);
try {
if (userRepository.existsByEmail(regRequest.getEmail()) || userRepository.existsByPhone(regRequest.getPhone())) {
if (userService.existsByEmailOrPhone(regRequest.getEmail(), regRequest.getPhone())) {
RegAnswer regAnswer = new RegAnswer();
regAnswer.setFieldErrors(Arrays.asList(Map.of("email", regRequest.getEmail())));
regAnswer.setFieldErrors(Arrays.asList(Map.of("phone", regRequest.getPhone())));
@@ -93,13 +93,14 @@ public class RegRequestHandler implements RequestHandler {
boolean verified = mailVerified.equals("true");
AuthToken authToken = authService.register(regRequest, verified);
EmailVerificationToken emailToken = emailService.createEmailVerificationToken(authToken);
User user = userService.createUser(regRequest, verified);
EmailVerificationToken emailToken = emailService.createEmailVerificationToken(user);
RegAnswer regAnswer = new RegAnswer();
if (verified) {
try {
emailService.sendVerificationEmail(authToken.getUser(), emailToken.getToken());
emailService.sendVerificationEmail(user, emailToken.getToken());
} catch (Exception e) {
return new BaseResponse(request.getMsgId(), MessageCode.SEND_EMAIL_EXCEPTION.getCode(),
MessageCode.SEND_EMAIL_EXCEPTION.getDescription(), Map.of(
@@ -111,23 +112,22 @@ public class RegRequestHandler implements RequestHandler {
regAnswer.setVerified(false);
regAnswer.setActive(false);
} else {
regAnswer.setUserId(authToken.getUser().getId());
regAnswer.setUserId(user.getId());
regAnswer.setVerified(true);
regAnswer.setActive(true);
}
String token = authToken.getToken();
authService.useUserAuthToken(token);
String token = jwtUtil.generateToken(user.getId(), user.getEmail());
regAnswer.setToken(token);
regAnswer.setUserId(authToken.getUser().getId());
regAnswer.setUserId(user.getId());
if (regRequest.getAccountType().equals("b2c")) {
referralService.onRegister(authToken.getUser().getId(), regRequest.getReferralLink());
referralService.onRegister(user.getId(), regRequest.getReferralLink());
}
additionalInfoService.additionalInfo(regRequest.getIp(), regRequest.getUserAgent(), authToken.getUser());
additionalInfoService.additionalInfo(regRequest.getIp(), regRequest.getUserAgent(), user);
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
MessageCode.SUCCESS.getDescription(), regAnswer);
@@ -11,21 +11,16 @@ import ru.soune.nocopy.dto.MessageCode;
import ru.soune.nocopy.dto.file.ActionResponse;
import ru.soune.nocopy.dto.register.ResetPasswordRequest;
import ru.soune.nocopy.dto.register.ResetPasswordResponse;
import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.entity.user.EmailVerificationToken;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.exception.NotValidFieldException;
import ru.soune.nocopy.exception.UserNotFoundException;
import ru.soune.nocopy.repository.AuthTokenRepository;
import ru.soune.nocopy.repository.EmailVerificationTokenRepository;
import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.mail.EmailService;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.util.JwtUtil;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Component
@Slf4j
@@ -36,35 +31,33 @@ public class ResetPasswordHandler implements RequestHandler{
private final EmailService emailService;
private final AuthService authService;
private final UserRepository userRepository;
private final EmailVerificationTokenRepository emailVerificationTokenRepository;
private final AuthTokenRepository authTokenRepository;
private final PasswordEncoder passwordEncoder;
private final JwtUtil jwtUtil;
@Override
public BaseResponse handle(BaseRequest request) throws Exception {
ResetPasswordRequest resetPasswordRequest = objectMapper.convertValue(request.getMessageBody(),
ResetPasswordRequest.class);
String action = resetPasswordRequest.getAction();
User user = userRepository.findByEmail(resetPasswordRequest.getEmail());
AuthToken authToken;
if (user == null) {
throw new UserNotFoundException("User not found with email: " + resetPasswordRequest.getEmail());
}
String authToken;
switch (action) {
case "resetPassword":
authToken = authService.generateAuthToken(user);
authToken = jwtUtil.generateToken(user.getId(), user.getEmail());
EmailVerificationToken emailToken = emailService.createEmailVerificationToken(authToken);
EmailVerificationToken emailToken = emailService.createEmailVerificationToken(user);
emailService.sendResetPasswordEmail(authToken.getUser(), emailToken.getToken());
emailService.sendResetPasswordEmail(user, emailToken.getToken());
return successResponse(request, authToken, user, MessageCode.SUCCESS.getDescription());
case "confirmVerification":
@@ -78,9 +71,7 @@ public class ResetPasswordHandler implements RequestHandler{
MessageCode.INVALID_TOKEN.getDescription(), Map.of("verifyToken", verifyToken));
}
List<AuthToken> authTokens = authTokenRepository.findByUserId(user.getId());
authToken = authTokens.isEmpty() ? authService.generateAuthToken(user): authTokens.getFirst();
authToken = jwtUtil.generateToken(user.getId(), user.getEmail());
user.setPassword(passwordEncoder.encode(resetPasswordRequest.getPassword()));
user.setActive(true);
@@ -102,9 +93,9 @@ public class ResetPasswordHandler implements RequestHandler{
}
}
private BaseResponse successResponse(BaseRequest request, AuthToken authToken, User user, String message) {
private BaseResponse successResponse(BaseRequest request, String authToken, User user, String message) {
ResetPasswordResponse resetPasswordResponse = new ResetPasswordResponse();
resetPasswordResponse.setAuthToken(authToken.getToken());
resetPasswordResponse.setAuthToken(authToken);
resetPasswordResponse.setUserId(user.getId());
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(), message, resetPasswordResponse);
@@ -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;
@@ -15,6 +16,7 @@ import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.repository.AuthTokenRepository;
import ru.soune.nocopy.service.tariff.TariffService;
import ru.soune.nocopy.service.user.UserService;
import java.util.List;
import java.util.Map;
@@ -28,7 +30,9 @@ public class TariffHandler implements RequestHandler {
private final TariffService tariffService;
private final AuthTokenRepository authTokenRepository;
private final UserService userService;
private final HttpServletRequest httpServletRequest;
@Override
public BaseResponse handle(BaseRequest request) throws Exception {
@@ -128,8 +132,16 @@ public class TariffHandler implements RequestHandler {
}
private BaseResponse handleGetTariffs(BaseRequest request, TariffRequest tariffRequest) {
AuthToken authToken = authTokenRepository.findByToken(tariffRequest.getUserToken()).orElseThrow();
User user = authToken.getUser();
Long userId = (Long) httpServletRequest.getAttribute("userId");
User user = userService.getUserById(userId).orElse(null);
if (user == null) {
return new BaseResponse(
request.getMsgId(),
MessageCode.USER_NOT_FOUND.getCode(),
MessageCode.USER_NOT_FOUND.getDescription(),
Map.of("User:", userId));
}
if (tariffRequest.getTariffTerm() == null || !TariffTimeTerm.validTerms().contains(
tariffRequest.getTariffTerm())) {
@@ -74,7 +74,7 @@ public class TariffInfoHandler implements RequestHandler {
private BaseResponse handleCreateTariffInfo(BaseRequest request, TariffInfoRequest tariffInfoRequest) {
try {
Long tariffId = tariffInfoRequest.getTariffId();
Tariff tariff= tariffRepository.findById(tariffId).orElseThrow();
Tariff tariff = tariffRepository.findById(tariffId).orElseThrow();
TariffTimeTerm tariffTerm = tariff.getTariffTerm();
LocalDateTime endDateTime = LocalDateTime.now().plusDays(tariffTerm.getDays());
@@ -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.data.domain.Page;
@@ -12,7 +13,6 @@ import ru.soune.nocopy.dto.tokenoperation.TokenOperationPageDto;
import ru.soune.nocopy.dto.tokenoperation.TokenOperationRequest;
import ru.soune.nocopy.entity.tokenoperation.OperationType;
import ru.soune.nocopy.entity.tokenoperation.TokenOperation;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.tokenoperation.TokenOperationService;
import java.util.HashMap;
@@ -26,7 +26,7 @@ public class TokenOperationHandler implements RequestHandler {
private final ObjectMapper objectMapper;
private final AuthService authService;
private final HttpServletRequest httpServletRequest;
@Override
public BaseResponse handle(BaseRequest request) throws Exception {
@@ -91,16 +91,7 @@ public class TokenOperationHandler implements RequestHandler {
}
private BaseResponse handleGetList(Integer msgId, TokenOperationRequest request) {
if (request.getToken() == null) {
return new BaseResponse(
msgId,
MessageCode.USER_NOT_FOUND.getCode(),
MessageCode.USER_NOT_FOUND.getDescription(),
Map.of("error", "User ID is required")
);
}
Long userId = authService.useUserAuthToken(request.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
try {
Page<TokenOperation> page = tokenOperationService.findByUserId(
@@ -189,16 +180,7 @@ public class TokenOperationHandler implements RequestHandler {
}
private BaseResponse handleCreate(Integer msgId, TokenOperationRequest request) {
if (request.getToken() == null) {
return new BaseResponse(
msgId,
MessageCode.AUTH_TOKEN_NOT_FOUND.getCode(),
MessageCode.AUTH_TOKEN_NOT_FOUND.getDescription(),
Map.of("error", "User ID is required")
);
}
Long userId = authService.useUserAuthToken(request.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
try {
TokenOperation operation = tokenOperationService.create(
@@ -316,16 +298,7 @@ public class TokenOperationHandler implements RequestHandler {
}
private BaseResponse handleDeleteAllByUser(Integer msgId, TokenOperationRequest request) {
if (request.getToken() == null) {
return new BaseResponse(
msgId,
MessageCode.AUTH_TOKEN_NOT_FOUND.getCode(),
MessageCode.AUTH_TOKEN_NOT_FOUND.getDescription(),
Map.of("error", "User ID is required")
);
}
Long userId = authService.useUserAuthToken(request.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
try {
tokenOperationService.deleteByUserId(userId);
@@ -350,16 +323,7 @@ public class TokenOperationHandler implements RequestHandler {
}
private BaseResponse handleGetStats(Integer msgId, TokenOperationRequest request) {
if (request.getToken() == null) {
return new BaseResponse(
msgId,
MessageCode.AUTH_TOKEN_NOT_FOUND.getCode(),
MessageCode.AUTH_TOKEN_NOT_FOUND.getDescription(),
Map.of("error", "User ID is required")
);
}
Long userId = authService.useUserAuthToken(request.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
if (userId == null) {
return new BaseResponse(
@@ -405,16 +369,7 @@ public class TokenOperationHandler implements RequestHandler {
}
private BaseResponse handleFilter(Integer msgId, TokenOperationRequest request) {
if (request.getToken() == null) {
return new BaseResponse(
msgId,
MessageCode.AUTH_TOKEN_NOT_FOUND.getCode(),
MessageCode.AUTH_TOKEN_NOT_FOUND.getDescription(),
Map.of("error", "User ID is required")
);
}
Long userId = authService.useUserAuthToken(request.getToken());
Long userId = (Long) httpServletRequest.getAttribute("userId");
try {
Page<TokenOperation> page = tokenOperationService.findByFilters(
@@ -10,22 +10,18 @@ import ru.soune.nocopy.dto.BaseResponse;
import ru.soune.nocopy.dto.MessageCode;
import ru.soune.nocopy.dto.register.RegAnswer;
import ru.soune.nocopy.dto.register.VerifyUserRequest;
import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.entity.user.EmailVerificationToken;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.exception.NotValidFieldException;
import ru.soune.nocopy.exception.UserNotFoundException;
import ru.soune.nocopy.repository.AuthTokenRepository;
import ru.soune.nocopy.repository.EmailVerificationTokenRepository;
import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.mail.EmailService;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.user.UserService;
import ru.soune.nocopy.util.JwtUtil;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Component
@Slf4j
@@ -41,9 +37,7 @@ public class VerifyRegisterUserHandler implements RequestHandler {
private final UserService userService;
private final AuthTokenRepository authTokenRepository;
private final AuthService authService;
private final JwtUtil jwtUtil;
@Override
public BaseResponse handle(BaseRequest request) throws MessagingException, IOException {
@@ -54,45 +48,37 @@ public class VerifyRegisterUserHandler implements RequestHandler {
User user = userRepository.findById(userId)
.orElseThrow(() -> new UserNotFoundException("User not found with id: " + userId));
List<AuthToken> userAuthTokens = authTokenRepository.findByUserId(userId);
AuthToken authToken = userAuthTokens.isEmpty() ? authService.generateAuthToken(user): userAuthTokens.getFirst();
if (verifyUserRequest.getResend() != null && verifyUserRequest.getResend() == 1) {
return handleResend(request, user, authToken);
return handleResend(request, user);
}
String authToken = jwtUtil.generateToken(user.getId(), user.getEmail());
return handleVerify(request, user, authToken, verifyUserRequest.getVerifyToken());
}
private BaseResponse handleResend(BaseRequest request, User user, AuthToken authToken) throws MessagingException, IOException {
private BaseResponse handleResend(BaseRequest request, User user) throws MessagingException, IOException {
EmailVerificationToken token = emailVerificationTokenRepository.findByUserId(user.getId());
// if (token != null && !token.isExpired()) {
// emailService.sendVerificationEmail(user, token.getToken());
//
// log.info("Verification token resent for user {}", user.getEmail());
// return successResponse(request, authToken, "Verification code has been resent", false,
// false, user.getEmail());
// }
if (token != null) {
emailVerificationTokenRepository.delete(token);
}
EmailVerificationToken newToken = emailService.createEmailVerificationToken(authToken);
EmailVerificationToken newToken = emailService.createEmailVerificationToken(user);
emailService.sendVerificationEmail(user, newToken.getToken());
log.info("New verification token generated for user {}", user.getEmail());
String authToken = jwtUtil.generateToken(user.getId(), user.getEmail());
return successResponse(request, authToken, "New verification code has been sent",
false, false, user.getEmail());
}
private BaseResponse handleVerify(BaseRequest request, User user, AuthToken authToken, String providedToken) {
private BaseResponse handleVerify(BaseRequest request, User user, String authToken, String providedToken) {
EmailVerificationToken token = emailVerificationTokenRepository.findByUserIdAndToken(user.getId(), providedToken);
@@ -110,10 +96,10 @@ public class VerifyRegisterUserHandler implements RequestHandler {
updateUser.isEmailVerified(), updateUser.getEmail());
}
private BaseResponse successResponse(BaseRequest request, AuthToken authToken, String message, boolean isActive,
private BaseResponse successResponse(BaseRequest request, String authToken, String message, boolean isActive,
boolean isVerified, String email) {
RegAnswer regAnswer = new RegAnswer();
regAnswer.setToken(authToken.getToken());
regAnswer.setToken(authToken);
regAnswer.setVerified(isVerified);
regAnswer.setActive(isActive);
regAnswer.setEmail(email);
@@ -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.data.domain.Page;
@@ -17,7 +18,6 @@ import ru.soune.nocopy.service.complaint.ComplaintEntityService;
import ru.soune.nocopy.service.complaint.LawCaseService;
import ru.soune.nocopy.service.file.FileEntityService;
import ru.soune.nocopy.service.geo.GeoCountryService;
import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.violation.ViolationService;
import ru.soune.nocopy.service.violation.ViolationStatus;
@@ -40,8 +40,6 @@ public class ViolationHandler implements RequestHandler {
private final FileEntityRepository fileRepository;
private final AuthService authService;
private final FileEntityService fileEntityService;
private final GeoCountryService geoCountryService;
@@ -50,6 +48,8 @@ public class ViolationHandler implements RequestHandler {
private final ComplaintEntityService complaintEntityService;
private final HttpServletRequest httpServletRequest;
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Override
@@ -57,9 +57,7 @@ public class ViolationHandler implements RequestHandler {
ViolationRequest violationRequest = objectMapper.convertValue(request.getMessageBody(), ViolationRequest.class);
validateRequest(violationRequest);
String token = violationRequest.getToken();
Long userId = authService.useUserAuthToken(token);
Long userId = (Long) httpServletRequest.getAttribute("userId");
List<FileEntity> targetFiles;
@@ -135,23 +133,6 @@ public class ViolationHandler implements RequestHandler {
.messageBody(groupedData)
.build();
} else {
// Page<Violation> violationPage;
//
// if (startDate != null && endDate != null) {
// violationPage = violationService.getViolationsByFilesAndDateRange(
// targetFiles, startDate, endDate,
// violationRequest.getPage(), violationRequest.getSize(), violationRequest.getSortDirection()
// );
// } else if (violationRequest.getStatus() != null && !violationRequest.getStatus().isEmpty()) {
// violationPage = violationService.getViolationsByFilesAndStatus(
// targetFiles, violationRequest.getStatus(),
// violationRequest.getPage(), violationRequest.getSize(), violationRequest.getSortDirection()
// );
// } else {
// violationPage = violationService.getViolationsByFiles(
// targetFiles, violationRequest.getPage(), violationRequest.getSize(),
// violationRequest.getSortDirection());
// }
Page<Violation> violationPage = violationService.getViolationsByFilesAndFilters(
targetFiles,
startDate,
@@ -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;
@@ -23,7 +24,7 @@ public class ViolationNotionHandler implements RequestHandler {
private final ViolationNotionService notionService;
private final AuthTokenRepository authTokenRepository;
private final HttpServletRequest httpServletRequest;
@Override
public BaseResponse handle(BaseRequest request) {
@@ -31,24 +32,7 @@ public class ViolationNotionHandler implements RequestHandler {
ViolationNotionRequest notionRequest = objectMapper.convertValue(
request.getMessageBody(), ViolationNotionRequest.class);
if (notionRequest.getToken() == null) {
return new BaseResponse(
request.getMsgId(),
MessageCode.INVALID_TOKEN.getCode(),
"Token is required",
"field: token");
}
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(notionRequest.getToken());
if (tokenOptional.isEmpty()) {
return new BaseResponse(
request.getMsgId(),
MessageCode.INVALID_TOKEN.getCode(),
"Invalid token",
notionRequest.getToken());
}
Long userId = tokenOptional.get().getUser().getId();
Long userId = (Long) httpServletRequest.getAttribute("userId");
String action = notionRequest.getAction();
if (action == null || action.trim().isEmpty()) {
@@ -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;
@@ -9,16 +10,13 @@ import ru.soune.nocopy.dto.BaseResponse;
import ru.soune.nocopy.dto.MessageCode;
import ru.soune.nocopy.dto.violation.ViolationStatisticsRequest;
import ru.soune.nocopy.dto.violation.ViolationStatisticsResponse;
import ru.soune.nocopy.entity.user.AuthToken;
import ru.soune.nocopy.exception.FileEntityNotFoundException;
import ru.soune.nocopy.exception.UserNotHavePermission;
import ru.soune.nocopy.repository.AuthTokenRepository;
import ru.soune.nocopy.service.violation.ViolationService;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Optional;
@Slf4j
@Component
@@ -28,7 +26,7 @@ public class ViolationStatisticsHandler implements RequestHandler {
private final ViolationService violationService;
private final AuthTokenRepository authTokenRepository;
private final HttpServletRequest httpServletRequest;
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@@ -37,8 +35,6 @@ public class ViolationStatisticsHandler implements RequestHandler {
ViolationStatisticsRequest statRequest = objectMapper.convertValue(request.getMessageBody(),
ViolationStatisticsRequest.class);
validateRequest(statRequest);
LocalDateTime startDate = null;
LocalDateTime endDate = null;
@@ -51,13 +47,7 @@ public class ViolationStatisticsHandler implements RequestHandler {
}
}
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(statRequest.getToken());
if (tokenOptional.isEmpty()) {
throw new IllegalArgumentException("User token is required");
}
Long userId = tokenOptional.orElseThrow().getUser().getId();
Long userId = (Long) httpServletRequest.getAttribute("userId");
ViolationStatisticsResponse statistics;
try {
@@ -91,12 +81,6 @@ public class ViolationStatisticsHandler implements RequestHandler {
.build();
}
private void validateRequest(ViolationStatisticsRequest request) {
if (request.getToken() == null) {
throw new IllegalArgumentException("Token is required");
}
}
private LocalDateTime parseDate(String dateStr) {
try {
return LocalDateTime.parse(dateStr, DATE_FORMATTER);
@@ -84,8 +84,4 @@ public class FileUploadRequestValidator implements Validator {
"Invalid file type. Valid types: " + Arrays.toString(FileType.values()));
}
}
private String getFileExtension(String fileName) {
return fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
}
}