mirror of
https://github.com/vector-im/element-web.git
synced 2024-11-18 06:35:35 +08:00
Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
commit
839d0dd5d5
77
src/Login.js
77
src/Login.js
@ -143,6 +143,50 @@ export default class Login {
|
|||||||
Object.assign(loginParams, legacyParams);
|
Object.assign(loginParams, legacyParams);
|
||||||
|
|
||||||
const client = this._createTemporaryClient();
|
const client = this._createTemporaryClient();
|
||||||
|
|
||||||
|
const tryFallbackHs = (originalError) => {
|
||||||
|
const fbClient = Matrix.createClient({
|
||||||
|
baseUrl: self._fallbackHsUrl,
|
||||||
|
idBaseUrl: this._isUrl,
|
||||||
|
});
|
||||||
|
|
||||||
|
return fbClient.login('m.login.password', loginParams).then(function(data) {
|
||||||
|
return Promise.resolve({
|
||||||
|
homeserverUrl: self._fallbackHsUrl,
|
||||||
|
identityServerUrl: self._isUrl,
|
||||||
|
userId: data.user_id,
|
||||||
|
deviceId: data.device_id,
|
||||||
|
accessToken: data.access_token,
|
||||||
|
});
|
||||||
|
}).catch((fallback_error) => {
|
||||||
|
console.log("fallback HS login failed", fallback_error);
|
||||||
|
// throw the original error
|
||||||
|
throw originalError;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const tryLowercaseUsername = (originalError) => {
|
||||||
|
const loginParamsLowercase = Object.assign({}, loginParams, {
|
||||||
|
user: username.toLowerCase(),
|
||||||
|
identifier: {
|
||||||
|
user: username.toLowerCase(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return client.login('m.login.password', loginParamsLowercase).then(function(data) {
|
||||||
|
return Promise.resolve({
|
||||||
|
homeserverUrl: self._hsUrl,
|
||||||
|
identityServerUrl: self._isUrl,
|
||||||
|
userId: data.user_id,
|
||||||
|
deviceId: data.device_id,
|
||||||
|
accessToken: data.access_token,
|
||||||
|
});
|
||||||
|
}).catch((fallback_error) => {
|
||||||
|
console.log("Lowercase username login failed", fallback_error);
|
||||||
|
// throw the original error
|
||||||
|
throw originalError;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
let originalLoginError = null;
|
||||||
return client.login('m.login.password', loginParams).then(function(data) {
|
return client.login('m.login.password', loginParams).then(function(data) {
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
homeserverUrl: self._hsUrl,
|
homeserverUrl: self._hsUrl,
|
||||||
@ -151,28 +195,25 @@ export default class Login {
|
|||||||
deviceId: data.device_id,
|
deviceId: data.device_id,
|
||||||
accessToken: data.access_token,
|
accessToken: data.access_token,
|
||||||
});
|
});
|
||||||
}, function(error) {
|
}).catch((error) => {
|
||||||
|
originalLoginError = error;
|
||||||
if (error.httpStatus === 403) {
|
if (error.httpStatus === 403) {
|
||||||
if (self._fallbackHsUrl) {
|
if (self._fallbackHsUrl) {
|
||||||
const fbClient = Matrix.createClient({
|
return tryFallbackHs(originalLoginError);
|
||||||
baseUrl: self._fallbackHsUrl,
|
|
||||||
idBaseUrl: this._isUrl,
|
|
||||||
});
|
|
||||||
|
|
||||||
return fbClient.login('m.login.password', loginParams).then(function(data) {
|
|
||||||
return Promise.resolve({
|
|
||||||
homeserverUrl: self._fallbackHsUrl,
|
|
||||||
identityServerUrl: self._isUrl,
|
|
||||||
userId: data.user_id,
|
|
||||||
deviceId: data.device_id,
|
|
||||||
accessToken: data.access_token,
|
|
||||||
});
|
|
||||||
}, function(fallback_error) {
|
|
||||||
// throw the original error
|
|
||||||
throw error;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
throw originalLoginError;
|
||||||
|
}).catch((error) => {
|
||||||
|
if (
|
||||||
|
error.httpStatus === 403 &&
|
||||||
|
loginParams.identifier.type === 'm.id.user' &&
|
||||||
|
username.search(/[A-Z]/) > -1
|
||||||
|
) {
|
||||||
|
return tryLowercaseUsername(originalLoginError);
|
||||||
|
}
|
||||||
|
throw originalLoginError;
|
||||||
|
}).catch((error) => {
|
||||||
|
console.log("Login failed", error);
|
||||||
throw error;
|
throw error;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user