Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var cookieSession = require('cookie-session')
- var app = express();
- var bodyParser = require('body-parser');
- app.use(bodyParser.json()); // support json encoded bodies
- app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
- var server = require('http').createServer(app);
- var io = require('socket.io').listen(server);
- var bcrypt = require('bcryptjs');
- var mysql = require('mysql');
- app.set('trust proxy', 1)
- app.use(cookieSession({
- name: 'session',
- keys: ['key1', 'key2']
- }))
- var connection = mysql.createConnection({
- host : 'localhost',
- user : 'root',
- password : '',
- database : 'chatapp'
- });
- /* INSERT INTO DATABASE
- bcrypt.genSalt(10, function(err, salt) {
- bcrypt.hash("B4c0/\/", salt, function(err, hash) {
- connection.query("INSERT INTO users (username, password) VALUES ('"+username+"', '"+hashedPassword+"')", hash, function(err, rows, fields) {
- if(err) throw err
- });
- connection.end();
- });
- });
- */
- server.listen(process.env.PORT || 3000);
- console.log('Server running...');
- function checkAuth(req, res, next) {
- if (!req.session.user_id) {
- res.redirect('/login');
- }
- else {
- next();
- }
- }
- app.get('/', checkAuth, function(req, res){
- res.sendFile(__dirname + '/index.html');
- });
- app.get('/login', function(req, res){
- if (req.session.user_id) {
- res.redirect('/');
- }
- else {
- res.sendFile(__dirname + '/login.html');
- }
- });
- app.get('/register', function(req, res){
- if (req.session.user_id) {
- res.redirect('/');
- }
- else {
- res.sendFile(__dirname + '/register.html');
- }
- });
- app.post('/login', function(req, res){
- var post = req.body;
- connection.query("SELECT * FROM users WHERE username='"+post.username+"'", function (err, rows, fields) {
- if(err) throw err
- if(rows[0]) {
- bcrypt.compare(post.password, rows[0].password, function(err, correct) {
- if (correct === true) {
- req.session.user_id = rows[0].id;
- res.redirect('/');
- }
- else {
- res.redirect('/login');
- }
- });
- }
- else {
- res.redirect('/login');
- }
- })
- });
- app.post('/register', function(req, res){
- var post = req.body;
- if (post.username === '' || post.password === '' || post.verifyPassword === '') {
- res.redirect('/register');
- }
- else if (post.password != post.verifyPassword) {
- res.redirect('/register');
- }
- else {
- bcrypt.genSalt(10, function(err, salt) {
- bcrypt.hash(post.password, salt, function(err, hash) {
- connection.query("INSERT INTO users (username, password) VALUES ('"+post.username+"', '"+hash+"')", hash, function(err, rows, fields) {
- if(err) throw err
- });
- });
- });
- res.redirect('/login');
- }
- });
- app.get('/logout', function(req, res) {
- req.session = null;
- res.redirect('/login');
- });
- users = [];
- connections = [];
- io.sockets.on('connection', function(socket){
- connections.push(socket);
- console.log('Connected: %s sockets connected', connections.length);
- // Disconnect
- socket.on('disconnect', function(data){
- users.splice(users.indexOf(socket.username), 1);
- updateUsernames();
- connections.splice(connections.indexOf(socket), 1);
- console.log('Disconnected: %s sockets connected', connections.length);
- });
- // Send Message
- socket.on('send message', function(data){
- console.log(data);
- io.sockets.emit('new message', {msg: data, user: socket.username});
- });
- // New User
- socket.on('new user', function(data, callback){
- callback(true);
- socket.username = data;
- users.push(socket.username);
- updateUsernames();
- });
- function updateUsernames() {
- io.sockets.emit('get users', users);
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement