diff options
Diffstat (limited to 'www/wiki/resources/src/mediawiki/api/login.js')
-rw-r--r-- | www/wiki/resources/src/mediawiki/api/login.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/www/wiki/resources/src/mediawiki/api/login.js b/www/wiki/resources/src/mediawiki/api/login.js new file mode 100644 index 00000000..2b709aae --- /dev/null +++ b/www/wiki/resources/src/mediawiki/api/login.js @@ -0,0 +1,60 @@ +/** + * Make the two-step login easier. + * + * @author Niklas Laxström + * @class mw.Api.plugin.login + * @since 1.22 + */ +( function ( mw, $ ) { + 'use strict'; + + $.extend( mw.Api.prototype, { + /** + * @param {string} username + * @param {string} password + * @return {jQuery.Promise} See mw.Api#post + */ + login: function ( username, password ) { + var params, apiPromise, innerPromise, + api = this; + + params = { + action: 'login', + lgname: username, + lgpassword: password + }; + + apiPromise = api.post( params ); + + return apiPromise + .then( function ( data ) { + params.lgtoken = data.login.token; + innerPromise = api.post( params ) + .then( function ( data ) { + var code; + if ( data.login.result !== 'Success' ) { + // Set proper error code whenever possible + code = data.error && data.error.code || 'unknown'; + return $.Deferred().reject( code, data ); + } + return data; + } ); + return innerPromise; + } ) + .promise( { + abort: function () { + apiPromise.abort(); + if ( innerPromise ) { + innerPromise.abort(); + } + } + } ); + } + } ); + + /** + * @class mw.Api + * @mixins mw.Api.plugin.login + */ + +}( mediaWiki, jQuery ) ); |