Brion VIBBER has submitted this change and it was merged. Change subject: Add M#getSessionId ......................................................................
Add M#getSessionId Use it to generate/fetch a random session ID stored in localStorage. Change-Id: I501e5a7a4e04797dcc372346262771e8f97aa58b --- M javascripts/common/mf-application.js M tests/js/test_application.js 2 files changed, 37 insertions(+), 0 deletions(-) Approvals: Brion VIBBER: Verified; Looks good to me, approved diff --git a/javascripts/common/mf-application.js b/javascripts/common/mf-application.js index c22d425..fd4a72e 100644 --- a/javascripts/common/mf-application.js +++ b/javascripts/common/mf-application.js @@ -187,6 +187,32 @@ } } + /** + * Retrieve and, if not present, generate a random session ID + * (32 alphanumeric characters). + * + * @return {string} + */ + function getSessionId() { + var sessionId; + if ( typeof localStorage === 'undefined' ) { + return null; + } + sessionId = localStorage.getItem( 'sessionId' ); + + if ( !sessionId ) { + // FIXME: use mw.user.generateRandomSessionId when we can, + // as of now mediawiki.user has no mobile target (yay, targets in RL!) + sessionId = ''; + while ( sessionId.length < 32 ) { + // http://stackoverflow.com/a/8084248/365238 + sessionId += Math.random().toString(36).slice(2, 32 + 2 - sessionId.length); + } + localStorage.setItem( 'sessionId', sessionId ); + } + return sessionId; + } + $( init ); $.extend( M, { @@ -196,6 +222,7 @@ getApiUrl: getApiUrl, getOrigin: getOrigin, getPageArrayFromApiResponse: getPageArrayFromApiResponse, + getSessionId: getSessionId, isLoggedIn: isLoggedIn, log: log, message: message, diff --git a/tests/js/test_application.js b/tests/js/test_application.js index f599f07..867bdd5 100644 --- a/tests/js/test_application.js +++ b/tests/js/test_application.js @@ -42,4 +42,14 @@ strictEqual( MFE.require( 'testModule2' ), 'test module 2' ); } ); + +module( 'MobileFrontend common functions' ); + +test( '#getSessionId', function() { + var sessionId = MFE.getSessionId(); + strictEqual( typeof sessionId, 'string', 'session ID is a string' ); + strictEqual( sessionId.length, 32, 'session ID is 32 chars long' ); + strictEqual( MFE.getSessionId(), sessionId, 'session ID is not regenerated if present' ); +} ); + }( jQuery, mw.mobileFrontend ) ); -- To view, visit https://gerrit.wikimedia.org/r/50052 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I501e5a7a4e04797dcc372346262771e8f97aa58b Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/MobileFrontend Gerrit-Branch: master Gerrit-Owner: JGonera <jgon...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: awjrichards <aricha...@wikimedia.org> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits