Merge branch 'dbkr/try_lowercase_username' into matthew/status
This commit is contained in:
commit
063ab7e9b7
1 changed files with 55 additions and 19 deletions
64
src/Login.js
64
src/Login.js
|
@ -143,17 +143,8 @@ export default class Login {
|
||||||
Object.assign(loginParams, legacyParams);
|
Object.assign(loginParams, legacyParams);
|
||||||
|
|
||||||
const client = this._createTemporaryClient();
|
const client = this._createTemporaryClient();
|
||||||
return client.login('m.login.password', loginParams).then(function(data) {
|
|
||||||
return Promise.resolve({
|
const tryFallbackHs = (originalError) => {
|
||||||
homeserverUrl: self._hsUrl,
|
|
||||||
identityServerUrl: self._isUrl,
|
|
||||||
userId: data.user_id,
|
|
||||||
deviceId: data.device_id,
|
|
||||||
accessToken: data.access_token,
|
|
||||||
});
|
|
||||||
}, function(error) {
|
|
||||||
if (error.httpStatus === 403) {
|
|
||||||
if (self._fallbackHsUrl) {
|
|
||||||
const fbClient = Matrix.createClient({
|
const fbClient = Matrix.createClient({
|
||||||
baseUrl: self._fallbackHsUrl,
|
baseUrl: self._fallbackHsUrl,
|
||||||
idBaseUrl: this._isUrl,
|
idBaseUrl: this._isUrl,
|
||||||
|
@ -167,13 +158,58 @@ export default class Login {
|
||||||
deviceId: data.device_id,
|
deviceId: data.device_id,
|
||||||
accessToken: data.access_token,
|
accessToken: data.access_token,
|
||||||
});
|
});
|
||||||
}, function(fallback_error) {
|
}).catch((fallback_error) => {
|
||||||
// throw the original error
|
// throw the original error
|
||||||
throw 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) => {
|
||||||
|
// throw the original error
|
||||||
|
throw originalError;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
let originalLoginError = null;
|
||||||
|
return client.login('m.login.password', loginParams).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((error) => {
|
||||||
|
originalLoginError = error;
|
||||||
|
if (error.httpStatus === 403) {
|
||||||
|
if (self._fallbackHsUrl) {
|
||||||
|
return tryFallbackHs(originalLoginError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue