properly identifying the internal/admin user
authorMarcus Eggenberger <egs@quassel-irc.org>
Tue, 21 Oct 2008 14:52:09 +0000 (16:52 +0200)
committerMarcus Eggenberger <egs@quassel-irc.org>
Tue, 21 Oct 2008 16:52:53 +0000 (18:52 +0200)
src/core/SQL/SQLite/11/select_internaluser.sql [new file with mode: 0644]
src/core/core.cpp
src/core/sql.qrc
src/core/sqlitestorage.cpp
src/core/sqlitestorage.h
src/core/storage.h

diff --git a/src/core/SQL/SQLite/11/select_internaluser.sql b/src/core/SQL/SQLite/11/select_internaluser.sql
new file mode 100644 (file)
index 0000000..8486d18
--- /dev/null
@@ -0,0 +1,2 @@
+SELECT min(userid)
+FROM quasseluser
index bf611aa..6506061 100644 (file)
@@ -625,7 +625,10 @@ void Core::setupInternalClientSession(SignalProxy *proxy) {
     setupCoreForInternalUsage();
   }
 
     setupCoreForInternalUsage();
   }
 
-  UserId uid = 3; // FIXME!!!11
+  mutex.lock();
+  UserId uid = storage->internalUser();
+  mutex.unlock();
+
   // Find or create session for validated user
   SessionThread *sess;
   if(sessions.contains(uid))
   // Find or create session for validated user
   SessionThread *sess;
   if(sessions.contains(uid))
index da98f98..16fdaa6 100644 (file)
@@ -34,6 +34,7 @@
     <file>./SQL/SQLite/11/select_buffers.sql</file>
     <file>./SQL/SQLite/11/select_buffers_for_network.sql</file>
     <file>./SQL/SQLite/11/select_connected_networks.sql</file>
     <file>./SQL/SQLite/11/select_buffers.sql</file>
     <file>./SQL/SQLite/11/select_buffers_for_network.sql</file>
     <file>./SQL/SQLite/11/select_connected_networks.sql</file>
+    <file>./SQL/SQLite/11/select_internaluser.sql</file>
     <file>./SQL/SQLite/11/select_messageRange.sql</file>
     <file>./SQL/SQLite/11/select_messages.sql</file>
     <file>./SQL/SQLite/11/select_messagesOffset.sql</file>
     <file>./SQL/SQLite/11/select_messageRange.sql</file>
     <file>./SQL/SQLite/11/select_messages.sql</file>
     <file>./SQL/SQLite/11/select_messagesOffset.sql</file>
index 7f4dd78..7c46333 100644 (file)
@@ -113,6 +113,18 @@ UserId SqliteStorage::validateUser(const QString &user, const QString &password)
   }
 }
 
   }
 }
 
+UserId SqliteStorage::internalUser() {
+  QSqlQuery query(logDb());
+  query.prepare(queryString("select_internaluser"));
+  query.exec();
+
+  if(query.first()) {
+    return query.value(0).toInt();
+  } else {
+    return 0;
+  }
+}
+
 void SqliteStorage::delUser(UserId user) {
   QSqlQuery query(logDb());
   query.prepare(queryString("delete_backlog_by_uid"));
 void SqliteStorage::delUser(UserId user) {
   QSqlQuery query(logDb());
   query.prepare(queryString("delete_backlog_by_uid"));
index ed04bf3..4b49d41 100644 (file)
@@ -49,6 +49,7 @@ public slots:
   virtual void updateUser(UserId user, const QString &password);
   virtual void renameUser(UserId user, const QString &newName);
   virtual UserId validateUser(const QString &user, const QString &password);
   virtual void updateUser(UserId user, const QString &password);
   virtual void renameUser(UserId user, const QString &newName);
   virtual UserId validateUser(const QString &user, const QString &password);
+  virtual UserId internalUser();
   virtual void delUser(UserId user);
   virtual void setUserSetting(UserId userId, const QString &settingName, const QVariant &data);
   virtual QVariant getUserSetting(UserId userId, const QString &settingName, const QVariant &defaultData = QVariant());
   virtual void delUser(UserId user);
   virtual void setUserSetting(UserId userId, const QString &settingName, const QVariant &data);
   virtual QVariant getUserSetting(UserId userId, const QString &settingName, const QVariant &defaultData = QVariant());
index 2016ed3..9bf9a0a 100644 (file)
@@ -102,6 +102,11 @@ class Storage : public QObject {
      */
     virtual UserId validateUser(const QString &user, const QString &password) = 0;
 
      */
     virtual UserId validateUser(const QString &user, const QString &password) = 0;
 
+    //! Determine the UserId of the internal user
+    /** \return A valid UserId if the password matches the username; 0 else
+     */
+    virtual UserId internalUser() = 0;
+
     //! Remove a core user from storage.
     /** \param user     The userid to delete
      */
     //! Remove a core user from storage.
     /** \param user     The userid to delete
      */