Ejegg has uploaded a new change for review. https://gerrit.wikimedia.org/r/197997
Change subject: Reduce session-enforcement copypasta ...................................................................... Reduce session-enforcement copypasta Use a middleware function instead of copy-pasting the login check everywhere. Change-Id: I789e0570fc74d97eecc2c2d170e2593fa5833664 --- M routes/board.js M routes/data.js M routes/user.js M routes/widget.js M server.js 5 files changed, 22 insertions(+), 49 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/dash refs/changes/97/197997/1 diff --git a/routes/board.js b/routes/board.js index 835cd15..17030bd 100644 --- a/routes/board.js +++ b/routes/board.js @@ -2,10 +2,6 @@ module.exports = { save: function( req, res ) { - if ( !req.session || !req.session.passport || !req.session.passport.user ) { - res.json( { error: 'Error: Not logged in' } ); - return; - } var board = { ownerId: req.session.passport.user.localId, displayName: req.body.displayName, @@ -23,10 +19,6 @@ }); }, get: function( req, res ) { - if ( !req.session || !req.session.passport || !req.session.passport.user ) { - res.json( { error: 'Error: Not logged in' } ); - return; - } persistence.getBoard( req.params.id, req.session.passport.user.localId ).then( function( board ) { res.json( board ); }, function( error ) { diff --git a/routes/data.js b/routes/data.js index 7dcee8e..6766dc5 100644 --- a/routes/data.js +++ b/routes/data.js @@ -250,11 +250,6 @@ result, cacheKey; - if ( !req.session || !req.session.passport || !req.session.passport.user ) { - res.json( { error: 'Error: Not logged in' } ); - return; - } - if ( !widget ) { res.json( { error: 'Error: ' + req.params.widget + ' is not a valid widget' } ); return; diff --git a/routes/user.js b/routes/user.js index 4917755..51c2430 100644 --- a/routes/user.js +++ b/routes/user.js @@ -2,11 +2,6 @@ module.exports = { info: function( req, res ) { - if ( !req.session || !req.session.passport || !req.session.passport.user ) { - res.json( false ); - return; - } - var user = req.session.passport.user; res.json( { @@ -19,11 +14,6 @@ } ); }, boards: function( req, res ) { - if ( !req.session || !req.session.passport || !req.session.passport.user ) { - res.json( { error: 'Error: Not logged in' } ); - return; - } - persistence.listBoards( req.session.passport.user.localId ).then( function( boards ) { res.json( boards ); }, function( error ) { @@ -31,11 +21,6 @@ }); }, widgetInstances: function( req, res ) { - if ( !req.session || !req.session.passport || !req.session.passport.user ) { - res.json( { error: 'Error: Not logged in' } ); - return; - } - persistence.listWidgetInstances( req.session.passport.user.localId ).then( function( instances ) { res.json( instances ); }, function( error ) { diff --git a/routes/widget.js b/routes/widget.js index 48c5985..a999acb 100644 --- a/routes/widget.js +++ b/routes/widget.js @@ -7,10 +7,6 @@ }); }, saveInstance: function( req, res ) { - if ( !req.session || !req.session.passport || !req.session.passport.user ) { - res.json( { error: 'Error: Not logged in' } ); - return; - } var instance = { widgetId: req.body.widgetId, ownerId: req.session.passport.user.localId, @@ -29,10 +25,6 @@ }); }, getInstance: function( req, res ) { - if ( !req.session || !req.session.passport || !req.session.passport.user ) { - res.json( { error: 'Error: Not logged in' } ); - return; - } persistence.getWidgetInstance( req.params.id, req.session.passport.user.localId ).then( function( instance ) { res.json( instance ); }, function( error ) { diff --git a/server.js b/server.js index 13663ce..53599d3 100644 --- a/server.js +++ b/server.js @@ -9,7 +9,8 @@ config = require( './config.js' ), persistence = require( './persistence.js' ), server, - serverConfig; + serverConfig, + loginCheck; logger.debug( 'Dash starting up' ); @@ -67,21 +68,29 @@ app.use( passport.initialize() ); app.use( passport.session() ); +loginCheck = function( req, res, next ) { + if ( !req.session || !req.session.passport || !req.session.passport.user ) { + res.json( { error: 'Error: Not logged in' } ); + return; + } + return next(); +} + app.set( 'views', __dirname + '/src/components' ); app.set( 'view options', { pretty: true } ); -app.get( '/data/:widget', routes.data ); -app.get( '/metadata/:widget', routes.metadata ); -app.get( '/user/info', routes.user.info ); -app.get( '/widget', routes.widget.list ); -app.get( '/widget-instance', routes.user.widgetInstances ); -app.post( '/widget-instance', routes.widget.saveInstance ); -app.put( '/widget-instance/:id', routes.widget.saveInstance ); -app.get( '/widget-instance/:id', routes.widget.getInstance ); -app.get( '/board', routes.user.boards ); -app.post( '/board', routes.board.save ); -app.put( '/board/:id', routes.board.save ); -app.get( '/board/:id', routes.board.get ); +app.get( '/data/:widget', loginCheck, routes.data ); +app.get( '/metadata/:widget', loginCheck, routes.metadata ); +app.get( '/user/info', loginCheck, routes.user.info ); +app.get( '/widget', loginCheck, routes.widget.list ); +app.get( '/widget-instance', loginCheck, routes.user.widgetInstances ); +app.post( '/widget-instance', loginCheck, routes.widget.saveInstance ); +app.put( '/widget-instance/:id', loginCheck, routes.widget.saveInstance ); +app.get( '/widget-instance/:id', loginCheck, routes.widget.getInstance ); +app.get( '/board', loginCheck, routes.user.boards ); +app.post( '/board', loginCheck, routes.board.save ); +app.put( '/board/:id', loginCheck, routes.board.save ); +app.get( '/board/:id', loginCheck, routes.board.get ); /*jslint -W024*/ app.use( express.static( __dirname + ( config.debug ? '/src' : '/dist' ) ) ); -- To view, visit https://gerrit.wikimedia.org/r/197997 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I789e0570fc74d97eecc2c2d170e2593fa5833664 Gerrit-PatchSet: 1 Gerrit-Project: wikimedia/fundraising/dash Gerrit-Branch: master Gerrit-Owner: Ejegg <eeggles...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits