From 4f038ef95fe08fa0788464b03a5029e2052643bf Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Thu, 7 Jan 2016 20:00:50 +0100 Subject: [PATCH] Slack: Fix OAuth2 flow --- libtransport/UserRegistration.cpp | 2 +- .../frontends/slack/SlackUserRegistration.cpp | 30 +++++++------------ 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/libtransport/UserRegistration.cpp b/libtransport/UserRegistration.cpp index 4da63760..d7b326f5 100644 --- a/libtransport/UserRegistration.cpp +++ b/libtransport/UserRegistration.cpp @@ -51,7 +51,7 @@ bool UserRegistration::registerUser(const UserInfo &row, bool allowPasswordChang UserInfo dummy; bool registered = m_storageBackend->getUser(row.jid, dummy); - if (registered && !allowPasswordChange) { + if (!registered || (registered && allowPasswordChange)) { m_storageBackend->setUser(row); doUserRegistration(row); onUserRegistered(row); diff --git a/spectrum/src/frontends/slack/SlackUserRegistration.cpp b/spectrum/src/frontends/slack/SlackUserRegistration.cpp index b2aa4fb1..bb96f6dd 100644 --- a/spectrum/src/frontends/slack/SlackUserRegistration.cpp +++ b/spectrum/src/frontends/slack/SlackUserRegistration.cpp @@ -132,31 +132,23 @@ std::string SlackUserRegistration::handleOAuth2Code(const std::string &code, con } UserInfo user; - if (m_storageBackend->getUser(domain, user)) { - return "You have already registered this Spectrum 2 transport for this Slack Team"; - } - - user.jid = domain; user.uin = ""; user.password = ""; - user.language = "en"; - user.encoding = token; // Use encoding as a token handler... it's BAD, but easy... - user.vip = 0; user.id = 0; - registerUser(user); + m_storageBackend->getUser(domain, user); + + user.jid = domain; + user.language = "en"; + user.encoding = ""; + user.vip = 0; + + registerUser(user, true); m_storageBackend->getUser(user.jid, user); - if (oauth2) { - std::string value = data[2]; - int type = (int) TYPE_STRING; - m_storageBackend->getUserSetting(user.id, "bot_token", type, value); - } - else { - std::string value = token; - int type = (int) TYPE_STRING; - m_storageBackend->getUserSetting(user.id, "bot_token", type, value); - } + std::string value = token; + int type = (int) TYPE_STRING; + m_storageBackend->getUserSetting(user.id, "bot_token", type, value); LOG4CXX_INFO(logger, "Registered Slack user " << user.jid);