Advertisement
Guest User

memechat v0.1

a guest
Apr 17th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var express = require('express');
  2. var cookieSession = require('cookie-session')
  3. var app = express();
  4. var bodyParser = require('body-parser');
  5. app.use(bodyParser.json()); // support json encoded bodies
  6. app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
  7. var server = require('http').createServer(app);
  8. var io = require('socket.io').listen(server);
  9. var bcrypt = require('bcryptjs');
  10. var mysql = require('mysql');
  11.  
  12. app.set('trust proxy', 1)
  13.  
  14. app.use(cookieSession({
  15.     name: 'session',
  16.     keys: ['key1', 'key2']
  17. }))
  18.  
  19. var connection = mysql.createConnection({
  20.     host     : 'localhost',
  21.     user     : 'root',
  22.     password : '',
  23.     database : 'chatapp'
  24. });
  25.  
  26. /* INSERT INTO DATABASE
  27. bcrypt.genSalt(10, function(err, salt) {
  28.     bcrypt.hash("B4c0/\/", salt, function(err, hash) {
  29.         connection.query("INSERT INTO users (username, password) VALUES ('"+username+"', '"+hashedPassword+"')", hash, function(err, rows, fields) {
  30.             if(err) throw err
  31.         });
  32.         connection.end();
  33.     });
  34. });
  35.  
  36. */
  37.  
  38. server.listen(process.env.PORT || 3000);
  39. console.log('Server running...');
  40.  
  41. function checkAuth(req, res, next) {
  42.     if (!req.session.user_id) {
  43.         res.redirect('/login');
  44.     }
  45.     else {
  46.         next();
  47.     }
  48. }
  49.  
  50. app.get('/', checkAuth, function(req, res){
  51.     res.sendFile(__dirname + '/index.html');
  52. });
  53.  
  54. app.get('/login', function(req, res){
  55.     if (req.session.user_id) {
  56.         res.redirect('/');
  57.     }
  58.     else {
  59.         res.sendFile(__dirname + '/login.html');
  60.     }
  61. });
  62.  
  63. app.get('/register', function(req, res){
  64.     if (req.session.user_id) {
  65.         res.redirect('/');
  66.     }
  67.     else {
  68.         res.sendFile(__dirname + '/register.html');
  69.     }
  70. });
  71.  
  72. app.post('/login', function(req, res){
  73.     var post = req.body;
  74.     connection.query("SELECT * FROM users WHERE username='"+post.username+"'", function (err, rows, fields) {
  75.         if(err) throw err
  76.         if(rows[0]) {
  77.             bcrypt.compare(post.password, rows[0].password, function(err, correct) {
  78.                 if (correct === true) {
  79.                     req.session.user_id = rows[0].id;
  80.                     res.redirect('/');
  81.                 }
  82.                 else {
  83.                     res.redirect('/login');
  84.                 }
  85.             });
  86.         }
  87.         else {
  88.             res.redirect('/login');
  89.         }
  90.     })
  91. });
  92.  
  93. app.post('/register', function(req, res){
  94.     var post = req.body;
  95.     if (post.username === '' || post.password === '' || post.verifyPassword === '') {
  96.         res.redirect('/register');
  97.     }
  98.     else if (post.password != post.verifyPassword) {
  99.         res.redirect('/register');
  100.     }
  101.     else {
  102.         bcrypt.genSalt(10, function(err, salt) {
  103.             bcrypt.hash(post.password, salt, function(err, hash) {
  104.                 connection.query("INSERT INTO users (username, password) VALUES ('"+post.username+"', '"+hash+"')", hash, function(err, rows, fields) {
  105.                     if(err) throw err
  106.                 });
  107.             });
  108.         });
  109.        
  110.         res.redirect('/login');
  111.     }
  112. });
  113.  
  114. app.get('/logout', function(req, res) {
  115.     req.session = null;
  116.     res.redirect('/login');
  117. });
  118.  
  119.  
  120. users = [];
  121. connections = [];
  122.  
  123. io.sockets.on('connection', function(socket){
  124.     connections.push(socket);
  125.     console.log('Connected: %s sockets connected', connections.length);
  126.    
  127.     // Disconnect
  128.     socket.on('disconnect', function(data){
  129.         users.splice(users.indexOf(socket.username), 1);
  130.         updateUsernames();
  131.         connections.splice(connections.indexOf(socket), 1);
  132.         console.log('Disconnected: %s sockets connected', connections.length);
  133.     });
  134.    
  135.     // Send Message
  136.     socket.on('send message', function(data){
  137.         console.log(data);
  138.         io.sockets.emit('new message', {msg: data, user: socket.username});
  139.     });
  140.    
  141.     // New User
  142.     socket.on('new user', function(data, callback){
  143.         callback(true);
  144.         socket.username = data;
  145.         users.push(socket.username);
  146.         updateUsernames();
  147.     });
  148.    
  149.     function updateUsernames() {
  150.         io.sockets.emit('get users', users);
  151.     }
  152. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement