Added repository methods for fetching all entries of table
- Added disabled attribute to FileUpload - Added disabled check to FileSecurityService
This commit is contained in:
parent
544523764b
commit
5df2e1a705
@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
@ -38,4 +39,17 @@ public class ExpiredFileUploadRepository {
|
|||||||
|
|
||||||
r.db("sharepulse").table("expired_file_uploads").insert(map).run(connection);
|
r.db("sharepulse").table("expired_file_uploads").insert(map).run(connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteExpiredFileUpload(FileUpload fileUpload) {
|
||||||
|
r.db("sharepulse").table("expired_file_uploads")
|
||||||
|
.filter(r.hashMap("fileId", fileUpload.getFileId()))
|
||||||
|
.delete()
|
||||||
|
.run(connection);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FileUpload> findAll() {
|
||||||
|
return r.db("sharepulse").table("expired_file_uploads")
|
||||||
|
.run(connection, FileUpload.class)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,8 @@ public class FileUploadRepository {
|
|||||||
.run(connection);
|
.run(connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<FileUpload> getAllExpiredFileUploads() {
|
// This query filters all file uploads that are older than 24 hours from the file_uplaods table (not the expired_file_uploads table)
|
||||||
|
public List<FileUpload> findAllExpiredActiveFileUploads() {
|
||||||
|
|
||||||
long timestamp = getOneMinuteAgoTimestamp();
|
long timestamp = getOneMinuteAgoTimestamp();
|
||||||
|
|
||||||
@ -89,6 +90,12 @@ public class FileUploadRepository {
|
|||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<FileUpload> findAll() {
|
||||||
|
return r.db("sharepulse").table("file_uploads")
|
||||||
|
.run(connection, FileUpload.class)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
private long get24HoursAgoTimestamp() {
|
private long get24HoursAgoTimestamp() {
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
calendar.add(Calendar.HOUR, -24);
|
calendar.add(Calendar.HOUR, -24);
|
||||||
|
@ -18,6 +18,7 @@ public class FileUpload {
|
|||||||
private String fileName;
|
private String fileName;
|
||||||
private long fileSize;
|
private long fileSize;
|
||||||
private boolean singleDownload;
|
private boolean singleDownload;
|
||||||
|
private boolean disabled;
|
||||||
@JsonFormat(timezone = "ETC")
|
@JsonFormat(timezone = "ETC")
|
||||||
private Date uploadDate;
|
private Date uploadDate;
|
||||||
private String uploadedByIpAddress;
|
private String uploadedByIpAddress;
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package de.w665.sharepulse.rest.mappings;
|
package de.w665.sharepulse.rest.mappings;
|
||||||
|
|
||||||
|
import de.w665.sharepulse.db.repo.FileUploadRepository;
|
||||||
|
import de.w665.sharepulse.model.FileUpload;
|
||||||
import de.w665.sharepulse.rest.SecureApiRestController;
|
import de.w665.sharepulse.rest.SecureApiRestController;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
@ -8,13 +10,28 @@ import org.springframework.http.ResponseEntity;
|
|||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
public class UploadHistory extends SecureApiRestController {
|
public class UploadHistory extends SecureApiRestController {
|
||||||
|
|
||||||
|
private final FileUploadRepository fileUploadRepository;
|
||||||
|
|
||||||
|
public UploadHistory(FileUploadRepository fileUploadRepository) {
|
||||||
|
this.fileUploadRepository = fileUploadRepository;
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/test")
|
@GetMapping("/test")
|
||||||
public ResponseEntity<Object> test(HttpServletRequest request) {
|
public ResponseEntity<Object> test(HttpServletRequest request) {
|
||||||
log.debug("Received test request");
|
log.debug("Received test request");
|
||||||
return ResponseEntity.ok("Test successful");
|
return ResponseEntity.ok("Test successful");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/upload-history")
|
||||||
|
public ResponseEntity<Object> getUploadHistory(HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
List<FileUpload> fileUploadList = fileUploadRepository.findAll();
|
||||||
|
log.debug("Received upload history request");
|
||||||
|
return ResponseEntity.ok(fileUploadList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ public class FileCleanupService {
|
|||||||
@Scheduled(cron = "0 0 * * * *")
|
@Scheduled(cron = "0 0 * * * *")
|
||||||
public void cleanup() {
|
public void cleanup() {
|
||||||
log.debug("Running cleanup...");
|
log.debug("Running cleanup...");
|
||||||
List<FileUpload> expFileUploads = fileUploadRepository.getAllExpiredFileUploads();
|
List<FileUpload> expFileUploads = fileUploadRepository.findAllExpiredActiveFileUploads();
|
||||||
for (FileUpload fileUpload : expFileUploads) {
|
for (FileUpload fileUpload : expFileUploads) {
|
||||||
fileService.deleteFile(fileUpload);
|
fileService.deleteFile(fileUpload);
|
||||||
expiredFileUploadRepository.insertExpiredFileUpload(fileUpload);
|
expiredFileUploadRepository.insertExpiredFileUpload(fileUpload);
|
||||||
|
@ -21,6 +21,9 @@ public class FileSecurityService {
|
|||||||
|
|
||||||
public boolean verifyDownloadPermission(FileUpload file, String password) throws NoDownloadPermissionException {
|
public boolean verifyDownloadPermission(FileUpload file, String password) throws NoDownloadPermissionException {
|
||||||
|
|
||||||
|
if(file.isDisabled()) {
|
||||||
|
throw new NoDownloadPermissionException("File download has been disabled.");
|
||||||
|
}
|
||||||
|
|
||||||
if (!file.isPasswordProtected() && !file.isSingleDownload()) {
|
if (!file.isPasswordProtected() && !file.isSingleDownload()) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -85,6 +85,7 @@ public class FileService {
|
|||||||
.fileName(file.getOriginalFilename())
|
.fileName(file.getOriginalFilename())
|
||||||
.fileSize(file.getSize())
|
.fileSize(file.getSize())
|
||||||
.singleDownload(singleDownload)
|
.singleDownload(singleDownload)
|
||||||
|
.disabled(false)
|
||||||
.uploadDate(new Date())
|
.uploadDate(new Date())
|
||||||
.uploadedByIpAddress(uploaderIp)
|
.uploadedByIpAddress(uploaderIp)
|
||||||
.downloadCount(0)
|
.downloadCount(0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user