-
Notifications
You must be signed in to change notification settings - Fork 1
/
app.js
138 lines (103 loc) · 2.79 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
'use strict';
// DB etc...
const config = require('./config/conf.json');
const express = require('express');
const session = require('express-session');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const morgan = require('morgan');
const app = express();
const port = process.env.PORT || 3000;
// Auth
const passport = require('passport');
// display msg in session
const flash = require('connect-flash');
const helper = require('./app/tools/helper_method');
/* ------------------------------------------- */
if (process.env.NODE_ENV == undefined) {
process.env.NODE_ENV = 'development';
console.log(`
================================================
|
| Environment missing!
|
| running default : development
|
| NODE_ENV=development node app.js
|
================================================
` );
}
// log request to console
app.use(morgan('tiny'));
// public folder
app.use(express.static('public'));
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
// to support JSON-encoded bodies (for auth)
app.use(cookieParser());
// For Passport
app.use(session({
secret: config[process.env.NODE_ENV].session_secret,
resave: true,
saveUninitialized: true,
})); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // flash messages stored in session
/**
* view
*/
app.set('view engine', 'ejs');
app.set('views', './app/views');
/**
* models
*/
const models = require('./app/models');
/**
* routes
*/
// load passport strategies
require('./app/config/passport/passport.js')(passport, models.User);
require('./app/routes/auth_routes.js')(app, passport);
// load messages API v1.0
require('./app/routes/v1_0/messages_routes.js')(app);
/**
* database
*/
models.sequelize.sync().then(function() {
console.log('Database Connected!');
}).catch(function(err) {
console.log(err, 'Something went wrong with the Database Update!');
});
/**
* home page
*/
app.get('/', function(req, res) {
// if user is auth in the session, carry on
if (req.isAuthenticated()) {
// load the index.ejs
res.render('index.ejs', {
user: req.user,
});
} else {
res.render('index.ejs', {
user: false,
});
}
});
// Route not found (404)
app.use(function(req, res, next) {
return helper.errResp(res, 404,
`Oh no, we lost! Route ${req.url} Not found.`);
});
// other error
app.use(function(err, req, res, next) {
return helper.errResp(res, 500, `Error 500!! ${err}`);
});
/* Start app --------------------------------- */
const server = app.listen(port, '0.0.0.0', function() {
let host = server.address().address;
let port = server.address().port;
console.log(`${process.env.NODE_ENV} running on http://${host}:${port}`);
});