-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.js
65 lines (56 loc) · 2.82 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
var http = require( 'http' );
var express = require( 'express' );
var bodyParser = require( 'body-parser' );
var cookieParser = require( 'cookie-parser' );
var session = require( 'express-session' );
var flash = require( 'express-flash' );
var logger = require( 'morgan' );
var errorHandler = require( 'errorhandler' );
var passport = require( 'passport' );
var httpProxy = require( 'http-proxy' );
/** Import own JS files **/
var config = require( './config/config' );
var secrets = require( './config/secrets' );
var User = require( './models/User' );
var authController = require( './controllers/auth' );
var userController = require( './controllers/user.js' );
var proxyController = require( './controllers/proxy' );
/** App Setup **/
var app = express( );
app.use( logger( 'dev' ) );
app.set( 'views', __dirname + '/views' );
app.set( 'view engine', 'jade' );
app.use( config.baseURL + 'static', express.static( __dirname + '/public' ) );
app.use( bodyParser.urlencoded( ) );
app.use( cookieParser( ) )
app.use( session( { key: 'orthus', secret: secrets.sessionSecret, cookie: { maxAge: 1000 * 60 * 60 *24 * 365 } } ) );
app.use( passport.initialize( ) );
app.use( passport.session( ) );
app.use( flash( ) );
var server = http.createServer( app.handle.bind( app ) )
/** Routes **/
app.post( config.baseURL + 'auth/google', passport.authenticate( 'google', { scope: ['email'] } ), function ( req, res ) {
// The request will be redirected to Google for authentication, so this
// function will not be called.
} );
app.get( config.baseURL + 'auth/google/callback', authController.getGoogleCallback );
app.get( config.baseURL + 'login', userController.getLogin );
app.get( config.baseURL + 'logout', userController.getLogout );
app.get( config.baseURL + 'signup', userController.getSignup );
app.post( config.baseURL + 'signup', userController.postSignup );
//Anything after this needs to be authenticated
app.use( authController.isAuthorized );
app.get( config.baseURL + 'admin', userController.admin, userController.getAdmin );
app.post( config.baseURL + 'admin/toggleAuthorize', userController.admin, userController.postToggleAuthorize );
app.post( config.baseURL + 'admin/toggleAdmin', userController.admin, userController.postToggleAdmin );
app.post( config.baseURL + 'admin/whitelist', userController.admin, userController.postWhitelist );
app.get( config.baseURL + 'admin/whitelist', userController.admin, userController.getWhitelist );
server.on( 'upgrade', proxyController.proxyWebSocket );
app.use( authController.addAuthHeader );
app.use( proxyController.proxy );
app.use( errorHandler( ) );
/** Finally start server **/
server.listen( config.port );
console.log( "Orthus listening on port: " + config.port );
console.log( "Orthus's google Callback route is: " + config.googleCallbackUrl );
console.log( "Orthus is proxying: " + config.proxiedResource );