|
1 | | -path = require('path'); |
2 | | - |
3 | | -var express = require('express'); |
4 | | -var favicon = require('serve-favicon'); |
5 | | -var logger = require('morgan'); |
6 | | -var config = require(path.join(__dirname, '..', 'config')) |
7 | | - |
8 | | -// Set baseURL depending on enviornment |
9 | | - |
10 | | -var env = config.server.environment; |
11 | | -if (env === 'production') { |
12 | | - baseURL = "https://www.javascript.com/"; |
13 | | -}else if(env === 'staging'){ |
14 | | - baseURL = "http://javascript.preschool.io/"; |
15 | | -}else{ |
16 | | - baseURL = "http://localhost:3000/"; |
| 1 | +path = require('path'); |
| 2 | +config = require(path.join(__dirname, '..', 'config')); |
| 3 | + |
| 4 | +// TODO Is there a better way we can do this? |
| 5 | +if (config.server.environment === 'production') { |
| 6 | + baseURL = 'https://www.javascript.com/'; |
| 7 | +} else if (config.server.environment === 'staging') { |
| 8 | + baseURL = 'http://javascript.preschool.io/'; |
| 9 | +} else { |
| 10 | + baseURL = 'http://localhost:3000/'; |
17 | 11 | } |
18 | 12 |
|
19 | | -var routes = require(path.join(__dirname, 'routes','index')); |
| 13 | +var express = require('express'), |
| 14 | + logger = require('morgan'), |
| 15 | + session = require('express-session'), |
| 16 | + passport = require('passport'), |
| 17 | + expressSession = require('express-session'), |
| 18 | + redis = require('redis'), |
| 19 | + redisStore = require('connect-redis')(expressSession), |
| 20 | + methodOverride = require('methodOverride'), |
| 21 | + bodyParser = require('bodyParser'); |
20 | 22 |
|
21 | | -var about = require(path.join(__dirname, 'routes', 'about')); |
22 | | -var admin = require(path.join(__dirname, 'routes', 'admin')); |
23 | | -var assets = require(path.join(__dirname, 'routes', 'assets')); |
24 | | -var courses = require(path.join(__dirname, 'routes', 'courses')); |
25 | | -var feed = require(path.join(__dirname, 'routes', 'feed')); |
26 | | -var feedback = require(path.join(__dirname, 'routes', 'feedback')); |
27 | | -var guidelines = require(path.join(__dirname, 'routes', 'guidelines')); |
28 | | -var learn = require(path.join(__dirname, 'routes', 'learn')); |
29 | | -var news = require(path.join(__dirname, 'routes', 'news')); |
30 | | -var notFound = require(path.join(__dirname, 'routes', 'notFound')); |
31 | | -var resources = require(path.join(__dirname, 'routes', 'resources')); |
32 | | -var styleguide = require(path.join(__dirname, 'routes', 'styleguide')); |
33 | | -var users = require(path.join(__dirname, 'routes', 'users')); |
| 23 | +var app = module.exports = express(); |
34 | 24 |
|
35 | | -var app = express(); |
36 | | -app.set('trust proxy', 1); |
| 25 | +app.set('trust proxy', true); |
| 26 | +app.set('view engine', 'jade'); |
| 27 | +app.set('views', path.join(__dirname, 'views')); |
| 28 | + |
| 29 | +app.use(logger('dev')); |
| 30 | +app.use(express.static(path.join(__dirname, 'public'))); |
| 31 | +app.use(bodyParser.urlencoded({ extended: true })); |
| 32 | +app.use(methodOverride('_method')); |
| 33 | +app.use(require('flash')()); |
37 | 34 |
|
38 | | -// Must come before calls to app.use |
39 | | -var passport = require('passport'); |
40 | | -var expressSession = require('express-session'); |
41 | | -var RedisStore = require('connect-redis')(expressSession); |
42 | | -var redis = require('redis'); |
43 | | -var redisHost = config.server.redis; |
44 | | -var client = redis.createClient(6379, redisHost, {}); |
45 | | -// Don't set cookies to secure in dev. |
46 | | -var secureCookie = config.server.environment === 'production' ? true : false |
47 | 35 | app.use(expressSession({ |
48 | | - store: new RedisStore({client: client}), |
| 36 | + store: new redisStore({ |
| 37 | + client: redis.createClient(6379, config.server.redis, {}) |
| 38 | + }), |
49 | 39 | secret: config.server.cookieKey |
50 | 40 | })); |
| 41 | + |
51 | 42 | app.use(passport.initialize()); |
52 | 43 | app.use(passport.session()); |
53 | 44 |
|
54 | | -// view engine setup |
55 | | -app.set('views', path.join(__dirname, 'views')); |
56 | | -app.set('view engine', 'jade'); |
57 | | - |
58 | | -// uncomment after placing your favicon in /public |
59 | | -//app.use(favicon(__dirname + '/public/favicon.ico')); |
60 | | -app.use(logger('dev')); |
61 | | -app.use(express.static(path.join(__dirname, '..', 'public'))); |
62 | | - |
63 | | -// Flash messages |
64 | | -app.use(require('flash')()); |
65 | | - |
66 | | -// routes |
67 | | -app.use('/', routes); |
68 | | -app.use('/about', about); |
69 | | -app.use('/admin', admin); |
70 | | -app.use('/assets', assets); |
71 | | -app.use('/courses', courses) |
72 | | -app.use('/courses.json', courses); |
73 | | -app.use('/feed', feed); |
74 | | -app.use('/feedback', feedback); |
75 | | -app.use('/guidelines', guidelines) |
76 | | -app.use('/news', news); |
77 | | -app.use('/resources', resources) |
78 | | -app.use('/styleguide', styleguide); |
79 | | -app.use('/try', learn) |
80 | | -app.use('/users', users); |
| 45 | +require('./lib/boot')(app, { |
| 46 | + verbose: config.server.environment === 'development' |
| 47 | +}); |
81 | 48 |
|
82 | | -// catch 404 and forward to error handler |
83 | | -app.use(function(req, res, next) { |
84 | | - var err = new Error('Not Found'); |
85 | | - err.status = 404; |
86 | | - next(err); |
| 49 | +app.use(function(err, res, next) { |
| 50 | + res.status(400).render('404', { url: req.originalUrl }); |
87 | 51 | }); |
88 | 52 |
|
89 | | -// error handlers |
| 53 | +if (config.server.environment === 'development') { |
| 54 | + app.use(function(err, req, res, next) { |
| 55 | + res.status(err.status || 500); |
90 | 56 |
|
91 | | -// development error handler |
92 | | -// will print stacktrace |
93 | | -if (app.get('env') === 'development') { |
94 | | - app.use(function(err, req, res, next) { |
95 | | - res.status(err.status || 500); |
96 | | - res.render('error', { |
97 | | - message: err.message, |
98 | | - error: err |
99 | | - }); |
| 57 | + res.render('error', { |
| 58 | + message: err.message, |
| 59 | + error: err |
100 | 60 | }); |
| 61 | + }); |
101 | 62 | } |
102 | 63 |
|
103 | | -// production error handler |
104 | | -// no stacktraces leaked to user |
105 | | -app.use(function(err, req, res, next) { |
106 | | - res.status(err.status || 500); |
107 | | - if (err.status === 404) { |
108 | | - res.render('404'); |
109 | | - }else{ |
110 | | - res.render('error', { |
111 | | - message: err.message, |
112 | | - error: {} |
113 | | - }); |
114 | | - } |
115 | | -}); |
116 | | - |
117 | 64 | module.exports = app; |
118 | | - |
119 | | -// Set absolute paths for partials |
120 | | -app.locals.basedir = path.join(__dirname, ''); |
0 commit comments