Skip to content
This repository has been archived by the owner on Sep 15, 2021. It is now read-only.

Commit

Permalink
Merge pull request #566 from nraboy/master
Browse files Browse the repository at this point in the history
feat(plugin:OAuth): Magento, ADFS, Vkontakte support  + fix to Close browser only after promise was made to prevent inaccurate cancel login flow messages
Add a timeout to the browser close. If a close attempt is made while the open transition is happening, it wont close. Adding a timeout is a workaround
Lastly, the createSignature method has been updated to account for token secrets.
  • Loading branch information
pbernasconi committed Jan 14, 2015
2 parents 11717fc + e4ddfc4 commit 8bb4198
Show file tree
Hide file tree
Showing 6 changed files with 2,621 additions and 2,036 deletions.
1,549 changes: 872 additions & 677 deletions demo/www/lib/ngCordova/dist/ng-cordova.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions demo/www/lib/ngCordova/dist/ng-cordova.min.js

Large diffs are not rendered by default.

1,549 changes: 872 additions & 677 deletions dist/ng-cordova.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions dist/ng-cordova.min.js

Large diffs are not rendered by default.

1,477 changes: 833 additions & 644 deletions src/plugins/oauth.js

Large diffs are not rendered by default.

70 changes: 38 additions & 32 deletions src/plugins/oauthUtility.js
Expand Up @@ -14,38 +14,44 @@ angular.module("ngCordova.plugins.oauthUtility", [])
* @param string secretKey
* @return object
*/
createSignature: function (method, endPoint, headerParameters, bodyParameters, secretKey) {
if (typeof jsSHA !== "undefined") {
var headerAndBodyParameters = angular.copy(headerParameters);
var bodyParameterKeys = Object.keys(bodyParameters);
for (var i = 0; i < bodyParameterKeys.length; i++) {
headerAndBodyParameters[bodyParameterKeys[i]] = encodeURIComponent(bodyParameters[bodyParameterKeys[i]]);
}
var signatureBaseString = method + "&" + encodeURIComponent(endPoint) + "&";
var headerAndBodyParameterKeys = (Object.keys(headerAndBodyParameters)).sort();
for (i = 0; i < headerAndBodyParameterKeys.length; i++) {
if (i == headerAndBodyParameterKeys.length - 1) {
signatureBaseString += encodeURIComponent(headerAndBodyParameterKeys[i] + "=" + headerAndBodyParameters[headerAndBodyParameterKeys[i]]);
} else {
signatureBaseString += encodeURIComponent(headerAndBodyParameterKeys[i] + "=" + headerAndBodyParameters[headerAndBodyParameterKeys[i]] + "&");
}
}
var oauthSignatureObject = new jsSHA(signatureBaseString, "TEXT");
headerParameters.oauth_signature = encodeURIComponent(oauthSignatureObject.getHMAC(encodeURIComponent(secretKey) + "&", "TEXT", "SHA-1", "B64"));
var headerParameterKeys = Object.keys(headerParameters);
var authorizationHeader = 'OAuth ';
for (i = 0; i < headerParameterKeys.length; i++) {
if (i == headerParameterKeys.length - 1) {
authorizationHeader += headerParameterKeys[i] + '="' + headerParameters[headerParameterKeys[i]] + '"';
} else {
authorizationHeader += headerParameterKeys[i] + '="' + headerParameters[headerParameterKeys[i]] + '",';
}
}
return {signature_base_string: signatureBaseString, authorization_header: authorizationHeader, signature: headerParameters.oauth_signature};
} else {
return "Missing jsSHA JavaScript library";
}
},
createSignature: function(method, endPoint, headerParameters, bodyParameters, secretKey, tokenSecret) {
if(typeof jsSHA !== "undefined") {
var headerAndBodyParameters = angular.copy(headerParameters);
var bodyParameterKeys = Object.keys(bodyParameters);
for(var i = 0; i < bodyParameterKeys.length; i++) {
headerAndBodyParameters[bodyParameterKeys[i]] = encodeURIComponent(bodyParameters[bodyParameterKeys[i]]);
}
var signatureBaseString = method + "&" + encodeURIComponent(endPoint) + "&";
var headerAndBodyParameterKeys = (Object.keys(headerAndBodyParameters)).sort();
for(i = 0; i < headerAndBodyParameterKeys.length; i++) {
if(i == headerAndBodyParameterKeys.length - 1) {
signatureBaseString += encodeURIComponent(headerAndBodyParameterKeys[i] + "=" + headerAndBodyParameters[headerAndBodyParameterKeys[i]]);
} else {
signatureBaseString += encodeURIComponent(headerAndBodyParameterKeys[i] + "=" + headerAndBodyParameters[headerAndBodyParameterKeys[i]] + "&");
}
}
var oauthSignatureObject = new jsSHA(signatureBaseString, "TEXT");

var encodedTokenSecret = '';
if (tokenSecret) {
encodedTokenSecret = encodeURIComponent(tokenSecret);
}

headerParameters.oauth_signature = encodeURIComponent(oauthSignatureObject.getHMAC(encodeURIComponent(secretKey) + "&" + encodedTokenSecret, "TEXT", "SHA-1", "B64"));
var headerParameterKeys = Object.keys(headerParameters);
var authorizationHeader = 'OAuth ';
for(i = 0; i < headerParameterKeys.length; i++) {
if(i == headerParameterKeys.length - 1) {
authorizationHeader += headerParameterKeys[i] + '="' + headerParameters[headerParameterKeys[i]] + '"';
} else {
authorizationHeader += headerParameterKeys[i] + '="' + headerParameters[headerParameterKeys[i]] + '",';
}
}
return { signature_base_string: signatureBaseString, authorization_header: authorizationHeader, signature: headerParameters.oauth_signature };
} else {
return "Missing jsSHA JavaScript library";
}
},

/*
* Create Random String Nonce
Expand Down

0 comments on commit 8bb4198

Please sign in to comment.