Skip to content
Snippets Groups Projects
Commit ebe0acbb authored by nicolas.paschoud's avatar nicolas.paschoud
Browse files

Show shared files

parent 622233c7
No related branches found
No related tags found
No related merge requests found
...@@ -82,9 +82,6 @@ VALUES ...@@ -82,9 +82,6 @@ VALUES
("c", "e", "@dfsg"); ("c", "e", "@dfsg");
SELECT Paths.paths, login, parent, Files.file_id, Files.file_name SELECT pseudo_2, Files.file_id, Files.file_name
FROM Paths FROM Shares LEFT JOIN Files ON Shares.file_id=Files.file_id
LEFT JOIN Files ON Files.paths = Paths.paths WHERE pseudo_2='b';
WHERE Paths.login='a' \ No newline at end of file
AND Paths.paths='/a'
OR Paths.parent='/a';
\ No newline at end of file
function new_file(file_name, file_id) { function new_file(file_name, file_id, document_id) {
content = ` content = `
<div class="file" id="${file_id}"> <div class="file" id="${file_id}">
<p> <p>
...@@ -9,7 +9,7 @@ function new_file(file_name, file_id) { ...@@ -9,7 +9,7 @@ function new_file(file_name, file_id) {
</p> </p>
</div> </div>
` `
document.getElementById("content-drive").innerHTML += content; document.getElementById(document_id).innerHTML += content;
} }
function new_folder (folder_name, path) { function new_folder (folder_name, path) {
...@@ -37,6 +37,7 @@ lng: 6.1459 ...@@ -37,6 +37,7 @@ lng: 6.1459
login: "a" login: "a"
paths: "/a" paths: "/a"
*/ */
console.log(infos);
el.innerHTML = ` el.innerHTML = `
<p>File name : ${infos.file_name}</p> <p>File name : ${infos.file_name}</p>
<p>Path : ${infos.paths}</p> <p>Path : ${infos.paths}</p>
...@@ -46,5 +47,6 @@ paths: "/a" ...@@ -46,5 +47,6 @@ paths: "/a"
lng : ${infos.lng} lng : ${infos.lng}
</p> </p>
<p>Adresse : Mettre adresse avec gmap ou autre</p> <p>Adresse : Mettre adresse avec gmap ou autre</p>
<button onclick="download('${infos.file_id}')">Download</button>
`; `;
} }
\ No newline at end of file
...@@ -39,6 +39,12 @@ ...@@ -39,6 +39,12 @@
<h3>Infos</h3> <h3>Infos</h3>
<div id="info-content"> <div id="info-content">
</div>
</div>
<div id="shared">
<h3>Shared with me</h3>
<div id="shared-content">
</div> </div>
</div> </div>
</div> </div>
......
...@@ -14,10 +14,9 @@ function change_path(path) { ...@@ -14,10 +14,9 @@ function change_path(path) {
p = p.join("/"); p = p.join("/");
} }
appendLinkToParent(path, p); appendLinkToParent(path, p);
console.log(result);
for (let i in result){ for (let i in result){
if (result[i].file_id){ if (result[i].file_id){
new_file(result[i].file_name, result[i].file_id); new_file(result[i].file_name, result[i].file_id, "content-drive");
} else { } else {
if (path !== result[i].paths){ if (path !== result[i].paths){
let name = result[i].paths.split("/"); let name = result[i].paths.split("/");
...@@ -59,8 +58,7 @@ function login() { ...@@ -59,8 +58,7 @@ function login() {
function disconnect(){ function disconnect(){
$.ajax({url: 'logout?token=' + token, success: function(result){ $.ajax({url: 'logout?token=' + token, success: function(result){
my_login = username; token = null;
token = result.signedToken;
let el = document.getElementById("login-button"); let el = document.getElementById("login-button");
el.innerHTML = "Login"; el.innerHTML = "Login";
el.onclick = login; el.onclick = login;
...@@ -71,25 +69,29 @@ function disconnect(){ ...@@ -71,25 +69,29 @@ function disconnect(){
} }
function showSharedContent() { function showSharedContent() {
console.log("shared content"); let el = document.getElementById("shared-content");
let el = document.getElementById("shared"); $.ajax({url: '/show-shared-file?token=' + token,
success: function(result){
el.style.display = 'block'; console.log(result);
for (let i in result){
new_file(result[i].file_name, result[i].file_id, "shared-content");
}
}
});
} }
function newFolder() { function newFolder() {
let foldername = document.getElementById("foldername").value; let foldername = document.getElementById("foldername").value;
let path = document.getElementById("path-dir-drive").textContent; let path = document.getElementById("path-dir-drive").textContent;
console.log('create-path' + path + "/" + foldername); $.ajax({url: 'create-path' + path + "/" + foldername + '/' + token,
$.ajax({url: 'create-path' + path + "/" + foldername + '/' + token, success: function(result){ success: function(result){
change_path(path); change_path(path);
}}); }
});
} }
function newFile() { function newFile() {
filename = document.getElementById("filename").value; filename = document.getElementById("filename").value;
el = document.getElementById("share-section");
console.log(filename); console.log(filename);
} }
...@@ -100,3 +102,7 @@ function getInfo(file_id){ ...@@ -100,3 +102,7 @@ function getInfo(file_id){
} }
}); });
} }
function download(file_id){
console.log("Download : " + file_id);
}
\ No newline at end of file
...@@ -31,6 +31,12 @@ button:hover { ...@@ -31,6 +31,12 @@ button:hover {
float: left; float: left;
} }
#shared {
border: solid grey 2px;
width: 30%;
float: left;
}
.folder { .folder {
float: left; float: left;
} }
...@@ -48,7 +54,3 @@ button:hover { ...@@ -48,7 +54,3 @@ button:hover {
font-size: 10pt; font-size: 10pt;
text-align: center; text-align: center;
} }
\ No newline at end of file
/* #menu-more {
} */
\ No newline at end of file
"use strict";
const CryptoJS = require("crypto-js"); const CryptoJS = require("crypto-js");
const http = require("http"); const http = require("http");
...@@ -49,8 +50,8 @@ function Signature(token){ ...@@ -49,8 +50,8 @@ function Signature(token){
function JWT(pl_user, pl_pass){ function JWT(pl_user, pl_pass){
this.header = new Header("jwt", "HS512"); this.header = new Header("jwt", "HS512");
this.payload = new Payload(pl_user, pl_pass.hashCode()); this.payload = new Payload(pl_user, pl_pass.hashCode());
token = tob64(this.header) + "." + tob64(this.payload); let token = tob64(this.header) + "." + tob64(this.payload);
signature = new Signature("token"); let signature = new Signature("token");
this.signedToken = token + "." + signature; this.signedToken = token + "." + signature;
} }
...@@ -64,7 +65,7 @@ function add_token(token, user) { ...@@ -64,7 +65,7 @@ function add_token(token, user) {
break; break;
} }
} }
obj = {}; obj[token.toString()] = user; let obj = {}; obj[token.toString()] = user;
valid_tokens.push(obj); valid_tokens.push(obj);
console.log(valid_tokens) console.log(valid_tokens)
...@@ -133,7 +134,7 @@ function check_login(user, pass, userObject, res) { ...@@ -133,7 +134,7 @@ function check_login(user, pass, userObject, res) {
else{ else{
if (userObject){ if (userObject){
if (userObject.passwd == pass.hashCode()) { if (userObject.passwd == pass.hashCode()) {
jwt = new JWT(user, pass); let jwt = new JWT(user, pass);
res.send({ res.send({
"route": "/login", "route": "/login",
...@@ -166,7 +167,7 @@ function check_login(user, pass, userObject, res) { ...@@ -166,7 +167,7 @@ function check_login(user, pass, userObject, res) {
// resCode : [ 0: Token is valid, 1: Token is not valid, 3: Empty token ] // resCode : [ 0: Token is valid, 1: Token is not valid, 3: Empty token ]
app.get('/testmytoken', (req, res) => { app.get('/testmytoken', (req, res) => {
token = req.query['token']; let token = req.query['token'];
if (!token) { if (!token) {
res.send({ res.send({
...@@ -193,7 +194,7 @@ app.get('/testmytoken', (req, res) => { ...@@ -193,7 +194,7 @@ app.get('/testmytoken', (req, res) => {
// resCode : [ 0: Logout ok, 1: Already logged out, 3: Empty token ] // resCode : [ 0: Logout ok, 1: Already logged out, 3: Empty token ]
app.get('/logout/', (req, res) => { app.get('/logout/', (req, res) => {
token = req.query['token']; let token = req.query['token'];
if (!token) { if (!token) {
res.send({ res.send({
...@@ -240,13 +241,13 @@ app.get('/register/', (req, res) => { ...@@ -240,13 +241,13 @@ app.get('/register/', (req, res) => {
*/ */
app.get('/share/:file_id/:to_user', (req, res) => { app.get('/share/:file_id/:to_user', (req, res) => {
token = req.query["token"] let token = req.query["token"]
user = verify_token(token); let user = verify_token(token);
console.log("user : " + user) console.log("user : " + user)
if (req.params['to_user'] && req.params['file_id']){ if (req.params['to_user'] && req.params['file_id']){
to_user = req.params['to_user']; let to_user = req.params['to_user'];
file_id = req.params['file_id']; let file_id = req.params['file_id'];
sql.addSharing(user, to_user, file_id).then(function (r) { sql.addSharing(user, to_user, file_id).then(function (r) {
res.send(r); res.send(r);
}) })
...@@ -262,7 +263,6 @@ app.get('/share/:file_id/:to_user', (req, res) => { ...@@ -262,7 +263,6 @@ app.get('/share/:file_id/:to_user', (req, res) => {
app.get('/upload/', (req, res) => { app.get('/upload/', (req, res) => {
let d = new Date(); let d = new Date();
let date_upload = d.getTime(); let date_upload = d.getTime();
filename = req.query['']
// "abcd", "un", "/a", 46.2054, 6.1459, date_upload // "abcd", "un", "/a", 46.2054, 6.1459, date_upload
http.get('http://bot.whatismyipaddress.com', (res) => { http.get('http://bot.whatismyipaddress.com', (res) => {
...@@ -287,10 +287,10 @@ app.get('/upload/', (req, res) => { ...@@ -287,10 +287,10 @@ app.get('/upload/', (req, res) => {
}); });
app.get('/download/:file_id', (req, res) => { app.get('/download/:file_id', (req, res) => {
token = req.query["token"] let token = req.query["token"]
file_id = req.params["file_id"] let file_id = req.params["file_id"]
user = verify_token(token); let user = verify_token(token);
if (user){ if (user){
sql.verifyFileID(user, file_id, (filename) => { sql.verifyFileID(user, file_id, (filename) => {
console.log(filename) console.log(filename)
...@@ -318,7 +318,7 @@ app.get('/change-path*', (req, res) => { ...@@ -318,7 +318,7 @@ app.get('/change-path*', (req, res) => {
let tok = req.params['0'].split("/").pop(); let tok = req.params['0'].split("/").pop();
let name = verify_token(tok); let name = verify_token(tok);
if (name) { if (name) {
content = sql.changeDirectory(name, path, let content = sql.changeDirectory(name, path,
(content) => { (content) => {
res.send(content); res.send(content);
}); });
...@@ -355,6 +355,7 @@ app.get('/get-info', (req, res) => { ...@@ -355,6 +355,7 @@ app.get('/get-info', (req, res) => {
let token = req.query["token"]; let token = req.query["token"];
let file_id = req.query["file_id"]; let file_id = req.query["file_id"];
let name = verify_token(token); let name = verify_token(token);
console.log(token);
if (name){ if (name){
sql.getInfo(file_id, name, (resp, msg) => { sql.getInfo(file_id, name, (resp, msg) => {
res.send(resp); res.send(resp);
...@@ -362,5 +363,26 @@ app.get('/get-info', (req, res) => { ...@@ -362,5 +363,26 @@ app.get('/get-info', (req, res) => {
} }
}); });
app.get('/show-shared-file', (req, res) => {
let token = req.query["token"];
let name = verify_token(token);
if (name){
sql.getSharedFile(name, (result) => {
if (result){
let content = [];
for (let i in result){
console.log(result[i]);
content.push({
login: result[i].pseudo_2,
file_id: result[i].file_id,
file_name: result[i].file_name
});
}
res.send(content);
}
});
}
});
app.use(express.static('front')); app.use(express.static('front'));
app.listen(port, () => console.log(`Hyperdrive listening on port ${port}!`)) app.listen(port, () => console.log(`Hyperdrive listening on port ${port}!`))
...@@ -18,7 +18,10 @@ var con = mysql.createConnection({ ...@@ -18,7 +18,10 @@ var con = mysql.createConnection({
function userExist(login, pass, callback){ function userExist(login, pass, callback){
const q = `SELECT login, passwd FROM Users WHERE login='${login}' AND passwd='${pass}';`; const q = `SELECT login, passwd FROM Users WHERE login='${login}' AND passwd='${pass}';`;
con.query(q, function (err, result) { con.query(q, function (err, result) {
if (err) return false; if (err) {
console.log(err);
return false;
}
if (result.length > 0) { if (result.length > 0) {
console.log("user exists"); console.log("user exists");
return callback({ return callback({
...@@ -43,7 +46,10 @@ function insertUser(login, passwd, callback){ ...@@ -43,7 +46,10 @@ function insertUser(login, passwd, callback){
userExist(login, passwd, (userExist) => { userExist(login, passwd, (userExist) => {
if (!userExist){ if (!userExist){
con.query(q, (err, res) => { con.query(q, (err, res) => {
if (err) return callback(false); if (err) {
console.log(err);
return callback(false);
}
if (!res) {console.log(res);return callback(false);} if (!res) {console.log(res);return callback(false);}
console.log("User", login, "inserted in the db"); console.log("User", login, "inserted in the db");
return callback(true); return callback(true);
...@@ -187,7 +193,6 @@ async function verifyFileID(login, file_id, callback){ ...@@ -187,7 +193,6 @@ async function verifyFileID(login, file_id, callback){
return callback(false); return callback(false);
} }
console.log(res)
if (res.length > 0) if (res.length > 0)
filename = res[0].file_name; filename = res[0].file_name;
else else
...@@ -204,23 +209,40 @@ function createPath(path, user, callback) { ...@@ -204,23 +209,40 @@ function createPath(path, user, callback) {
q = `INSERT INTO Paths VALUES ('${path}', '${user}', ${parent})`; q = `INSERT INTO Paths VALUES ('${path}', '${user}', ${parent})`;
con.query(q, (err, resp) => { con.query(q, (err, resp) => {
if (err) return callback(false, err); if (err) {
console.log("Error while inserting Paths");
return callback(false, err);
}
return callback(true, resp); return callback(true, resp);
}); });
} }
/** /**
* * Get information about a file
* @param {string} file_id * @param {string} file_id Id of the file
* @param {string} login * @param {string} login Owner of the file
* @param {function} callback callback function * @param {function} callback callback function
*/ */
function getInfo(file_id, login, callback){ function getInfo(file_id, login, callback){
const q = `SELECT * FROM Files WHERE file_id='${file_id}' AND login='${login}';`; const q = `SELECT * FROM Files WHERE file_id='${file_id}';`;
con.query(q, (err, resp) => { con.query(q, (err, resp) => {
if (err) return callback(false, err); if (err) return callback(false, err);
console.log(resp); return callback(resp, resp);
});
}
function getSharedFile(user, callback){
const q = `
SELECT pseudo_2, Files.file_id, Files.file_name
FROM Shares LEFT JOIN Files ON Shares.file_id=Files.file_id
WHERE pseudo_2='${user}';`;
con.query(q, (err, resp) => {
if (err) {
console.log(err);
return callback(false, err);
}
console.log("Select ok");
return callback(resp, resp); return callback(resp, resp);
}); });
} }
...@@ -233,3 +255,4 @@ exports.changeDirectory = changeDirectory; ...@@ -233,3 +255,4 @@ exports.changeDirectory = changeDirectory;
exports.createPath = createPath; exports.createPath = createPath;
exports.verifyFileID = verifyFileID; exports.verifyFileID = verifyFileID;
exports.getInfo = getInfo; exports.getInfo = getInfo;
exports.getSharedFile = getSharedFile;
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment