Instead of sending userId, userEmail, send sid, client_secret

This has the benefit of being possible from the _second_ riot instance, which may not actually have the email of the user registering. With these parameters, the RTS can get the email and user ID itself.

(see https://github.com/matrix-org/riot-team-server/pull/15)
pull/21833/head
Luke Barnard 2017-02-10 16:50:25 +00:00
parent a5a43bcd93
commit 29f5e88f6a
2 changed files with 12 additions and 9 deletions

View File

@ -50,18 +50,18 @@ export default class RtsClient {
* Track a referral with the Riot Team Server. This should be called once a referred * Track a referral with the Riot Team Server. This should be called once a referred
* user has been successfully registered. * user has been successfully registered.
* @param {string} referrer the user ID of one who referred the user to Riot. * @param {string} referrer the user ID of one who referred the user to Riot.
* @param {string} userId the user ID of the user being referred. * @param {string} sid the sign-up identity server session ID .
* @param {string} userEmail the email address linked to `userId`. * @param {string} clientSecret the sign-up client secret.
* @returns {Promise} a promise that resolves to { team_token: 'sometoken' } upon * @returns {Promise} a promise that resolves to { team_token: 'sometoken' } upon
* success. * success.
*/ */
trackReferral(referrer, userId, userEmail) { trackReferral(referrer, sid, clientSecret) {
return request(this._url + '/register', return request(this._url + '/register',
{ {
body: { body: {
referrer: referrer, referrer: referrer,
user_id: userId, session_id: sid,
user_email: userEmail, client_secret: clientSecret,
}, },
method: 'POST', method: 'POST',
} }

View File

@ -213,16 +213,19 @@ module.exports = React.createClass({
accessToken: response.access_token accessToken: response.access_token
}); });
// Done regardless of `teamSelected`. People registering with non-team emails
// will just nop. The point of this being we might not have the email address
// that the user registered with at this stage (depending on whether this
// is the client they initiated registration).
if ( if (
self._rtsClient && self._rtsClient &&
self.props.referrer && self.props.referrer
self.state.teamSelected
) { ) {
// Track referral, get team_token in order to retrieve team config // Track referral, get team_token in order to retrieve team config
self._rtsClient.trackReferral( self._rtsClient.trackReferral(
self.props.referrer, self.props.referrer,
response.user_id, self.registerLogic.params.idSid,
self.state.formVals.email self.registerLogic.params.clientSecret
).then((data) => { ).then((data) => {
const teamToken = data.team_token; const teamToken = data.team_token;
// Store for use /w welcome pages // Store for use /w welcome pages