diff --git a/home.html b/home.html index fdc9eb9..09012a7 100644 --- a/home.html +++ b/home.html @@ -169,13 +169,13 @@

loading

- + - + @@ -328,6 +328,7 @@

loading

+ diff --git a/index.html b/index.html index e766931..fa6e890 100644 --- a/index.html +++ b/index.html @@ -1 +1,65 @@ - \ No newline at end of file + + + + + + Login + + + + + + + + +
+ + +
+ + +

Login

+
+ + +
+ + + + + + + + + + + +
+ + +
+ + + + +
+ +
+
+ + +
+ +
+

Not registered with us?

Sign Up! +
+ + + + + + + + + \ No newline at end of file diff --git a/javascript/const.js b/javascript/const.js new file mode 100644 index 0000000..4e9b48d --- /dev/null +++ b/javascript/const.js @@ -0,0 +1 @@ +const socket = `ws://127.0.0.1:4000` \ No newline at end of file diff --git a/javascript/home.js b/javascript/home.js index 2650397..bcb558e 100644 --- a/javascript/home.js +++ b/javascript/home.js @@ -2,11 +2,13 @@ function encodeHTML(s) { return s.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '″').replace(/'/g, '′'); } -/*if (sessionStorage.getItem("id") == null || sessionStorage.getItem("id") == "" || sessionStorage.getItem("id") == "undefined") { +/*if (!sessionStorage.getItem("id")) { window.location.replace("./index.html"); }*/ -var conn = new WebSocket(`ws://localhost:4000?id=${1}`); +var id = sessionStorage.getItem("id") || 1 + +var conn = new WebSocket(`${socket}?id=${id}`); // Attach an error listener to the WebSocket object conn.addEventListener('error', function(event) { diff --git a/javascript/login.js b/javascript/login.js new file mode 100644 index 0000000..455d22f --- /dev/null +++ b/javascript/login.js @@ -0,0 +1,51 @@ +var conn = new WebSocket(socket); + +// Attach an error listener to the WebSocket object +conn.addEventListener('error', function(event) { + console.log('WebSocket error:', event); + console.log("error occours in conection"); + window.alert("There was an error in your conection to the server, or the devs forget to turn the server on..."); +}); + +conn.onmessage = function(e){ + + let data = JSON.parse(e.data); + + console.log(data) + + if (data.ctxStatus == "success") { + + sessionStorage.setItem("id", data.id); + sessionStorage.setItem("img", data.img); + window.location.replace("home.html"); + + } else { + + document.querySelector("#login").innerHTML = "wrong e-mail or password"; + } +}; + +function login(){ + + var email = document.getElementById("logMail").value; + var password = document.getElementById("logPass").value; + + if(email == "" || password == ""){ + + document.querySelector("#login").innerHTML = "fill all the fields"; + } else { + + conn.send(JSON.stringify({ + act:"register", + ctx:"login", + email: email, + password: password + })); + + //document.getElementById("login_msg").click(); + //window.location.replace("home.php"); + //console.log("log"); + } +} + +document.querySelector("#log").addEventListener("click", login ) \ No newline at end of file diff --git a/javascript/sign.js b/javascript/sign.js new file mode 100644 index 0000000..04df8b8 --- /dev/null +++ b/javascript/sign.js @@ -0,0 +1,44 @@ +var conn = new WebSocket(socket); + +// Attach an error listener to the WebSocket object +conn.addEventListener('error', function(event) { + console.log('WebSocket error:', event); + console.log("error occours in conection"); + window.alert("There was an error in your conection to the server, or the devs forget to turn the server on..."); +}); + +conn.onmessage = function(e){ + + let data = JSON.parse(e.data); + + console.log(data) + + if (data.status = "success") { + if(data.ctxStatus == "success"){ + document.querySelector("#sign").innerHTML = "Account created!"; + } else { + document.querySelector("#sign").innerHTML ="Email already regstered"; + } + } +}; + +function sign(){ + + var username = document.getElementById("signName").value; + var email = document.getElementById("signMail").value; + var password =document.getElementById("signPass").value; + + if(username=="" || email=="" || password==""){ + document.querySelector("#sign").innerHTML = "fill all the fields"; + } else { + conn.send(JSON.stringify({ + act:"register", + ctx:"sign", + email:email, + username:username, + password:password + })); + } +} + +document.querySelector("#action").addEventListener("click", sign ); \ No newline at end of file diff --git a/nodeSocket/Server.js b/nodeSocket/Server.js index d168044..9850ad2 100644 --- a/nodeSocket/Server.js +++ b/nodeSocket/Server.js @@ -2,8 +2,7 @@ const Ws = require("ws"); const dump = require('var_dump'); const url = require("node:url") -const message = require("./message.js"); -const user = require("./user.js"); +const handlers = require("./handlers.js") var mysql = require('./db.js'); mysql = mysql.getSql(); @@ -32,15 +31,15 @@ async function main() { Server.on("connection", async (ws, req) => { - ws.userId = url.parse(req.url, true).query.id; - users[ws.userId][0].Status = 'online'; - users[ws.userId][1] = ws - - //console.log(users[ws.userId][1].userId); + if(url.parse(req.url, true).query.id){ + ws.userId = url.parse(req.url, true).query.id; + users[ws.userId][0].Status = 'online'; + users[ws.userId][1] = ws - mysql.query(`UPDATE chat SET Status='online' WHERE id='${ws.userId}'`); + mysql.query(`UPDATE chat SET Status='online' WHERE id='${ws.userId}'`); + Loadusers(ws) + } - Loadusers(ws) ws.on("message", msg => { msg = JSON.parse(msg.toString('utf8')); @@ -49,39 +48,38 @@ async function main() { case "request": - requestHandler(msg, ws, users[msg.chat][0].Name); + handlers.requestHandler(msg, ws, users[msg.chat][0].Name); break; case "send": - - //console.log(msg.to) - //console.log(JSON.stringify(users[msg.to][1])) if (users[msg.to][1]){ var to = users[msg.to][1]; var isConn = true; - } else { - - var to = msg.to; - var isConn = false; } - messageHandler(msg, ws, to, isConn) + handlers.messageHandler(msg, ws, to || false, isConn || false) + break + + case "register": + + handlers.registerHandler(msg, ws) + break } }); - ws.on("close", ws => { - - //mysql.query(`UPDATE chat SET Status='offline' WHERE id='${query.id}'`); - - //users[ws.userId].Status = 'offline'; + ws.on("close", () => { + + if(ws.userId){ + mysql.query(`UPDATE chat SET Status='offline' WHERE id='${ws.userId}'`); + + users[ws.userId].Status = 'offline'; + } }) - - }); console.log("Server running on port 4000!") @@ -90,66 +88,6 @@ async function main() { main(); - -async function requestHandler(req, ws, chat) { - - var response; - - var ctx = req.ctx; - - switch (ctx) { - - case "msg": - - response = await message.getMessageArray(ws.userId, req.chat, 50); - - ws.send(JSON.stringify({ - act: "response", - ctx: "loadChat", - status: "success", - reqId: ws.userId, - chat: chat, - msgs: response - })) - - break; - - case "user": - - response = await user.getUserArray(ws.userId); - - ws.send({ - act:"response", - ctx:"" - }); - - break; - } - -} - -async function messageHandler(msg, from, to, conn){ - - if (conn){ - - var u = await message.sendMessage(msg) - } else { - - var u = await message.sendMessage(msg) - - if(u){ - from.send(JSON.stringify({ - act:"update", - ctx:"msg", - status:"success", - msg_id:u, - id:msg.msg_id, - ctxStatus:"success" - })); - } - } -} - async function Loadusers(ws){ var u = await user.getUserArray(ws.userId); @@ -159,7 +97,5 @@ async function Loadusers(ws){ ctx: "user", status: "success", users: u - })); - } \ No newline at end of file diff --git a/nodeSocket/handlers.js b/nodeSocket/handlers.js new file mode 100644 index 0000000..cf087a3 --- /dev/null +++ b/nodeSocket/handlers.js @@ -0,0 +1,87 @@ +const message = require("./message.js"); +const user = require("./user.js"); + +async function requestHandler(req, ws, chat) { + + var response; + var ctx = req.ctx; + + switch (ctx) { + + case "msg": + + response = await message.getMessageArray(ws.userId, req.chat, 50); + + ws.send(JSON.stringify({ + act: "response", + ctx: "loadChat", + status: "success", + reqId: ws.userId, + chat: chat, + msgs: response + })) + + break; + + case "user": + + response = await user.getUserArray(ws.userId, req); + + ws.send({ + act:"response", + ctx:"" + }); + + break; + } + +} + +async function messageHandler(msg, from, to, conn){ + + var u = await message.sendMessage(msg) + + if(u){ + from.send(JSON.stringify({ + act:"update", + ctx:"msg", + status:"success", + msg_id:u, + id:msg.msg_id, + ctxStatus:"success" + })); + } + + if (!conn || !to){ + return; + } else { + + to.send(JSON.stringify({ + act:"recieve", + ctx:"msg", + status:"success", + msg: req.msg, + from: req.user, + date: req.msg_date + })) + } +} + +async function registerHandler (req, ws){ + + if(req.ctx == "sign"){ + + user.sign(req, ws) + + } else if(req.ctx == "login") { + + user.login(req, ws) + } +} + + +module.exports = { + messageHandler: messageHandler, + requestHandler: requestHandler, + registerHandler: registerHandler +} \ No newline at end of file diff --git a/nodeSocket/user.js b/nodeSocket/user.js index 14fad34..d37c142 100644 --- a/nodeSocket/user.js +++ b/nodeSocket/user.js @@ -6,7 +6,7 @@ const message = require("./message.js"); async function getUserArray(id) { var r = await mysql.query(` - SELECT chat.* + SELECT Name, Status, grp, Image FROM chat INNER JOIN users_relation ON chat.id = users_relation.usr2 WHERE users_relation.usr1 = ${id};`); @@ -41,7 +41,65 @@ async function finalize(id, r){ return r; } +async function sign(req, ws){ + + let r = await mysql.query(`SELECT * FROM chat WHERE Email='${req.email}'`) + + if (r[0].length > 0) { + + ws.send(JSON.stringify({ + act:"register", + ctx:"sign", + status:"success", + ctxStatus:"fail" + })); + } else { + + await mysql.query(` + INSERT INTO chat + (Name, Email, Password, Private_key, Public_key, Status, grp) + VALUES + ('${req.username}', '${req.email}', '${req.password}', '1', '1', 'offline', 'no')`); + + ws.send(JSON.stringify({ + act:"register", + ctx:"sign", + status:"success", + ctxStatus:"success" + })); + } + + return; +} + +async function login(req, ws){ + + let r = await mysql.query(`SELECT * FROM chat WHERE Email = '${req.email}'`) + + if (r[0].length == 0 || r[0][0].Password != req.password){ + + ws.send(JSON.stringify({ + act:"register", + ctx:"login", + status:"success", + ctxStatus:"fail", + })) + } else { + + ws.send(JSON.stringify({ + act:"register", + ctx:"login", + status:"success", + ctxStatus:"success", + id: r[0][0].id, + img: r[0][0].Image, + username: r[0][0].Name + })) + } +} module.exports = { getUserArray: getUserArray, + sign: sign, + login: login }; diff --git a/sign.html b/sign.html index 34efb7b..d4fbf5a 100644 --- a/sign.html +++ b/sign.html @@ -58,45 +58,8 @@

Sign Up

+ + -