Merged PetitTetonApps with the website now that the deployment server always uses SSL. Used the Apps more recent implementation of NodeJS/Express.

This commit is contained in:
Wynne Crisman
2016-05-31 14:37:42 -07:00
parent a98d7d3a5f
commit 78be012a14
192 changed files with 58459 additions and 19 deletions

89
server.js Normal file
View File

@@ -0,0 +1,89 @@
#!/usr/bin/env node
var express = require('express');
var app = express();
var port = process.env.PORT || 8088;
var passport = require('passport');
var flash = require('connect-flash');
var path = require('path');
var ejsPath = path.join(__dirname, 'public');
var rootPath = path.join(__dirname, 'public');
var morgan = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var FileStore = require('session-file-store')(session);
var moment = require('moment');
var favicon = require('serve-favicon');
var nodeMailer = require('nodeMailer');
//var configDB = require('./config/database.js');
var config = require('./config');
var models = require("./app/models");
models.sequelize.sync().then(function () {
//SMTP Transport setup.
var smtpTransport = nodeMailer.createTransport({host: config.smtpHost, port: config.smtpPort, secure: true, ignoreTLS: false, requiresAuth: true, auth: {user: config.smtpUser, pass: config.smtpPassword}});
//Setup our passport configuration passing the user model.
require('./config/passport')(passport, models.User); // pass passport for configuration
//Serve the fav icon before any logging.
app.use(favicon(__dirname + '/public/images/Chicken.ico'));
//Setup NodeJS express.
app.use(morgan('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
//Setup Stylus to manage our awesome styles.
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
//Setup EJS for view templating.
//app.engine('.ejs', require('ejs').__express);
//app.engine('.ejs', require('ejs').renderFile);
app.set('view engine', 'ejs'); //html
app.set('views', ejsPath);
//Static routes
// Can add: maxAge: 1d, redirect: false, and setHeaders: ...
app.use(express.static(rootPath, {dotfiles: 'deny', index: false, extensions: ['htm', 'html', 'gif', 'png', 'jpg', 'jpeg', 'map', 'css', 'js', 'ico', 'xml','txt','zip','pdf'], etag: false}));
//Passport
app.use(session({
store: new FileStore({ttl: 12 * 60 * 60, encrypt: false}), //https://www.npmjs.com/package/session-file-store
cookieName: 'session',
secret: 'countingprogrammersinsteadofsheepleadstobettersleep',
activeDuration: 12 * 60 * 60 * 1000,
duration: 12 * 60 * 60 * 1000,
httpOnly: true,
secure: false,
ephemeral: false
}));
app.use(flash()); // use connect-flash for flash messages stored in session
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
//Routes
require('./app/routes.js')(app, rootPath, passport, smtpTransport, models.sequelize); // load our routes and pass in our app and fully configured passport
//Setup initial database data.
require('./app/initialData.js')(models.sequelize);
//Ensure we have an endsWith method in String.
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
//Launch
app.listen(port);
console.log('The magic happens on port ' + port);
console.log("Root Path: " + rootPath);
console.log("Time now is: " + moment(new Date()).format("MMM Do YYYY, h:mm:ss a"));
}).error(function(err) {
console.log("Couldn't create or initialize the database:" + err);
})