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);