11const path = require ( 'path' ) ;
22const crypto = require ( 'crypto' ) ;
3+ const fs = require ( 'fs' ) ;
34
45const express = require ( 'express' ) ;
56const bodyParser = require ( 'body-parser' ) ;
@@ -9,8 +10,11 @@ const MongoDBStore = require('connect-mongodb-session')(session);
910const csrf = require ( 'csurf' ) ;
1011const flash = require ( 'connect-flash' ) ;
1112const multer = require ( 'multer' ) ;
13+ const helmet = require ( 'helmet' ) ;
14+ const compression = require ( 'compression' ) ;
15+ const morgan = require ( 'morgan' ) ;
1216
13- const envKeys = require ( './keys' ) ;
17+ const keys = require ( './keys' ) ;
1418
1519const errorsController = require ( './controllers/errors.js' ) ;
1620
@@ -22,11 +26,9 @@ const authRoutes = require('./routes/auth');
2226// Models
2327const User = require ( './models/user' ) ;
2428
25- const PORT = 3000 ;
26-
2729const app = express ( ) ;
2830const store = new MongoDBStore ( {
29- uri : envKeys . MONGODB_URI ,
31+ uri : keys . MONGODB_ATLAS_URI ,
3032 collection : 'sessions'
3133} ) ;
3234const csrfProtection = csrf ( ) ;
@@ -51,16 +53,22 @@ const fileFilter = (req, file, callback) => {
5153 }
5254} ;
5355
56+ const accessLogStream = fs . createWriteStream ( path . join ( __dirname , 'access.log' ) , { flags : 'a' } ) ;
57+
5458app . set ( 'view engine' , 'ejs' ) ;
5559app . set ( 'views' , 'views' ) ;
5660
61+ app . use ( helmet ( ) ) ;
62+ app . use ( compression ( ) ) ;
63+ app . use ( morgan ( "combined" , { stream : accessLogStream } ) ) ;
64+
5765app . use ( bodyParser . urlencoded ( { extended : false } ) ) ;
5866app . use ( multer ( { storage : fileStorage , fileFilter : fileFilter } ) . single ( 'image' ) ) ;
5967app . use ( express . static ( path . join ( __dirname , 'public' ) ) ) ;
6068app . use ( '/images' , express . static ( path . join ( __dirname , 'images' ) ) ) ;
6169
6270app . use ( session ( {
63- secret : envKeys . SESSION_SECRET_KEY ,
71+ secret : keys . SESSION_SECRET_KEY ,
6472 resave : false ,
6573 saveUninitialized : false ,
6674 store : store
@@ -102,9 +110,19 @@ app.use((error, req, res, next) => {
102110 res . status ( 500 ) . render ( '500' , { pageTitle : 'Error!' , path : '/500' } ) ;
103111} ) ;
104112
113+ const MONGOOSE_CONNECT_OPTIONS = {
114+ useNewUrlParser : true ,
115+ useUnifiedTopology : true ,
116+ useFindAndModify : false ,
117+ useCreateIndex : true
118+ } ;
119+
105120mongoose
106- . connect ( envKeys . MONGODB_URI , { useNewUrlParser : true , useUnifiedTopology : true } )
121+ . connect ( keys . MONGODB_ATLAS_URI , MONGOOSE_CONNECT_OPTIONS )
107122 . then ( result => {
108- app . listen ( envKeys . PORT ) ;
123+ if ( ! result ) {
124+ throw new Error ( 'MongoDB Atlas server not working' ) ;
125+ }
126+ app . listen ( process . env . PORT || 3000 ) ;
109127 } )
110128 . catch ( err => console . log ( err ) ) ;
0 commit comments