diff --git a/src/models/api/requestModels.js b/src/models/api/requestModels.js index e98cd93f..ac9f8369 100644 --- a/src/models/api/requestModels.js +++ b/src/models/api/requestModels.js @@ -24,31 +24,31 @@ var TokenRequest = function (email, masterPasswordHash, provider, token, remembe if (device) { this.device = device; } +}; - this.toIdentityToken = function () { - var obj = { - grant_type: 'password', - username: this.email, - password: this.masterPasswordHash, - scope: 'api offline_access', - client_id: 'browser' - }; - - if (this.device) { - obj.deviceType = this.device.type; - obj.deviceIdentifier = this.device.identifier; - obj.deviceName = this.device.name; - obj.devicePushToken = this.device.pushToken; - } - - if (this.token && this.provider !== null && (typeof this.provider !== 'undefined')) { - obj.twoFactorToken = this.token; - obj.twoFactorProvider = this.provider; - obj.twoFactorRemember = this.remember ? '1' : '0'; - } - - return obj; +TokenRequest.prototype.toIdentityToken = function () { + var obj = { + grant_type: 'password', + username: this.email, + password: this.masterPasswordHash, + scope: 'api offline_access', + client_id: 'browser' }; + + if (this.device) { + obj.deviceType = this.device.type; + obj.deviceIdentifier = this.device.identifier; + obj.deviceName = this.device.name; + obj.devicePushToken = this.device.pushToken; + } + + if (this.token && this.provider !== null && (typeof this.provider !== 'undefined')) { + obj.twoFactorToken = this.token; + obj.twoFactorProvider = this.provider; + obj.twoFactorRemember = this.remember ? '1' : '0'; + } + + return obj; }; var RegisterRequest = function (email, masterPasswordHash, masterPasswordHint, key) { diff --git a/src/services/apiService.js b/src/services/apiService.js index cfc43b1e..b111d70e 100644 --- a/src/services/apiService.js +++ b/src/services/apiService.js @@ -55,6 +55,10 @@ function initApiService() { ApiService.prototype.postIdentityToken = function (tokenRequest, success, successWithTwoFactor, error) { var self = this; + // Hack for Edge. For some reason tokenRequest loses proto. Rebuild it here. + tokenRequest = new TokenRequest(tokenRequest.email, tokenRequest.masterPasswordHash, tokenRequest.provider, + tokenRequest.token, tokenRequest.remeber, tokenRequest.device); + $.ajax({ type: 'POST', url: self.identityBaseUrl + '/connect/token',