-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathweb.js
136 lines (107 loc) · 3.94 KB
/
web.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
/**
* Module dependencies.
*/
// Require express (the web application framework)
var express = require('express');
// Require the crypto module
var crypto = require('crypto');
// Require modules for mongo database connections
var mongoose = require('mongoose');
var mongoStore = require('connect-mongodb');
// Create a variable for our database
var db;
// Require our models
// Require our user models
var userModels = require('./models/user.js');
// Require our routes (controllers)
var routes = require('./routes/index.js');
var testingRoutes = require('./routes/test.js');
var sessionRoutes = require('./routes/sessions.js');
var usersRoutes = require('./routes/users.js');
var gamesRoutes = require('./routes/games.js');
// Create the server
var app = module.exports = express.createServer();
helpers = require('./helpers.js');
// helpers are...
app.helpers(helpers.helpers);
// dynamic helpers are functions that are run when processing every request
app.dynamicHelpers(helpers.dynamicHelpers);
// If the env var MONGOHQ_URL is set, use it, otherwise run local.
if ( process.env.MONGOHQ_URL !== undefined ) {
app.set('db-uri', process.env.MONGOHQ_URL);
} else {
// Set the db-uri variable for the database
// Set it based on the deployment environment
app.configure('development', function(){
app.set('db-uri', 'mongodb://localhost/rpg-notepad-development');
});
app.configure('production', function(){
app.set('db-uri', 'mongodb://localhost/rpg-notepad-production');
});
app.configure('test', function(){
app.set('db-uri', 'mongodb://localhost/rpg-notepad-test');
});
}
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
// Note:
// Using app.set with one arg acts as a get..
app.use(express.session({ store: mongoStore(app.set('db-uri')), secret: 'topsecret' }));
app.use(app.router);
app.use(express.static(__dirname + '/public'));
// Tell the renderer to let us handle the layouts
// We do this so as we can do more advanced block manipulations in jade.
// e.g. block append head
// which wouldn't be possible with the default layout handling
app.set('view options', {
layout: false
});
});
// Error Handling Configuration
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
app.configure('test', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
/**
* Define our models, and then connect our database.
*/
// Define our user models
userModels.defineModels(mongoose, function() {
// assign user and login token vars from the defined models
app.User = User = mongoose.model('User');
app.LoginToken = LoginToken = mongoose.model('LoginToken');
// connect the db
db = mongoose.connect(app.set('db-uri'));
})
// Standard Routes
app.get('/', sessionRoutes.setUser, routes.index);
// Games Routes
// TODO -> Consider nesting these routes under user
app.get('/games', sessionRoutes.setUser, sessionRoutes.authUser, gamesRoutes.index);
// Testing Routes
app.get('/test/unit', testingRoutes.unit_test);
app.get('/test/render', testingRoutes.render_test);
// Sessions Routes
app.get('/sessions/new', sessionRoutes.sessionsNew);
app.post('/sessions', sessionRoutes.sessionsCreate);
app.del('/sessions', sessionRoutes.setUser, sessionRoutes.authUser, sessionRoutes.sessionsDestroy);
// Users Routes
// Process 'create' for a user
app.post('/users.:format?', usersRoutes.userCreate);
// Process 'new' for a user
app.get('/users/new', usersRoutes.userNew);
// Start listening on port 3000
var port = process.env.PORT || 3000;
app.listen(port);
// Log that we're up and running
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);