From 6ef3788089fbc77009e81c52b0a1a12b1abfd74e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?No=C3=A9=20Fleury?= <noe.fleury@etu.hesge.ch>
Date: Wed, 18 Dec 2019 13:18:25 +0100
Subject: [PATCH] Possibility to download files / Added files for example

---
 projet/db/hyperdrive.sql  |  4 ++--
 projet/files/liblb        |  1 +
 projet/files/sdfa         |  1 +
 projet/hyperdrive-rest.js | 23 ++++++++++++++++++++++-
 projet/sql-request.js     | 21 ++++++++++++++++++++-
 5 files changed, 46 insertions(+), 4 deletions(-)
 create mode 100644 projet/files/liblb
 create mode 100644 projet/files/sdfa

diff --git a/projet/db/hyperdrive.sql b/projet/db/hyperdrive.sql
index e9cb9e1..7e5e895 100644
--- a/projet/db/hyperdrive.sql
+++ b/projet/db/hyperdrive.sql
@@ -68,8 +68,8 @@ VALUES
     ("@dfsg", "trois", "/c/test", 46.2054, 6.1459),
     ("gbvaf", "quatre", "/b", 46.2054, 6.1459),
     ("dsfgh", "cinq", "/d", 46.2054, 6.1459),
-    ("sdfa", "six", "/e", 46.2054, 6.1459),
-    ("liblb", "myfile", "/n", 46.2054, 6.1459);
+    ("sdfa", "six.txt", "/e", 46.2054, 6.1459),
+    ("liblb", "myfile.txt", "/n", 46.2054, 6.1459);
 
 INSERT INTO Shares
 VALUES
diff --git a/projet/files/liblb b/projet/files/liblb
new file mode 100644
index 0000000..1eeed5e
--- /dev/null
+++ b/projet/files/liblb
@@ -0,0 +1 @@
+coucou nicolas
diff --git a/projet/files/sdfa b/projet/files/sdfa
new file mode 100644
index 0000000..d17bdc9
--- /dev/null
+++ b/projet/files/sdfa
@@ -0,0 +1 @@
+nothing to see here..
diff --git a/projet/hyperdrive-rest.js b/projet/hyperdrive-rest.js
index ec568e8..2274d39 100644
--- a/projet/hyperdrive-rest.js
+++ b/projet/hyperdrive-rest.js
@@ -281,7 +281,28 @@ app.get('/upload/', (req, res) => {
 })
 
 app.get('/download/:file_id', (req, res) => {
-    res.send(`Request for a download (${req.params['file_id']})`)
+    // res.send(`Request for a download (${req.params['file_id']})`)
+
+    token = req.query["token"]
+    file_id = req.params["file_id"]
+
+    user = verify_token(token);
+    if (user){
+        sql.verifyFileID(user, file_id, (filename) => {
+            console.log(filename)
+            if (filename){
+                res.download("files/" + file_id, filename);
+            }
+            else{
+                res.send("Can't download (not your file).")
+            }
+        })
+    }
+    else{
+        res.send("Can't download (please be connected).")
+    }
+    
+    
 })
 
 /**
diff --git a/projet/sql-request.js b/projet/sql-request.js
index e6ca52e..e4120b7 100644
--- a/projet/sql-request.js
+++ b/projet/sql-request.js
@@ -193,7 +193,25 @@ async function addSharing(login, to_user, file_id){
     else{
         return "Unable to share, this is not your file.";
     }
-    
+}
+
+async function verifyFileID(login, file_id, callback){
+    let q = `SELECT (file_name) FROM Files as F LEFT JOIN Paths as P ON F.paths = P.paths WHERE F.file_id = '${file_id}' AND P.login = '${login}';`
+
+    con.query(q, (err, res) => {
+        if (err) { 
+            console.log("Error while verifying file_id");
+            return callback(false);
+        }
+
+        console.log(res)
+        if (res.length > 0)
+            filename = res[0].file_name;
+        else
+            filename = false;
+
+        return callback(filename);
+    });
 
 }
 
@@ -202,3 +220,4 @@ exports.addUser = addUser;
 exports.addPath = addPath;
 exports.addSharing = addSharing;
 exports.changeDirectory = changeDirectory;
+exports.verifyFileID = verifyFileID;
-- 
GitLab