1
0
mirror of https://github.com/matrix-org/matrix-react-sdk.git synced 2025-07-16 22:01:54 +03:00

Don't trample over existing sessions when verifying email addresses

Fixes https://github.com/vector-im/riot-web/issues/6875

Instead of overwriting what we have, we'll load the session we have and try to warn the user that they have verified an address for someone else.
This commit is contained in:
Travis Ralston
2019-03-07 17:04:50 -07:00
parent 4a1b723ab5
commit 0e16f3a0cc
3 changed files with 83 additions and 24 deletions

View File

@ -109,6 +109,17 @@ export async function loadSession(opts) {
}
}
/**
* Gets the user ID of the persisted session, if one exists. This does not validate
* that the user's credentials still work, just that they exist and that a user ID
* is associated with them. The session is not loaded.
* @returns {String} The persisted session's owner, if an owner exists. Null otherwise.
*/
export function getStoredSessionOwner() {
const {hsUrl, userId, accessToken} = _getLocalstorageSessionVars();
return hsUrl && userId && accessToken ? userId : null;
}
/**
* @param {Object} queryParams string->string map of the
* query-parameters extracted from the real query-string of the starting
@ -214,6 +225,16 @@ function _registerAsGuest(hsUrl, isUrl, defaultDeviceDisplayName) {
});
}
function _getLocalstorageSessionVars() {
const hsUrl = localStorage.getItem("mx_hs_url");
const isUrl = localStorage.getItem("mx_is_url") || 'https://matrix.org';
const accessToken = localStorage.getItem("mx_access_token");
const userId = localStorage.getItem("mx_user_id");
const deviceId = localStorage.getItem("mx_device_id");
return {hsUrl, isUrl, accessToken, userId, deviceId};
}
// returns a promise which resolves to true if a session is found in
// localstorage
//
@ -228,11 +249,8 @@ async function _restoreFromLocalStorage() {
if (!localStorage) {
return false;
}
const hsUrl = localStorage.getItem("mx_hs_url");
const isUrl = localStorage.getItem("mx_is_url") || 'https://matrix.org';
const accessToken = localStorage.getItem("mx_access_token");
const userId = localStorage.getItem("mx_user_id");
const deviceId = localStorage.getItem("mx_device_id");
const {hsUrl, isUrl, accessToken, userId, deviceId} = _getLocalstorageSessionVars();
let isGuest;
if (localStorage.getItem("mx_is_guest") !== null) {