-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathroutes.js
136 lines (110 loc) · 3.29 KB
/
routes.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
console.log("routes loaded");
var Account = require("./models/account.js");
var Message = require("./models/message.js");
var url = require("url");
module.exports = function(app,passport,io){
//check if logged in send to login if not else go to user
function checkAuth(req,res){
if(req.isAuthenticated())res.redirect("/user");
else res.redirect("/login");
}
function makeAccount(username,password,res){
Account.count({username:username},function(er,count){
if(!count==0){
res.send("username already exists");
return false;
}else{
newAccount = new Account();
newAccount.username = username;
newAccount.password = newAccount.generateHash(password);
newAccount.save();
res.send("new account created probably <a href = '/login'>login here</a>");
return true;
}
})
}
function tellUserToCheckForMessages(user){
for(sock in user2Sock[user]){
io.sockets.connected[sock].emit('newMessage',"nm");
}
}
function sendMessage(to,from,content){
newMessage = new Message();
newMessage.to = to;
newMessage.from = from;
newMessage.content = content;
newMessage.date = (new Date()).getTime();
newMessage.save(function(){
tellUserToCheckForMessages(to);
});
};
app.get("/",function(req,res){
checkAuth(req,res);
});
//login screen obviously
app.get("/login",function(req,res){
res.render("index");
});
//create session after login
app.post("/login",passport.authenticate("local"),function(req,res){
res.send(req.user.id + " has logged in <br><a href='/user'>user page</a>");
});
//create account
app.get("/signup",function(req,res){
res.render("signup");
})
app.post("/signup",function(req,res){
makeAccount(req.body.username,req.body.password,res);
});
//main page
app.get("/user",function(req,res){
if(req.isAuthenticated())res.render("user",{username:req.user.id});
else res.redirect("/login");
});
//get messages
app.get("/getAllMessages",function(req,res){
urlGetData = url.parse(req.url,true).query;
Message.find({to:req.user.id,date:{$gt:urlGetData.lastUpdateDate}},function(er,messages){
res.send(messages);
});
});
//get conversation
app.get("/getConversation",function(req,res){
urlGetData = url.parse(req.url,true).query;
Message.find({to:req.user.id,from:urlGetData.from},function(er,messages){
res.send(messages);
});
});
//send message
app.get("/sendMessage",function(req,res){
//checkAuth(req,res);
urlGetData = url.parse(req.url,true).query;
var to = urlGetData.to;//req.body.to;
var from = req.user.id;
var content = urlGetData.content;//req.body.content;
res.send(to + from + content);
sendMessage(to,from,content);
});
//adds a socket to chat object so server knows which socket is which username
app.get("/newChatListener",function(req,res){
if(typeof(req.user) == "undefined"){
res.send("nice try");
}else{
socketID = url.parse(req.url,true).query.socketid;
if(typeof(user2Sock[req.user.id]) == "undefined"){
user2Sock[req.user.id] = {};
}
user2Sock[req.user.id][socketID] = socketID;
sock2User[socketID] = req.user.id;
}
});
//logout
app.get("/logout",function(req,res){
req.logout();
res.redirect("/");
})
//javascript files
app.get("/javascript/chatLibrary.js",function(req,res){
res.sendfile("./views/javascript/chatLibrary.js");
});
}