Handle empty matrix ID (regression from 9de1ec1)

fixes #259
remotes/origin/HEAD
Konstantinos Sideris 7 years ago
parent f6c279f6f2
commit 735d508a29
  1. 2
      include/LoginPage.h
  2. 57
      src/LoginPage.cc
  3. 10
      src/MatrixClient.cc

@ -48,7 +48,7 @@ protected:
public slots: public slots:
// Displays errors produced during the login. // Displays errors produced during the login.
void loginError(QString error_message); void loginError(QString msg) { error_label_->setText(msg); }
private slots: private slots:
// Callback for the back button. // Callback for the back button.

@ -152,39 +152,22 @@ LoginPage::LoginPage(QSharedPointer<MatrixClient> client, QWidget *parent)
} }
void void
LoginPage::loginError(QString error) LoginPage::onMatrixIdEntered()
{ {
error_label_->setText(error); error_label_->setText("");
}
bool User user;
LoginPage::isMatrixIdValid()
{
auto matrix_id = matrixid_input_->text();
try { try {
parse<User>(matrix_id.toStdString()); user = parse<User>(matrixid_input_->text().toStdString());
return true;
} catch (const std::exception &e) { } catch (const std::exception &e) {
return false; return loginError("You have entered an invalid Matrix ID e.g @joe:matrix.org");
} }
return false; if (password_input_->text().isEmpty())
} return loginError(tr("Empty password"));
void
LoginPage::onMatrixIdEntered()
{
error_label_->setText("");
if (!isMatrixIdValid()) {
loginError("You have entered an invalid Matrix ID e.g @joe:matrix.org");
return;
} else if (password_input_->text().isEmpty()) {
loginError(tr("Empty password"));
}
QString homeServer = matrixid_input_->text().split(":").at(1); QString homeServer = QString::fromStdString(user.hostname());
if (homeServer != inferredServerAddress_) { if (homeServer != inferredServerAddress_) {
serverInput_->hide(); serverInput_->hide();
serverLayout_->removeWidget(errorIcon_); serverLayout_->removeWidget(errorIcon_);
@ -251,17 +234,21 @@ LoginPage::onLoginButtonClicked()
{ {
error_label_->setText(""); error_label_->setText("");
if (!isMatrixIdValid()) { User user;
loginError("You have entered an invalid Matrix ID e.g @joe:matrix.org");
} else if (password_input_->text().isEmpty()) { try {
loginError("Empty password"); user = parse<User>(matrixid_input_->text().toStdString());
} else { } catch (const std::exception &e) {
QString user = matrixid_input_->text().split(":").at(0).split("@").at(1); return loginError("You have entered an invalid Matrix ID e.g @joe:matrix.org");
QString password = password_input_->text();
client_->setServer(serverInput_->text());
client_->login(user, password);
emit loggingIn();
} }
if (password_input_->text().isEmpty())
return loginError(tr("Empty password"));
client_->setServer(serverInput_->text());
client_->login(QString::fromStdString(user.localpart()), password_input_->text());
emit loggingIn();
} }
void void

@ -123,11 +123,6 @@ MatrixClient::login(const QString &username, const QString &password) noexcept
int status_code = int status_code =
reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
if (reply->error()) {
emit loginError(reply->errorString());
return;
}
if (status_code == 403) { if (status_code == 403) {
emit loginError(tr("Wrong username or password")); emit loginError(tr("Wrong username or password"));
return; return;
@ -144,6 +139,11 @@ MatrixClient::login(const QString &username, const QString &password) noexcept
return; return;
} }
if (reply->error()) {
emit loginError(reply->errorString());
return;
}
try { try {
mtx::responses::Login login = mtx::responses::Login login =
nlohmann::json::parse(reply->readAll().data()); nlohmann::json::parse(reply->readAll().data());

Loading…
Cancel
Save