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 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits