mirror of
https://github.com/naturalcrit/naturalcrit.git
synced 2025-10-27 07:29:54 +00:00
89 lines
2.8 KiB
JavaScript
89 lines
2.8 KiB
JavaScript
'use strict';
|
|
|
|
const _ = require('lodash');
|
|
require('app-module-path').addPath('./shared');
|
|
|
|
const jwt = require('jwt-simple');
|
|
const cookieParser = require('cookie-parser');
|
|
const bodyParser = require('body-parser');
|
|
const express = require("express");
|
|
const authRoutes = require('./server/auth_routes');
|
|
//const userRoutes = require('./server/profile_routes');
|
|
const passportSetup = require('./server/passport_setup');
|
|
const passport = require('passport');
|
|
const app = express();
|
|
|
|
app.use(express.static(__dirname + '/build'));
|
|
app.use(bodyParser.json());
|
|
app.use(cookieParser());
|
|
|
|
const config = require('nconf')
|
|
.argv()
|
|
.env({ lowerCase: true })
|
|
.file('environment', { file: `config/${process.env.NODE_ENV}.json` })
|
|
.file('defaults', { file: 'config/default.json' });
|
|
|
|
|
|
//DB
|
|
const mongoose = require('mongoose');
|
|
mongoose.connect(process.env.MONGODB_URI || process.env.MONGOLAB_URI || 'mongodb://localhost/naturalcrit');
|
|
mongoose.connection.on('error', () => { console.log(">>>ERROR: Run Mongodb.exe ya goof!") });
|
|
|
|
//// initialize passport
|
|
//app.use(passport.initialize());
|
|
app.use((req, res, next)=>{
|
|
if(req.cookies && req.cookies.nc_session){
|
|
try{
|
|
req.user = jwt.decode(req.cookies.nc_session, config.get('authentication_token_secret'));
|
|
}catch(e){
|
|
console.log("Couldn't find a current logged-in user");
|
|
console.error(e);
|
|
}
|
|
}
|
|
return next();
|
|
});
|
|
|
|
//Load in account api Routes
|
|
app.use(require('./server/account.api.js'));
|
|
|
|
// set up routes
|
|
app.use('/auth', authRoutes);
|
|
//app.use('/user', userRoutes);
|
|
|
|
//Homebrew Redirect
|
|
app.all('/homebrew*', (req, res) => {
|
|
return res.redirect(302, 'https://homebrewery.naturalcrit.com' + req.url.replace('/homebrew', ''));
|
|
});
|
|
|
|
const render = require('./scripts/steps/render.js');
|
|
const templateFn = require('./client/template.js');
|
|
|
|
app.get('/badges', (req, res)=>{
|
|
render('badges', templateFn, { url : req.url })
|
|
.then((page) => res.send(page))
|
|
.catch((err) => console.log(err));
|
|
})
|
|
|
|
//Render Main Page
|
|
app.get('*', (req, res) => {
|
|
render('main', templateFn, {
|
|
url : req.url,
|
|
user : req.user,
|
|
//authToken : authToken,
|
|
domain : config.get('domain'),
|
|
environment: [process.env.NODE_ENV,process.env.HEROKU_PR_NUMBER]
|
|
})
|
|
.then((page) => res.send(page))
|
|
.catch((err) => console.log(err));
|
|
});
|
|
|
|
|
|
var port = process.env.PORT || config.get('web_port') || 8010;
|
|
app.listen(port);
|
|
console.log(`\n\tserver started at: ${new Date().toLocaleString()}`);
|
|
const reset = '\x1b[0m'; // Reset to default style
|
|
const bright = '\x1b[1m'; // Bright (bold) style
|
|
const cyan = '\x1b[36m'; // Cyan color
|
|
const underline = '\x1b[4m'; // Underlined style
|
|
console.log(`\t${bright + cyan}Open in browser: ${reset}${underline + bright + cyan}http://localhost:${port}${reset}\n\n`)
|