Use alternate MSISDN submit URL when returned by HS

This changes MSISDN token submission to send to an arbitrary URL (instead of the
current IS) when the HS provides such a URL.

Fixes https://github.com/vector-im/riot-web/issues/10923
pull/21833/head
J. Ryan Stinnett 2019-09-23 12:21:25 +01:00
parent 351a3ebd67
commit e98b753c21
1 changed files with 20 additions and 6 deletions

View File

@ -35,6 +35,8 @@ import IdentityAuthClient from './IdentityAuthClient';
export default class AddThreepid {
constructor() {
this.clientSecret = MatrixClientPeg.get().generateClientSecret();
this.sessionId = null;
this.submitUrl = null;
}
/**
@ -101,6 +103,7 @@ export default class AddThreepid {
phoneCountry, phoneNumber, this.clientSecret, 1,
).then((res) => {
this.sessionId = res.sid;
this.submitUrl = res.submit_url;
return res;
}, function(err) {
if (err.errcode === 'M_THREEPID_IN_USE') {
@ -198,12 +201,23 @@ export default class AddThreepid {
async haveMsisdnToken(msisdnToken) {
const authClient = new IdentityAuthClient();
const identityAccessToken = await authClient.getAccessToken();
const result = await MatrixClientPeg.get().submitMsisdnToken(
let result;
if (this.submitUrl) {
result = await MatrixClientPeg.get().submitMsisdnTokenOtherUrl(
this.submitUrl,
this.sessionId,
this.clientSecret,
msisdnToken,
);
} else {
result = await MatrixClientPeg.get().submitMsisdnToken(
this.sessionId,
this.clientSecret,
msisdnToken,
identityAccessToken,
);
}
if (result.errcode) {
throw result;
}