From: Trevor Parscal Date: Wed, 8 Dec 2010 23:18:58 +0000 (+0000) Subject: Added name and sessionId methods to user object - now anonymous users have an automat... X-Git-Tag: 1.31.0-rc.0~33428 X-Git-Url: https://git.cyclocoop.org/%242?a=commitdiff_plain;h=03db0654c455bf75b47d2b7d1a157838181d39d6;p=lhc%2Fweb%2Fwiklou.git Added name and sessionId methods to user object - now anonymous users have an automatically generated persistent (for 30 days at a time via a cookie) session identifier. Use mediaWiki.user.sessionId() to get it. --- diff --git a/resources/Resources.php b/resources/Resources.php index c533da6125..c889b4c7ef 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -326,6 +326,7 @@ return array( 'mediawiki' => array( 'scripts' => 'resources/mediawiki/mediawiki.js', 'debugScripts' => 'resources/mediawiki/mediawiki.log.js', + 'dependencies' => array( 'jquery.cookie' ), 'debugRaw' => false ), 'mediawiki.util' => array( diff --git a/resources/mediawiki/mediawiki.js b/resources/mediawiki/mediawiki.js index 66fbedc170..5974357fef 100644 --- a/resources/mediawiki/mediawiki.js +++ b/resources/mediawiki/mediawiki.js @@ -225,7 +225,62 @@ window.mediaWiki = new ( function( $ ) { * User object */ function User() { + + /* Private Members */ + + var that = this; + + /* Public Members */ + this.options = new Map(); + + /* Public Methods */ + + /* + * Generates a random user session ID (32 alpha-numeric characters). + * + * This information would potentially be stored in a cookie to identify a user during a + * session. It's uniqueness should not be depended on. + * + * @return string random set of 32 alpha-numeric characters + */ + function generateSessionId() { + var id = ''; + var seed = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'; + for ( var i = 0, r; i < 32; i++ ) { + r = Math.floor( Math.random() * seed.length ); + id += seed.substring( r, r + 1 ); + } + return id; + } + + /* + * Gets the current user's name. + * + * @return mixed user name string or null if users is anonymous + */ + this.name = function() { + return mediaWiki.config.get( 'wgUserName' ); + }; + + /* + * Gets the current user's name or a random session ID automatically generated and kept in + * a cookie. + * + * @return string user name or random session ID + */ + this.sessionId = function () { + var name = that.name(); + if ( name ) { + return name; + } + var sessionId = $.cookie( 'mediaWiki.user.sessionId' ); + if ( typeof sessionId == 'undefined' || sessionId == null ) { + sessionId = generateSessionId(); + $.cookie( 'mediaWiki.user.sessionId', sessionId, { 'expires': 30, 'path': '/' } ); + } + return sessionId; + }; } /* Public Members */