diff --git a/src/main/java/org/rostislav/quickdrop/controller/FileViewController.java b/src/main/java/org/rostislav/quickdrop/controller/FileViewController.java index 7a9d767..ce8b4a0 100644 --- a/src/main/java/org/rostislav/quickdrop/controller/FileViewController.java +++ b/src/main/java/org/rostislav/quickdrop/controller/FileViewController.java @@ -135,8 +135,22 @@ public class FileViewController { } @PostMapping("/keep-indefinitely/{id}") - public String updateKeepIndefinitely(@PathVariable Long id, @RequestParam(required = false, defaultValue = "false") boolean keepIndefinitely, HttpServletRequest request) { + public String updateKeepIndefinitely(@PathVariable Long id, @RequestParam(required = false, defaultValue = "false") boolean keepIndefinitely, HttpServletRequest request, Model model) { + // Check for admin password if (!applicationSettingsService.checkForAdminPassword(request)) { + // Check for file password + String filePassword = (String) request.getSession().getAttribute("password"); + if (filePassword != null) { + FileEntity fileEntity = fileService.getFile(id); + // Check if file password is correct + if (fileEntity.passwordHash != null && !fileService.checkPassword(fileEntity.uuid, filePassword)) { + model.addAttribute("uuid", fileEntity.uuid); + return "file-password"; + } + // Redirect to file page + fileService.updateKeepIndefinitely(id, keepIndefinitely); + return "redirect:/file/" + fileEntity.uuid; + } return "redirect:/admin/password"; } diff --git a/src/main/java/org/rostislav/quickdrop/service/FileService.java b/src/main/java/org/rostislav/quickdrop/service/FileService.java index 28348e1..db6c184 100644 --- a/src/main/java/org/rostislav/quickdrop/service/FileService.java +++ b/src/main/java/org/rostislav/quickdrop/service/FileService.java @@ -277,6 +277,10 @@ public class FileService { return; } + if (!keepIndefinitely) { + extendFile(id); + } + FileEntity fileEntity = referenceById.get(); fileEntity.keepIndefinitely = keepIndefinitely; logger.info("File keepIndefinitely updated: {}", fileEntity); diff --git a/src/main/resources/templates/fileView.html b/src/main/resources/templates/fileView.html index 28434af..795dbbc 100644 --- a/src/main/resources/templates/fileView.html +++ b/src/main/resources/templates/fileView.html @@ -79,11 +79,22 @@ Files are kept only for 30 days after this date.