1 /*jshint node:true, indent:2, curly:false, eqeqeq:true, immed:true, latedef:true, newcap:true, noarg:true,
2 regexp:true, undef:true, strict:true, trailing:true, white:true */
3 /*global X:true, XM:true */
9 Keep track of all of the routes and make them available from one place.
10 Note that we also determine here which routes are behind the login wall
13 Note that this means each route does not take care of its authentication
14 requirements, which is ok because some routes have variable authentication
15 requirements depending on how they're used (maintenance). But that does
16 mean that the routes should not be called directly. They should always
17 be called through these exports.
19 It would be possible to make the routes smarter and allow them to "register"
20 themselves and their path. But that would come at the cost of indirection.
23 var logoutPath = {redirectTo: "/logout"},
24 // this is going to look magical down where it's used. Basically ensureLoggedIn
25 // is a function that returns another function, and express allows routes to
26 // be defined in such a way as to chain these types of functions together in an array.
27 ensureLogin = require('connect-ensure-login').ensureLoggedIn(logoutPath),
28 analysis = require('./analysis'),
29 app = require('./app'),
30 auth = require('./auth'),
31 authorizeNet = require('./authorize-net'),
32 changePassword = require('./change_password'),
33 clientCode = require('./client_code'),
34 email = require('./email'),
35 exxport = require('./export'),
36 data = require('./data'),
37 file = require('./file'),
38 generateReport = require('./generate_report'),
39 generateOauthKey = require('./generate_oauth_key'),
40 locale = require('./locale'),
41 passport = require('passport'),
42 redirector = require('./redirector'),
43 recover = require('./recover'),
44 restDiscovery = require('./restDiscovery'),
45 restRouter = require('./restRouter'),
46 revokeOauthToken = require('./revoke_oauth_token'),
47 vcfExport = require('./vcfExport');
50 // Authentication-related routes
52 exports.app = [ensureLogin, app.serveApp];
53 exports.debug = [ensureLogin, app.serveDebug];
54 exports.login = auth.login;
55 exports.loginForm = auth.loginForm;
56 exports.logout = auth.logout;
57 exports.scope = auth.scope;
58 exports.scopeForm = auth.scopeForm;
60 exports.forgotPassword = recover.forgotPasswordForm;
61 exports.recoverPassword = recover.recoverPassword;
62 exports.verifyRecoverPassword = recover.verifyRecoverPassword;
63 exports.resetRecoveredPassword = recover.resetRecoveredPassword;
65 // Data-passthrough routes
67 exports.queryDatabase = data.queryDatabase;
68 exports.delete = [ensureLogin, data.delete];
69 exports.get = [ensureLogin, data.get];
70 exports.patch = [ensureLogin, data.patch];
71 exports.post = [ensureLogin, data.post];
75 exports.restDiscoveryList = [
78 exports.restDiscoveryGetRest = [
81 exports.restRouter = [
82 passport.authenticate('bearer', { session: false }),
89 exports.creditCard = [ensureLogin, authorizeNet.transact];
90 exports.changePassword = [ensureLogin, changePassword.changePassword];
91 exports.clientCode = [ensureLogin, clientCode.clientCode];
92 exports.email = [ensureLogin, email.email];
93 exports.exxport = [ensureLogin, exxport.exxport];
94 exports.file = [ensureLogin, file.file];
95 exports.generateOauthKey = [ensureLogin, generateOauthKey.generateKey];
96 exports.generateReport = [ensureLogin, generateReport.generateReport];
97 exports.locale = [ensureLogin, locale.locale];
98 exports.redirect = redirector.redirect;
99 exports.analysis = [ensureLogin, analysis.analysis];
100 exports.resetPassword = [ensureLogin, changePassword.resetPassword];
101 exports.revokeOauthToken = [ensureLogin, revokeOauthToken.revokeToken];
102 exports.vcfExport = [ensureLogin, vcfExport.vcfExport];