Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (process.env.NODE_ENV !== 'production') {
- require('dotenv').config()
- }
- const io = require('socket.io')(3001)
- const express = require('express')
- const app = express()
- const bcrypt = require('bcrypt')
- const passport = require('passport')
- const flash = require('express-flash')
- const session = require('express-session')
- const methodOverride = require('method-override')
- const initializePassport = require('./passport-config')
- initializePassport(
- passport,
- email => users.find(user => user.email === email),
- id => users.find(user => user.id === id)
- )
- var engines = require('consolidate');
- app.set('views', __dirname + '/views');
- app.engine('html', engines.mustache);
- app.set('view engine', 'html');
- const users = []
- io.on('connection', socket => {
- socket.on('new-user', name => {
- users[user.id] = name
- socket.broadcast.emit('user-connected', name)
- })
- socket.on('send-chat-message', message => {
- socket.broadcast.emit('chat-message', { message: message, name: users[user.id] })
- })
- socket.on('disconnect', () => {
- socket.broadcast.emit('user-disconnected', users[user.id])
- delete users[user.id]
- })
- })
- app.set('view-engine', 'ejs')
- app.use(express.urlencoded({ extended: false }))
- app.use(flash())
- app.use(session({
- secret: process.env.SESSION_SECRET,
- resave: false,
- saveUninitialized: false
- }))
- app.use(passport.initialize())
- app.use(passport.session())
- app.use(methodOverride('_method'))
- app.use(express.static(path.join(__dirname, 'public')));
- app.set('view engine', 'html');
- app.get('/', function(req, res, next){
- res.render('index.html');
- });
- app.get('/login', checkNotAuthenticated, (req, res) => {
- res.render('login.ejs')
- })
- app.post('/login', checkNotAuthenticated, passport.authenticate('local', {
- successRedirect: '/',
- failureRedirect: '/login',
- failureFlash: true
- }))
- app.get('/register', checkNotAuthenticated, (req, res) => {
- res.render('register.ejs')
- })
- app.post('/register', checkNotAuthenticated, async (req, res) => {
- try {
- const hashedPassword = await bcrypt.hash(req.body.password, 10)
- users.push({
- id: Date.now().toString(),
- name: req.body.name,
- email: req.body.email,
- password: hashedPassword
- })
- res.redirect('/login')
- } catch {
- res.redirect('/register')
- }
- })
- app.delete('/logout', (req, res) => {
- req.logOut()
- res.redirect('/login')
- })
- function checkAuthenticated(req, res, next) {
- if (req.isAuthenticated()) {
- return next()
- }
- res.redirect('/login')
- }
- function checkNotAuthenticated(req, res, next) {
- if (req.isAuthenticated()) {
- return res.redirect('/')
- }
- next()
- }
- app.listen(3000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement