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

Reply via email to