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