forked from substance/journal-old
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
93 lines (71 loc) · 2.15 KB
/
server.js
File metadata and controls
93 lines (71 loc) · 2.15 KB
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
var http = require('http');
var express = require('express');
var path = require('path');
var Substance = require("substance");
var fs = require('fs');
var ejs = require('ejs');
var path = require("path");
var session = require('express-session');
var bodyParser = require('body-parser');
var jwt = require('express-jwt');
var config = require('config');
var app = express();
var port = process.env.PORT || 5000;
var db = require("./server/db");
var Document = db.models.Document;
var api = require("./server/api/user");
var browserify = require("browserify-middleware");
app.set('view engine', 'ejs');
app.set('db', db);
// setting up secret variable for tokens
app.set('tokenSecret', config.secret);
// use body parser so we can get info from POST and/or URL parameters
app.use(bodyParser.json({limit: '3mb'}));
app.use(bodyParser.urlencoded({ extended: true }));
// use static server
app.use(express.static(path.join(__dirname, "public")));
// check token validity
app.use('/api', jwt({
secret: app.get('tokenSecret')
}).unless({
path: ['/api/login', '/api/register']
}))
// set apis route
app.use('/api', api);
// error handler
app.use(function (err, req, res, next) {
// send 401 error if token is invalid
if (err.name === 'UnauthorizedError') {
res.status(401).json({
message: 'Invalid token.'
});
}
});
// Serve app in dev mode
// --------
//
// TODO: Try this to get rid of browserify-middleware:
//
// https://github.com/substance/substance/blob/testsuite-and-apidoc/test/serve.js#L10
if (process.env.NODE_ENV !== "production") {
app.get('/app.js', browserify('./client/app.js', {cache: false}));
app.get('/app.css', function(req, res) {
var cssFile = [
fs.readFileSync('./client/app.css', 'utf8'),
fs.readFileSync('./client/writer/writer.css', 'utf8')
].join('\n');
res.set('Content-Type', 'text/css');
res.send(cssFile);
});
}
// Expose the writer
// --------------
// Render app start page
app.route('/')
.get(function(req, res, next) {
res.render('app', {user: req.user});
});
app.listen(port, function(){
console.log("Lens running on port " + port);
console.log("http://127.0.0.1:"+port+"/");
});