From 61449458cfb0e600f6d36d4168fca9d820f9beb0 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Mon, 23 Sep 2019 12:20:28 +0100 Subject: [PATCH] Add support for sending MSISDN tokens to alternate URLs Part of https://github.com/vector-im/riot-web/issues/10923 --- src/base-apis.js | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/base-apis.js b/src/base-apis.js index f939e17c598..0726833bf4f 100644 --- a/src/base-apis.js +++ b/src/base-apis.js @@ -1963,7 +1963,7 @@ MatrixBaseApis.prototype.requestMsisdnToken = async function( }; /** - * Submits an MSISDN token to the identity server + * Submits a MSISDN token to the identity server * * This is used when submitting the code sent by SMS to a phone number. * The ID server has an equivalent API for email but the js-sdk does @@ -2013,6 +2013,41 @@ MatrixBaseApis.prototype.submitMsisdnToken = async function( } }; +/** + * Submits a MSISDN token to an arbitrary URL. + * + * This is used when submitting the code sent by SMS to a phone number in the + * newer 3PID flow where the homeserver validates 3PID ownership (as part of + * `requestAdd3pidMsisdnToken`). The homeserver response may include a + * `submit_url` to specify where the token should be sent, and this helper can + * be used to pass the token to this URL. + * + * @param {string} url The URL to submit the token to + * @param {string} sid The sid given in the response to requestToken + * @param {string} clientSecret A secret binary string generated by the client. + * This must be the same value submitted in the requestToken call. + * @param {string} msisdnToken The MSISDN token, as enetered by the user. + * + * @return {module:client.Promise} Resolves: Object, currently with no parameters. + * @return {module:http-api.MatrixError} Rejects: with an error response. + */ +MatrixBaseApis.prototype.submitMsisdnTokenOtherUrl = function( + url, + sid, + clientSecret, + msisdnToken, +) { + const params = { + sid: sid, + client_secret: clientSecret, + token: msisdnToken, + }; + + return this._http.requestOtherUrl( + undefined, "POST", url, undefined, params, + ); +}; + /** * Gets the V2 hashing information from the identity server. Primarily useful for * lookups.