Lint server, remove body-parser

This commit is contained in:
Kevin Thomas
2021-07-23 17:10:44 -07:00
parent 9f5a3a5ad8
commit 1be716d85a
10 changed files with 264 additions and 17123 deletions

17091
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -10,7 +10,6 @@
},
"dependencies": {
"axios": "^0.21.1",
"body-parser": "^1.19.0",
"connect-ensure-login": "^0.1.1",
"cookie-parser": "^1.4.5",
"core-js": "^3.6.5",

View File

@@ -1,44 +1,41 @@
const express = require('express');
const express = require('express')
const session = require('express-session')
const cors = require('cors')
const passport = require('passport');
const path = require('path');
const cookieParser = require('cookie-parser');
const ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn;
const bodyParser = require("body-parser")
const passport = require('passport')
const path = require('path')
const cookieParser = require('cookie-parser')
const indexRouter = require('./routes/index');
const authRouter = require('./routes/auth');
const myaccountRouter = require('./routes/myaccount');
const usersRouter = require('./routes/users');
const db = require('./db');
const indexRouter = require('./routes/index')
const authRouter = require('./routes/auth')
const myaccountRouter = require('./routes/myaccount')
const usersRouter = require('./routes/users')
const app = express();
const app = express()
require('./boot/db')();
require('./boot/auth')();
require('./boot/db')()
require('./boot/auth')()
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(session({ secret: "cats", resave: false, saveUninitialized: false }));
app.use(function(req, res, next) {
const msgs = req.session.messages || [];
res.locals.messages = msgs;
res.locals.hasMessages = !! msgs.length;
req.session.messages = [];
next();
});
app.use(bodyParser.json());
app.use(passport.initialize());
app.use(passport.authenticate('session'));
app.use(express.json())
app.use(express.urlencoded({ extended: false }))
app.use(cookieParser())
app.use(express.static(path.join(__dirname, 'public')))
app.use(session({ secret: 'cats', resave: false, saveUninitialized: false }))
app.use(function (req, res, next) {
const msgs = req.session.messages || []
res.locals.messages = msgs
res.locals.hasMessages = !!msgs.length
req.session.messages = []
next()
})
app.use(express.json())
app.use(passport.initialize())
app.use(passport.authenticate('session'))
app.use(cors())
// Define routes
app.use('/', indexRouter);
app.use('/', authRouter);
app.use('/myaccount', myaccountRouter);
app.use('/users', usersRouter);
app.use('/', indexRouter)
app.use('/', authRouter)
app.use('/myaccount', myaccountRouter)
app.use('/users', usersRouter)
module.exports = app;
module.exports = app

View File

@@ -3,17 +3,16 @@
/**
* Module dependencies.
*/
const app = require('../app');
const debug = require('debug')('example:server');
const http = require('http');
const app = require('../app')
const debug = require('debug')('example:server')
const https = require('https')
const fs = require('fs')
/**
* Get port from environment and store in Express.
*/
const port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
const port = normalizePort(process.env.PORT || '3000')
app.set('port', port)
/**
* HTTPS options.
@@ -26,68 +25,66 @@ const httpsOptions = {
/**
* Create HTTP server.
*/
const server = https.createServer(httpsOptions, app);
const server = https.createServer(httpsOptions, app)
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
server.listen(port)
server.on('error', onError)
server.on('listening', onListening)
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
const port = parseInt(val, 10);
function normalizePort (val) {
const port = parseInt(val, 10)
if (isNaN(port)) {
// named pipe
return val;
return val
}
if (port >= 0) {
// port number
return port;
return port
}
return false;
return false
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
function onError (error) {
if (error.syscall !== 'listen') {
throw error;
throw error
}
const bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
: 'Port ' + port
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
console.error(bind + ' requires elevated privileges')
process.exit(1)
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
console.error(bind + ' is already in use')
process.exit(1)
default:
throw error;
throw error
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
const addr = server.address();
function onListening () {
const addr = server.address()
const bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
: 'port ' + addr.port
debug('Listening on ' + bind)
}

View File

@@ -1,37 +1,35 @@
const passport = require('passport');
const Strategy = require('passport-local');
const crypto = require('crypto');
const db = require('../db');
module.exports = function() {
const passport = require('passport')
const Strategy = require('passport-local')
const crypto = require('crypto')
const db = require('../db')
module.exports = function () {
// Configure the local strategy for use by Passport.
//
// The local strategy requires a `verify` function which receives the credentials
// (`username` and `password`) submitted by the user. The function must verify
// that the password is correct and then invoke `cb` with a user object, which
// will be set at `req.user` in route handlers after authentication.
passport.use(new Strategy(function(username, password, cb) {
db.get('SELECT rowid AS id, * FROM users WHERE username = ?', [ username ], function(err, row) {
if (err) { return cb(err); }
if (!row) { return cb(null, false, { message: 'Incorrect username or password.' }); }
passport.use(new Strategy(function (username, password, cb) {
db.get('SELECT rowid AS id, * FROM users WHERE username = ?', [username], function (err, row) {
if (err) { return cb(err) }
if (!row) { return cb(null, false, { message: 'Incorrect username or password.' }) }
crypto.pbkdf2(password, row.salt, 10000, 32, 'sha256', function(err, hashedPassword) {
if (err) { return cb(err); }
crypto.pbkdf2(password, row.salt, 10000, 32, 'sha256', function (err, hashedPassword) {
if (err) { return cb(err) }
if (!crypto.timingSafeEqual(row.hashed_password, hashedPassword)) {
return cb(null, false, { message: 'Incorrect username or password.' });
return cb(null, false, { message: 'Incorrect username or password.' })
}
const user = {
id: row.id.toString(),
username: row.username,
displayName: row.name
};
return cb(null, user);
});
});
}));
}
return cb(null, user)
})
})
}))
// Configure Passport authenticated session persistence.
//
@@ -40,16 +38,15 @@ module.exports = function() {
// typical implementation of this is as simple as supplying the user ID when
// serializing, and querying the user record by ID from the database when
// deserializing.
passport.serializeUser(function(user, cb) {
process.nextTick(function() {
cb(null, { id: user.id, username: user.username });
});
});
passport.serializeUser(function (user, cb) {
process.nextTick(function () {
cb(null, { id: user.id, username: user.username })
})
})
passport.deserializeUser(function(user, cb) {
process.nextTick(function() {
return cb(null, user);
});
});
};
passport.deserializeUser(function (user, cb) {
process.nextTick(function () {
return cb(null, user)
})
})
}

View File

@@ -1,15 +1,7 @@
const db = require('../db');
const db = require('../db')
module.exports = function() {
db.serialize(function() {
db.run("CREATE TABLE IF NOT EXISTS users ( \
username TEXT UNIQUE, \
hashed_password BLOB, \
salt BLOB, \
name TEXT \
)");
});
//db.close();
};
module.exports = function () {
db.serialize(function () {
db.run('CREATE TABLE IF NOT EXISTS users ( username TEXT UNIQUE, hashed_password BLOB, salt BLOB, name TEXT)')
})
}

View File

@@ -1,18 +1,18 @@
const express = require('express');
const passport = require('passport');
const express = require('express')
const passport = require('passport')
const router = express.Router();
const router = express.Router()
router.post('/login/password', passport.authenticate('local'), function(req, res, next) {
if(req.user) {
res.json(req.user);
router.post('/login/password', passport.authenticate('local'), function (req, res, next) {
if (req.user) {
res.json(req.user)
} else {
res.statusCode = 403;
res.statusCode = 403
}
});
})
router.get('/logout', function(req, res, next) {
req.logout();
});
router.get('/logout', function (req, res, next) {
req.logout()
})
module.exports = router;
module.exports = router

View File

@@ -1,8 +1,8 @@
const express = require('express');
const router = express.Router();
const express = require('express')
const router = express.Router()
router.get('/', function(req, res, next) {
res.json({ user: req.user });
});
router.get('/', function (req, res, next) {
res.json({ user: req.user })
})
module.exports = router;
module.exports = router

View File

@@ -1,23 +1,23 @@
const express = require('express');
const ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn;
const db = require('../db');
const express = require('express')
const ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn
const db = require('../db')
const router = express.Router();
const router = express.Router()
/* GET users listing. */
router.get('/',
ensureLoggedIn(),
function(req, res, next) {
db.get('SELECT rowid AS id, username, name FROM users WHERE rowid = ?', [ req.user.id ], function(err, row) {
if (err) { return next(err); }
function (req, res, next) {
db.get('SELECT rowid AS id, username, name FROM users WHERE rowid = ?', [req.user.id], function (err, row) {
if (err) { return next(err) }
const user = {
id: row.id.toString(),
username: row.username,
displayName: row.name
};
res.render('profile', { user: user });
});
});
}
res.render('profile', { user: user })
})
})
module.exports = router;
module.exports = router

View File

@@ -1,33 +1,33 @@
const express = require('express');
const crypto = require('crypto');
const db = require('../db');
const express = require('express')
const crypto = require('crypto')
const db = require('../db')
const router = express.Router();
const router = express.Router()
router.post('/', function(req, res, next) {
console.log("REQ: ", req.body)
const salt = crypto.randomBytes(16);
crypto.pbkdf2(req.body.password, salt, 10000, 32, 'sha256', function(err, hashedPassword) {
if (err) { return next(err); }
router.post('/', function (req, res, next) {
console.log('REQ: ', req.body)
const salt = crypto.randomBytes(16)
crypto.pbkdf2(req.body.password, salt, 10000, 32, 'sha256', function (err, hashedPassword) {
if (err) { return next(err) }
db.run('INSERT INTO users (username, hashed_password, salt, name) VALUES (?, ?, ?, ?)', [
req.body.username,
hashedPassword,
salt,
req.body.name
], function(err) {
if (err) { return next(err); }
], function (err) {
if (err) { return next(err) }
const user = {
id: this.lastID.toString(),
username: req.body.username,
displayName: req.body.name
};
req.login(user, function(err) {
if (err) { return next(err); }
});
});
});
});
}
req.login(user, function (err) {
if (err) { return next(err) }
})
})
})
})
module.exports = router;
module.exports = router