-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
88 lines (71 loc) · 2.31 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
const server = http.createServer(app);
const io = socketIo(server);
// Connect to MongoDB
mongoose.connect('mongodb+srv://mongodb.net', { useNewUrlParser: true, useUnifiedTopology: true });
const Message = mongoose.model('Message', { name: String, message: String, deleteKey: String });
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(express.static(__dirname));
// Define your message key and delete key
const MESSAGE_KEY = 'Urooj';
const DELETE_KEY = 'Shayan';
app.get('/messages', (req, res) => {
Message.find({}, (err, messages) => {
res.send(messages);
});
});
app.post('/messages', (req, res) => {
const receivedKey = req.body.key;
// Verify the message key before sending the message
if (receivedKey !== MESSAGE_KEY) {
return res.sendStatus(401); // Unauthorized
}
const message = new Message({
name: req.body.name,
message: req.body.message,
deleteKey: DELETE_KEY, // Assign delete key
});
message.save((err) => {
if (err) {
return res.sendStatus(500);
}
io.emit('message', {
_id: message._id,
name: req.body.name,
message: req.body.message,
deleteKey: DELETE_KEY, // Sending delete key to client
});
res.sendStatus(200);
});
});
app.delete('/messages/:id', async (req, res) => {
const messageId = req.params.id;
const receivedDeleteKey = req.body.deleteKey;
// Verify the delete key before allowing deletion
if (receivedDeleteKey !== DELETE_KEY) {
return res.sendStatus(401); // Unauthorized
}
try {
const deletedMessage = await Message.findByIdAndDelete(messageId);
if (!deletedMessage) {
return res.status(404).send("Message not found");
}
io.emit('messageDeleted', messageId);
res.sendStatus(204); // No content
} catch (error) {
console.error("Error deleting message:", error);
res.sendStatus(500);
}
});
io.on('connection', (socket) => {
console.log('User connected');
});
server.listen(3000, () => {
console.log('Server is running on port 3000');
});