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

Show shared files

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