naturalcrit/server.js
Víctor Losada Hernández 89625fa1cf Add environment context info
2024-12-07 15:24:13 +01:00

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`)