diff --git a/app.js b/app.js
index 10fe7a4..82806d4 100644
--- a/app.js
+++ b/app.js
@@ -20,6 +20,7 @@ var uploadRouter = require('./routes/upload');
var userManagerRouter = require('./routes/usermanager');
var linkRouter = require('./routes/link');
var fileRouter = require("./routes/filemanager")
+var downloadRouter = require("./routes/download")
var app = express();
@@ -47,6 +48,7 @@ app.use('/upload', uploadRouter)
app.use('/usermanager', userManagerRouter)
app.use('/link', linkRouter)
app.use("/filemanager", fileRouter)
+app.use("/download", downloadRouter)
// catch 404 and forward to error handler
diff --git a/public/templates/files.html b/public/templates/files.html
index 8e55fca..5602d96 100644
--- a/public/templates/files.html
+++ b/public/templates/files.html
@@ -478,7 +478,7 @@
- fileExplorerList.push('
' + icon+ ' ' + file.name + '
Dernière édition : ' + lastedition + '
Taille : ' + file.size + ' octet(s)
')
+ fileExplorerList.push(' ' + icon+ ' ' + file.name + '
Dernière édition : ' + lastedition + '
Taille : ' + file.size + ' octet(s)
')
dialogExlorerList.push(' ')
}
@@ -568,6 +568,39 @@
})
+ } else {
+
+ const downloadBtn = document.getElementById(file.name + "_download")
+
+ downloadBtn.addEventListener("click", () => {
+
+ fiInfo.innerHTML = ""
+
+ fetch('/download', {
+ method: 'GET',
+ redirect: 'follow',
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ 'FileRequest': file.fileDirectory
+ }
+ }).then(resp => resp.blob())
+ .then(blob => {
+ const url = window.URL.createObjectURL(blob);
+ const a = document.createElement("a");
+ a.style.display = "none";
+ a.href = url;
+ a.download = file.name;
+ document.body.appendChild(a);
+ a.click();
+ window.URL.revokeObjectURL(url);
+
+ })
+ .catch(() => fiInfo.innerHTML = "Une erreur est survenue lors du téléchargement");
+
+
+
+ })
}
deleteBtn.addEventListener("click", () => {
diff --git a/routes/download.js b/routes/download.js
new file mode 100644
index 0000000..0f4e185
--- /dev/null
+++ b/routes/download.js
@@ -0,0 +1,48 @@
+var express = require('express');
+var router = express.Router();
+var ntr = require("../neutral-functions.js");
+var fs = require("fs")
+var path = require("path")
+
+router.get("/", function(req,res,next) {
+
+ var check = ntr.checkToken(req, res)
+
+ if(check.name != false) {
+
+
+
+ if(req.headers.filerequest != null && check.permLevel >= 3) {
+ if(fs.existsSync(req.headers.filerequest)) {
+
+ res.download(req.headers.filerequest, (error) => {
+
+ if(error) {
+
+ res.send({"result":"ERROR"})
+ }
+ })
+
+ } else {
+
+ res.send({"result":"ERROR"})
+ }
+
+
+ } else {
+
+ res.redirect("/")
+ }
+
+ } else {
+
+ res.render('login', {error: ""});
+ }
+
+
+
+
+})
+
+module.exports = router;
+
diff --git a/users/0cee5da6-6812-49d8-97f5-2df5c1d78191.json b/users/0cee5da6-6812-49d8-97f5-2df5c1d78191.json
index df029ad..a741a72 100644
--- a/users/0cee5da6-6812-49d8-97f5-2df5c1d78191.json
+++ b/users/0cee5da6-6812-49d8-97f5-2df5c1d78191.json
@@ -9,5 +9,5 @@
"livableToken": true,
"createdAt": 1679260759114
},
- "lastconnexion": 1679592206404
+ "lastconnexion": 1679594165151
}
\ No newline at end of file