From 0f3cffcfd9380d5979690d767fb808b0c4253d98 Mon Sep 17 00:00:00 2001
From: Konstantinos Sideris <sideris.konstantin@gmail.com>
Date: Mon, 10 Apr 2017 01:47:15 +0300
Subject: [PATCH] Use Matrix ID for login

---
 include/LoginPage.h   |  2 +-
 src/InputValidator.cc |  3 +--
 src/LoginPage.cc      | 23 ++++++++++++-----------
 3 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/include/LoginPage.h b/include/LoginPage.h
index 760e10551..a431a41ec 100644
--- a/include/LoginPage.h
+++ b/include/LoginPage.h
@@ -73,7 +73,7 @@ private:
 	QHBoxLayout *form_wrapper_;
 	QVBoxLayout *form_layout_;
 
-	TextField *username_input_;
+	TextField *matrixid_input_;
 	TextField *password_input_;
 
 	InputValidator *matrix_id_validator_;
diff --git a/src/InputValidator.cc b/src/InputValidator.cc
index 3713c5018..7906b570b 100644
--- a/src/InputValidator.cc
+++ b/src/InputValidator.cc
@@ -17,9 +17,8 @@
 
 #include "InputValidator.h"
 
-// FIXME: Maybe change the regex to match the real Matrix ID format and not email.
 InputValidator::InputValidator(QObject *parent)
-    : matrix_id_("[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}")
+    : matrix_id_("@[A-Za-z0-9._%+-]+:[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}")
     , matrix_localpart_("[A-za-z0-9._%+-]{3,}")
     , matrix_password_(".{8,}")
     , server_domain_("(?!\\-)(?:[a-zA-Z\\d\\-]{0,62}[a-zA-Z\\d]\\.){1,126}(?!\\d+)[a-zA-Z\\d]{1,63}")
diff --git a/src/LoginPage.cc b/src/LoginPage.cc
index 12b7aba8a..97497b7b8 100644
--- a/src/LoginPage.cc
+++ b/src/LoginPage.cc
@@ -62,10 +62,11 @@ LoginPage::LoginPage(QWidget *parent)
 	form_wrapper_->addWidget(form_widget_);
 	form_wrapper_->addStretch(1);
 
-	username_input_ = new TextField();
-	username_input_->setLabel("Username");
-	username_input_->setInkColor("#577275");
-	username_input_->setBackgroundColor("#f9f9f9");
+	matrixid_input_ = new TextField();
+	matrixid_input_->setLabel("Matrix ID");
+	matrixid_input_->setInkColor("#577275");
+	matrixid_input_->setBackgroundColor("#f9f9f9");
+	matrixid_input_->setPlaceholderText("e.g @joe:matrix.org");
 
 	password_input_ = new TextField();
 	password_input_->setLabel("Password");
@@ -73,7 +74,7 @@ LoginPage::LoginPage(QWidget *parent)
 	password_input_->setBackgroundColor("#f9f9f9");
 	password_input_->setEchoMode(QLineEdit::Password);
 
-	form_layout_->addWidget(username_input_, Qt::AlignHCenter, 0);
+	form_layout_->addWidget(matrixid_input_, Qt::AlignHCenter, 0);
 	form_layout_->addWidget(password_input_, Qt::AlignHCenter, 0);
 
 	button_layout_ = new QHBoxLayout();
@@ -106,10 +107,10 @@ LoginPage::LoginPage(QWidget *parent)
 
 	connect(back_button_, SIGNAL(clicked()), this, SLOT(onBackButtonClicked()));
 	connect(login_button_, SIGNAL(clicked()), this, SLOT(onLoginButtonClicked()));
-	connect(username_input_, SIGNAL(returnPressed()), login_button_, SLOT(click()));
+	connect(matrixid_input_, SIGNAL(returnPressed()), login_button_, SLOT(click()));
 	connect(password_input_, SIGNAL(returnPressed()), login_button_, SLOT(click()));
 
-	username_input_->setValidator(matrix_id_validator_->id_);
+	matrixid_input_->setValidator(matrix_id_validator_->id_);
 
 	setLayout(top_layout_);
 }
@@ -124,13 +125,13 @@ void LoginPage::onLoginButtonClicked()
 {
 	error_label_->setText("");
 
-	if (!username_input_->hasAcceptableInput()) {
+	if (!matrixid_input_->hasAcceptableInput()) {
 		loginError("Invalid Matrix ID");
 	} else if (password_input_->text().isEmpty()) {
 		loginError("Empty password");
 	} else {
-		QString user = username_input_->text().split("@").at(0);
-		QString home_server = username_input_->text().split("@").at(1);
+		QString user = matrixid_input_->text().split(":").at(0).split("@").at(1);
+		QString home_server = matrixid_input_->text().split(":").at(1);
 		QString password = password_input_->text();
 
 		emit userLogin(user, password, home_server);
@@ -139,7 +140,7 @@ void LoginPage::onLoginButtonClicked()
 
 void LoginPage::reset()
 {
-	username_input_->clear();
+	matrixid_input_->clear();
 	password_input_->clear();
 }
 
-- 
GitLab