Merge pull request #234 from matrix-org/email_login

Support logging in with email addresses (or other threepids)
This commit is contained in:
David Baker 2015-08-20 11:15:42 +01:00
commit be27d81808

View file

@ -74,16 +74,23 @@ class LoginRestServlet(ClientV1RestServlet):
@defer.inlineCallbacks @defer.inlineCallbacks
def do_password_login(self, login_submission): def do_password_login(self, login_submission):
if not login_submission["user"].startswith('@'): if 'medium' in login_submission and 'address' in login_submission:
login_submission["user"] = UserID.create( user_id = yield self.hs.get_datastore().get_user_id_by_threepid(
login_submission["user"], self.hs.hostname).to_string() login_submission['medium'], login_submission['address']
)
else:
user_id = login_submission['user']
if not user_id.startswith('@'):
user_id = UserID.create(
user_id, self.hs.hostname).to_string()
token = yield self.handlers.auth_handler.login_with_password( token = yield self.handlers.auth_handler.login_with_password(
user_id=login_submission["user"], user_id=user_id,
password=login_submission["password"]) password=login_submission["password"])
result = { result = {
"user_id": login_submission["user"], # may have changed "user_id": user_id, # may have changed
"access_token": token, "access_token": token,
"home_server": self.hs.hostname, "home_server": self.hs.hostname,
} }