From e86f0635c13c652fd2e479b5d09ab11516e8f17c Mon Sep 17 00:00:00 2001 From: adb Date: Sun, 8 Nov 2020 14:35:10 +0100 Subject: [PATCH] login backend --- api.js | 36 +++++++++++++++++++++++++----------- src/components/topBanner.vue | 4 +++- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/api.js b/api.js index 8321bf9..59f8f9d 100644 --- a/api.js +++ b/api.js @@ -23,22 +23,36 @@ const wss = new ws.Server({ //WS handler let user = []; wss.on('connection', (ws, req) => { + let thisuser = "" console.log(`${req.socket.remoteAddress} connected`) ws.on('message', msgJSON => { let msg = JSON.parse(msgJSON) console.log(`${req.socket.remoteAddress} => ${msgJSON}`) - if (msg.type === 'message') wss.clients.forEach(client => client.send(msgJSON)) + if (msg.type === 'message') + if (thisuser === ""){ + ws.send(JSON.stringify({type: "error", content: "please login before writing"})) + ws.send('{"type":"route","path":"/login"}') + }else if (msg.content.text === "") + ws.send(JSON.stringify({type: "error", content: "your message was empty"})) + else{ + msg.content.user = thisuser + wss.clients.forEach(client => { + if (client !== ws) client.send(JSON.stringify(msg))}) + } else if (msg.type === 'login' && msg.content.user !== ""){ - user.push(msg.content.user) - ws.send('{"type":"route","path":"/chat"}') - let msg = {type: "room", name: "open chat", user: user} - ws.send(JSON.stringify(msg)) + if (msg.content.user >= 20) ws.send(JSON.stringify({type: "error", content: "username is too long"})) + else if (function(){ + for (let i = 0; i < user.length; i++) if (user[i] === msg.content.user) return true + return false + }() === true) ws.send(JSON.stringify({type: "error", content: "username already exist"})) + else{ + thisuser = msg.content.user + user.push(msg.content.user) + ws.send('{"type":"route","path":"/chat"}') + wss.clients.forEach(client => + client.send(JSON.stringify({type: "room", name: "open chat", user: user}))) + } } }) - let msg = { - type: "info", - time: Date.now(), - content: "connected" - } - ws.send(JSON.stringify(msg)) + ws.send(JSON.stringify({type: "info", time: Date.now(), content: "connected"})) }) \ No newline at end of file diff --git a/src/components/topBanner.vue b/src/components/topBanner.vue index ed151e4..67bbe1f 100644 --- a/src/components/topBanner.vue +++ b/src/components/topBanner.vue @@ -1,7 +1,9 @@