diff --git a/spectrum/src/frontends/slack/SlackUserRegistration.cpp b/spectrum/src/frontends/slack/SlackUserRegistration.cpp index a8a9897e..b2aa4fb1 100644 --- a/spectrum/src/frontends/slack/SlackUserRegistration.cpp +++ b/spectrum/src/frontends/slack/SlackUserRegistration.cpp @@ -126,8 +126,17 @@ std::string SlackUserRegistration::handleOAuth2Code(const std::string &code, con } } + std::string domain = getTeamDomain(token); + if (domain.empty()) { + return "The token you have provided is invalid"; + } + UserInfo user; - user.jid = getTeamDomain(token); + 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"; diff --git a/src/SQLite3Backend.cpp b/src/SQLite3Backend.cpp index eedbf94c..6a1b907e 100644 --- a/src/SQLite3Backend.cpp +++ b/src/SQLite3Backend.cpp @@ -120,7 +120,7 @@ bool SQLite3Backend::connect() { if (createDatabase() == false) return false; - PREP_STMT(m_setUser, "INSERT OR REPLACE INTO " + m_prefix + "users (id, jid, uin, password, language, encoding, last_login, vip) VALUES (?, ?, ?, ?, ?, ?, DATETIME('NOW'), ?)"); + PREP_STMT(m_setUser, "INSERT OR REPLACE INTO " + m_prefix + "users (jid, uin, password, language, encoding, last_login, vip) VALUES (?, ?, ?, ?, ?, DATETIME('NOW'), ?)"); PREP_STMT(m_getUser, "SELECT id, jid, uin, password, encoding, language, vip FROM " + m_prefix + "users WHERE jid=?"); PREP_STMT(m_removeUser, "DELETE FROM " + m_prefix + "users WHERE id=?"); @@ -223,18 +223,12 @@ bool SQLite3Backend::exec(const std::string &query) { void SQLite3Backend::setUser(const UserInfo &user) { sqlite3_reset(m_setUser); - if (user.id == 0) { - sqlite3_bind_null(m_setUser, 1); - } - else { - sqlite3_bind_int(m_setUser, 1, user.id); - } - sqlite3_bind_text(m_setUser, 2, user.jid.c_str(), -1, SQLITE_STATIC); - sqlite3_bind_text(m_setUser, 3, user.uin.c_str(), -1, SQLITE_STATIC); - sqlite3_bind_text(m_setUser, 4, user.password.c_str(), -1, SQLITE_STATIC); - sqlite3_bind_text(m_setUser, 5, user.language.c_str(), -1, SQLITE_STATIC); - sqlite3_bind_text(m_setUser, 6, user.encoding.c_str(), -1, SQLITE_STATIC); - sqlite3_bind_int (m_setUser, 7, user.vip); + sqlite3_bind_text(m_setUser, 1, user.jid.c_str(), -1, SQLITE_STATIC); + sqlite3_bind_text(m_setUser, 2, user.uin.c_str(), -1, SQLITE_STATIC); + sqlite3_bind_text(m_setUser, 3, user.password.c_str(), -1, SQLITE_STATIC); + sqlite3_bind_text(m_setUser, 4, user.language.c_str(), -1, SQLITE_STATIC); + sqlite3_bind_text(m_setUser, 5, user.encoding.c_str(), -1, SQLITE_STATIC); + sqlite3_bind_int (m_setUser, 6, user.vip); if(sqlite3_step(m_setUser) != SQLITE_DONE) { LOG4CXX_ERROR(logger, "setUser query"<< (sqlite3_errmsg(m_db) == NULL ? "" : sqlite3_errmsg(m_db)));