Created
October 3, 2012 04:14
-
-
Save kborchers/3824959 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/authentication/adapters/rest.js b/src/authentication/adapters/rest.js | |
index 680e000..41e4b19 100644 | |
--- a/src/authentication/adapters/rest.js | |
+++ b/src/authentication/adapters/rest.js | |
@@ -6,196 +6,232 @@ | |
* | |
**/ | |
aerogear.auth.adapters.rest = function( moduleName, settings ) { | |
- var endPoints = settings && settings.endPoints || {}; | |
+ // Allow instantiation without using new | |
+ if ( !( this instanceof aerogear.auth.adapters.rest ) ) { | |
+ return new aerogear.auth.adapters.rest( moduleName, settings ); | |
+ } | |
+ | |
settings = settings || {}; | |
+ var endPoints = settings.endPoints || {}, | |
+ type = "rest", | |
+ name = moduleName, | |
+ agAuth = !!settings.agAuth, | |
+ baseURL = settings.baseURL, | |
+ tokenName = settings.tokenName || "Auth-Token"; | |
+ | |
+ // Privileged methods | |
+ this.isAuthenticated = function() { | |
+ return agAuth; | |
+ }; | |
- return { | |
- type: "rest", | |
- name: moduleName, | |
- agAuth: !!settings.agAuth, | |
- baseURL: settings.baseURL, | |
- tokenName: settings.tokenName || "Auth-Token", | |
- /** | |
- * aerogear.auth.adapters.rest#register( data[, options] ) -> Object | |
- * - data (Object): User profile to register | |
- * - options (Object): Options to pass to the register method. | |
- * | |
- **/ | |
- register: function( data, options ) { | |
- options = options || {}; | |
- | |
- var that = this, | |
- success = function( data, textStatus, jqXHR ) { | |
- sessionStorage.setItem( "ag-auth-" + that.name, that.agAuth ? jqXHR.getResponseHeader( that.tokenName ) : "true" ); | |
- | |
- if ( options.success ) { | |
- options.success.apply( this, arguments ); | |
- } | |
- }, | |
- error = function( jqXHR, textStatus, errorThrown ) { | |
- var args; | |
- | |
- try { | |
- jqXHR.responseJSON = JSON.parse( jqXHR.responseText ); | |
- args = [ jqXHR, textStatus, errorThrown ]; | |
- } catch( error ) { | |
- args = arguments; | |
- } | |
- | |
- if ( options.error ) { | |
- options.error.apply( this, args ); | |
- } | |
- }, | |
- extraOptions = { | |
- contentType: options.contentType, | |
- dataType: options.dataType, | |
- success: success, | |
- error: error, | |
- data: data | |
- }, | |
- url = ""; | |
- | |
- if ( options.baseURL ) { | |
- url = options.baseURL; | |
- } else if ( this.baseURL ) { | |
- url = this.baseURL; | |
- } | |
- if ( endPoints.register ) { | |
- url += endPoints.register; | |
- } else { | |
- url += "auth/register"; | |
- } | |
- if ( url.length ) { | |
- extraOptions.url = url; | |
- } | |
+ this.addAuth = function( settings ) { | |
+ settings.headers = {}; | |
+ settings.headers[ tokenName ] = sessionStorage.getItem( "ag-auth-" + name ); | |
+ return $.extend( {}, settings ); | |
+ }; | |
- return $.ajax( $.extend( {}, settings, { type: "POST" }, extraOptions ) ); | |
- }, | |
+ this.deauthorize = function() { | |
+ sessionStorage.removeItem( "ag-auth-" + name ); | |
+ }; | |
- /** | |
- * aerogear.auth.adapters.rest#login( data[, options] ) -> Object | |
- * - data (Object): A set of key value pairs representing the user's credentials | |
- * - options (Object): An object containing key/value pairs representing options | |
- * | |
- **/ | |
- login: function( data, options ) { | |
- options = options || {}; | |
- | |
- var that = this, | |
- success = function( data, textStatus, jqXHR ) { | |
- sessionStorage.setItem( "ag-auth-" + that.name, that.agAuth ? jqXHR.getResponseHeader( that.tokenName ) : "true" ); | |
- | |
- if ( options.success ) { | |
- options.success.apply( this, arguments ); | |
- } | |
- }, | |
- error = function( jqXHR, textStatus, errorThrown ) { | |
- var args; | |
- | |
- try { | |
- jqXHR.responseJSON = JSON.parse( jqXHR.responseText ); | |
- args = [ jqXHR, textStatus, errorThrown ]; | |
- } catch( error ) { | |
- args = arguments; | |
- } | |
- | |
- if ( options.error ) { | |
- options.error.apply( this, args ); | |
- } | |
- }, | |
- extraOptions = { | |
- contentType: options.contentType, | |
- dataType: options.dataType, | |
- success: success, | |
- error: error, | |
- data: data | |
- }, | |
- url = ""; | |
- | |
- if ( options.baseURL ) { | |
- url = options.baseURL; | |
- } else if ( this.baseURL ) { | |
- url = this.baseURL; | |
- } | |
- if ( endPoints.login ) { | |
- url += endPoints.login; | |
- } else { | |
- url += "auth/login"; | |
+ this.getSettings = function() { | |
+ return settings; | |
+ }; | |
+ this.getEndPoints = function() { | |
+ return endPoints; | |
+ }; | |
+ this.getType = function() { | |
+ return type; | |
+ }; | |
+ this.getName = function() { | |
+ return name; | |
+ }; | |
+ this.getBaseURL = function() { | |
+ return baseURL; | |
+ }; | |
+ this.getTokenName = function() { | |
+ return tokenName; | |
+ }; | |
+ }; | |
+ | |
+ //Public Methods | |
+ | |
+ /** | |
+ * aerogear.auth.adapters.rest#register( data[, options] ) -> Object | |
+ * - data (Object): User profile to register | |
+ * - options (Object): Options to pass to the register method. | |
+ * | |
+ **/ | |
+ aerogear.auth.adapters.rest.prototype.register = function( data, options ) { | |
+ options = options || {}; | |
+ | |
+ var that = this, | |
+ name = this.getName(), | |
+ tokenName = this.getTokenName(), | |
+ baseURL = this.getBaseURL(), | |
+ endPoints = this.getEndPoints(), | |
+ success = function( data, textStatus, jqXHR ) { | |
+ sessionStorage.setItem( "ag-auth-" + name, that.isAuthenticated() ? jqXHR.getResponseHeader( tokenName ) : "true" ); | |
+ | |
+ if ( options.success ) { | |
+ options.success.apply( this, arguments ); | |
} | |
- if ( url.length ) { | |
- extraOptions.url = url; | |
+ }, | |
+ error = function( jqXHR, textStatus, errorThrown ) { | |
+ var args; | |
+ | |
+ try { | |
+ jqXHR.responseJSON = JSON.parse( jqXHR.responseText ); | |
+ args = [ jqXHR, textStatus, errorThrown ]; | |
+ } catch( error ) { | |
+ args = arguments; | |
} | |
- return $.ajax( $.extend( {}, settings, { type: "POST" }, extraOptions ) ); | |
+ if ( options.error ) { | |
+ options.error.apply( this, args ); | |
+ } | |
+ }, | |
+ extraOptions = { | |
+ contentType: options.contentType, | |
+ dataType: options.dataType, | |
+ success: success, | |
+ error: error, | |
+ data: data | |
}, | |
+ url = ""; | |
+ | |
+ if ( options.baseURL ) { | |
+ url = options.baseURL; | |
+ } else if ( baseURL ) { | |
+ url = baseURL; | |
+ } | |
+ if ( endPoints.register ) { | |
+ url += endPoints.register; | |
+ } else { | |
+ url += "auth/register"; | |
+ } | |
+ if ( url.length ) { | |
+ extraOptions.url = url; | |
+ } | |
+ | |
+ return $.ajax( $.extend( {}, this.getSettings(), { type: "POST" }, extraOptions ) ); | |
+ }; | |
- logout: function( options ) { | |
- options = options || {}; | |
- | |
- var that = this, | |
- success = function( data, textStatus, jqXHR ) { | |
- that.deauthorize(); | |
- | |
- if ( options.success ) { | |
- options.success.apply( this, arguments ); | |
- } | |
- }, | |
- error = function( jqXHR, textStatus, errorThrown ) { | |
- var args; | |
- | |
- try { | |
- jqXHR.responseJSON = JSON.parse( jqXHR.responseText ); | |
- args = [ jqXHR, textStatus, errorThrown ]; | |
- } catch( error ) { | |
- args = arguments; | |
- } | |
- | |
- if ( options.error ) { | |
- options.error.apply( this, args ); | |
- } | |
- }, | |
- extraOptions = { | |
- success: success, | |
- error: error | |
- }, | |
- url = ""; | |
- | |
- if ( options.baseURL ) { | |
- url = options.baseURL; | |
- } else if ( this.baseURL ) { | |
- url = this.baseURL; | |
- } | |
- if ( endPoints.logout ) { | |
- url += endPoints.logout; | |
- } else { | |
- url += "auth/logout"; | |
+ /** | |
+ * aerogear.auth.adapters.rest#login( data[, options] ) -> Object | |
+ * - data (Object): A set of key value pairs representing the user's credentials | |
+ * - options (Object): An object containing key/value pairs representing options | |
+ * | |
+ **/ | |
+ aerogear.auth.adapters.rest.prototype.login = function( data, options ) { | |
+ options = options || {}; | |
+ | |
+ var that = this, | |
+ name = this.getName(), | |
+ tokenName = this.getTokenName(), | |
+ baseURL = this.getBaseURL(), | |
+ endPoints = this.getEndPoints(), | |
+ success = function( data, textStatus, jqXHR ) { | |
+ sessionStorage.setItem( "ag-auth-" + name, that.isAuthenticated() ? jqXHR.getResponseHeader( tokenName ) : "true" ); | |
+ | |
+ if ( options.success ) { | |
+ options.success.apply( this, arguments ); | |
} | |
- if ( url.length ) { | |
- extraOptions.url = url; | |
+ }, | |
+ error = function( jqXHR, textStatus, errorThrown ) { | |
+ var args; | |
+ | |
+ try { | |
+ jqXHR.responseJSON = JSON.parse( jqXHR.responseText ); | |
+ args = [ jqXHR, textStatus, errorThrown ]; | |
+ } catch( error ) { | |
+ args = arguments; | |
} | |
- if ( this.agAuth ) { | |
- extraOptions.headers = {}; | |
- extraOptions.headers[ this.tokenName ] = sessionStorage.getItem( "ag-auth-" + this.name ); | |
+ if ( options.error ) { | |
+ options.error.apply( this, args ); | |
} | |
- | |
- return $.ajax( $.extend( {}, settings, { type: "POST" }, extraOptions ) ); | |
}, | |
- | |
- isAuthenticated: function() { | |
- var auth = sessionStorage.getItem( "ag-auth-" + this.name ); | |
- return !!auth; | |
+ extraOptions = { | |
+ contentType: options.contentType, | |
+ dataType: options.dataType, | |
+ success: success, | |
+ error: error, | |
+ data: data | |
}, | |
+ url = ""; | |
+ | |
+ if ( options.baseURL ) { | |
+ url = options.baseURL; | |
+ } else if ( baseURL ) { | |
+ url = baseURL; | |
+ } | |
+ if ( endPoints.login ) { | |
+ url += endPoints.login; | |
+ } else { | |
+ url += "auth/login"; | |
+ } | |
+ if ( url.length ) { | |
+ extraOptions.url = url; | |
+ } | |
+ | |
+ return $.ajax( $.extend( {}, this.getSettings(), { type: "POST" }, extraOptions ) ); | |
+ }; | |
+ | |
+ aerogear.auth.adapters.rest.prototype.logout = function( options ) { | |
+ options = options || {}; | |
- addAuth: function( settings ) { | |
- settings.headers = {}; | |
- settings.headers[ this.tokenName ] = sessionStorage.getItem( "ag-auth-" + this.name ); | |
- return $.extend( {}, settings ); | |
+ var that = this, | |
+ name = this.getName(), | |
+ tokenName = this.getTokenName(), | |
+ baseURL = this.getBaseURL(), | |
+ endPoints = this.getEndPoints(), | |
+ success = function( data, textStatus, jqXHR ) { | |
+ that.deauthorize(); | |
+ | |
+ if ( options.success ) { | |
+ options.success.apply( this, arguments ); | |
+ } | |
}, | |
+ error = function( jqXHR, textStatus, errorThrown ) { | |
+ var args; | |
+ | |
+ try { | |
+ jqXHR.responseJSON = JSON.parse( jqXHR.responseText ); | |
+ args = [ jqXHR, textStatus, errorThrown ]; | |
+ } catch( error ) { | |
+ args = arguments; | |
+ } | |
- deauthorize: function() { | |
- sessionStorage.removeItem( "ag-auth-" + this.name ); | |
- } | |
- }; | |
+ if ( options.error ) { | |
+ options.error.apply( this, args ); | |
+ } | |
+ }, | |
+ extraOptions = { | |
+ success: success, | |
+ error: error | |
+ }, | |
+ url = ""; | |
+ | |
+ if ( options.baseURL ) { | |
+ url = options.baseURL; | |
+ } else if ( baseURL ) { | |
+ url = baseURL; | |
+ } | |
+ if ( endPoints.logout ) { | |
+ url += endPoints.logout; | |
+ } else { | |
+ url += "auth/logout"; | |
+ } | |
+ if ( url.length ) { | |
+ extraOptions.url = url; | |
+ } | |
+ | |
+ if ( this.isAuthenticated() ) { | |
+ extraOptions.headers = {}; | |
+ extraOptions.headers[ tokenName ] = sessionStorage.getItem( "ag-auth-" + name ); | |
+ } | |
+ | |
+ return $.ajax( $.extend( {}, this.getSettings(), { type: "POST" }, extraOptions ) ); | |
}; | |
})( aerogear, jQuery ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment