From 5924533c6d0f9777d38c01ed7e1510a55db2b876 Mon Sep 17 00:00:00 2001 From: Michael Marley Date: Sat, 7 Feb 2015 15:40:23 -0500 Subject: [PATCH] Add support for password hash versioning Previously, Quassel would always use an unsalted SHA1 hash. This patch introduces a version field for the password, allowing for using a better hash. (No new hash is added yet.) Users will be automatically upgraded to the newest hash whenever they login or change their passwords. This is implemented by adding a new integer field to hold the hash version in the DB. Additionally, the password field in PostgreSQL has been expanded to a TEXT field, allowing larger hash values to be stored in the future. The password hashing code has also been refactored to make it easier to introduce new hashes without fooling around in the DB driver code. --- .../SQL/PostgreSQL/16/insert_quasseluser.sql | 3 - .../SQL/PostgreSQL/16/select_authuser.sql | 3 - .../SQL/PostgreSQL/16/update_userpassword.sql | 3 - .../{16 => 17}/delete_backlog_by_uid.sql | 0 .../{16 => 17}/delete_backlog_for_buffer.sql | 0 .../{16 => 17}/delete_backlog_for_network.sql | 0 .../{16 => 17}/delete_buffer_for_bufferid.sql | 0 .../{16 => 17}/delete_buffers_by_uid.sql | 0 .../{16 => 17}/delete_buffers_for_network.sql | 0 .../PostgreSQL/{16 => 17}/delete_identity.sql | 0 .../delete_ircservers_for_network.sql | 0 .../PostgreSQL/{16 => 17}/delete_network.sql | 0 .../{16 => 17}/delete_networks_by_uid.sql | 0 .../PostgreSQL/{16 => 17}/delete_nicks.sql | 0 .../{16 => 17}/delete_quasseluser.sql | 0 .../PostgreSQL/{16 => 17}/insert_buffer.sql | 0 .../PostgreSQL/{16 => 17}/insert_identity.sql | 0 .../PostgreSQL/{16 => 17}/insert_message.sql | 0 .../PostgreSQL/{16 => 17}/insert_network.sql | 0 .../SQL/PostgreSQL/{16 => 17}/insert_nick.sql | 0 .../SQL/PostgreSQL/17/insert_quasseluser.sql | 3 + .../PostgreSQL/{16 => 17}/insert_sender.sql | 0 .../PostgreSQL/{16 => 17}/insert_server.sql | 0 .../{16 => 17}/insert_user_setting.sql | 0 .../{16 => 17}/migrate_write_backlog.sql | 0 .../{16 => 17}/migrate_write_buffer.sql | 0 .../{16 => 17}/migrate_write_identity.sql | 0 .../migrate_write_identity_nick.sql | 0 .../{16 => 17}/migrate_write_ircserver.sql | 0 .../{16 => 17}/migrate_write_network.sql | 0 .../{16 => 17}/migrate_write_quasseluser.sql | 0 .../{16 => 17}/migrate_write_sender.sql | 0 .../{16 => 17}/migrate_write_usersetting.sql | 0 .../SQL/PostgreSQL/17/select_authuser.sql | 3 + .../{16 => 17}/select_bufferByName.sql | 0 .../{16 => 17}/select_bufferExists.sql | 0 .../{16 => 17}/select_buffer_by_id.sql | 0 .../select_buffer_lastseen_messages.sql | 0 .../select_buffer_markerlinemsgids.sql | 0 .../PostgreSQL/{16 => 17}/select_buffers.sql | 0 .../{16 => 17}/select_buffers_for_network.sql | 0 .../{16 => 17}/select_checkidentity.sql | 0 .../{16 => 17}/select_connected_networks.sql | 0 .../{16 => 17}/select_identities.sql | 0 .../{16 => 17}/select_internaluser.sql | 0 .../PostgreSQL/{16 => 17}/select_messages.sql | 0 .../{16 => 17}/select_messagesAll.sql | 0 .../{16 => 17}/select_messagesAllNew.sql | 0 .../{16 => 17}/select_messagesNewerThan.sql | 0 .../{16 => 17}/select_messagesRange.sql | 0 .../{16 => 17}/select_networkExists.sql | 0 .../{16 => 17}/select_network_awaymsg.sql | 0 .../{16 => 17}/select_network_usermode.sql | 0 .../{16 => 17}/select_networks_for_user.sql | 0 .../PostgreSQL/{16 => 17}/select_nicks.sql | 0 .../{16 => 17}/select_persistent_channels.sql | 0 .../PostgreSQL/{16 => 17}/select_senderid.sql | 0 .../{16 => 17}/select_servers_for_network.sql | 0 .../{16 => 17}/select_user_setting.sql | 0 .../PostgreSQL/{16 => 17}/select_userid.sql | 0 .../{16 => 17}/setup_000_quasseluser.sql | 0 .../{16 => 17}/setup_010_sender.sql | 0 .../{16 => 17}/setup_020_identity.sql | 0 .../{16 => 17}/setup_030_identity_nick.sql | 0 .../{16 => 17}/setup_040_network.sql | 0 .../{16 => 17}/setup_050_buffer.sql | 0 .../{16 => 17}/setup_060_backlog.sql | 0 .../{16 => 17}/setup_070_coreinfo.sql | 0 .../{16 => 17}/setup_080_ircservers.sql | 0 .../{16 => 17}/setup_090_backlog_idx.sql | 0 .../{16 => 17}/setup_100_user_setting.sql | 0 .../{16 => 17}/setup_110_alter_sender_seq.sql | 0 .../setup_120_alter_messageid_seq.sql | 0 .../{16 => 17}/update_backlog_bufferid.sql | 0 .../{16 => 17}/update_buffer_lastseen.sql | 0 .../update_buffer_markerlinemsgid.sql | 0 .../{16 => 17}/update_buffer_name.sql | 0 .../update_buffer_persistent_channel.sql | 0 .../update_buffer_set_channel_key.sql | 0 .../PostgreSQL/{16 => 17}/update_identity.sql | 0 .../PostgreSQL/{16 => 17}/update_network.sql | 0 .../{16 => 17}/update_network_connected.sql | 0 .../{16 => 17}/update_network_set_awaymsg.sql | 0 .../update_network_set_usermode.sql | 0 .../{16 => 17}/update_user_setting.sql | 0 .../PostgreSQL/{16 => 17}/update_username.sql | 0 .../SQL/PostgreSQL/17/update_userpassword.sql | 3 + ..._alter_quasseluser_add_passwordversion.sql | 3 + src/core/SQL/SQLite/17/insert_quasseluser.sql | 2 - src/core/SQL/SQLite/17/select_authuser.sql | 3 - .../SQL/SQLite/17/update_userpassword.sql | 3 - .../{17 => 18}/delete_backlog_by_uid.sql | 0 .../{17 => 18}/delete_backlog_for_buffer.sql | 0 .../{17 => 18}/delete_backlog_for_network.sql | 0 .../{17 => 18}/delete_buffer_for_bufferid.sql | 0 .../{17 => 18}/delete_buffers_by_uid.sql | 0 .../{17 => 18}/delete_buffers_for_network.sql | 0 .../SQL/SQLite/{17 => 18}/delete_identity.sql | 0 .../delete_ircservers_for_network.sql | 0 .../SQL/SQLite/{17 => 18}/delete_network.sql | 0 .../{17 => 18}/delete_networks_by_uid.sql | 0 .../SQL/SQLite/{17 => 18}/delete_nicks.sql | 0 .../SQLite/{17 => 18}/delete_quasseluser.sql | 0 .../SQL/SQLite/{17 => 18}/insert_buffer.sql | 0 .../SQL/SQLite/{17 => 18}/insert_identity.sql | 0 .../SQL/SQLite/{17 => 18}/insert_message.sql | 0 .../SQL/SQLite/{17 => 18}/insert_network.sql | 0 .../SQL/SQLite/{17 => 18}/insert_nick.sql | 0 src/core/SQL/SQLite/18/insert_quasseluser.sql | 2 + .../SQL/SQLite/{17 => 18}/insert_sender.sql | 0 .../SQL/SQLite/{17 => 18}/insert_server.sql | 0 .../SQLite/{17 => 18}/insert_user_setting.sql | 0 .../{17 => 18}/migrate_read_backlog.sql | 0 .../SQLite/{17 => 18}/migrate_read_buffer.sql | 0 .../{17 => 18}/migrate_read_identity.sql | 0 .../{17 => 18}/migrate_read_identity_nick.sql | 0 .../{17 => 18}/migrate_read_ircserver.sql | 0 .../{17 => 18}/migrate_read_network.sql | 0 .../{17 => 18}/migrate_read_quasseluser.sql | 0 .../SQLite/{17 => 18}/migrate_read_sender.sql | 0 .../{17 => 18}/migrate_read_usersetting.sql | 0 src/core/SQL/SQLite/18/select_authuser.sql | 3 + .../SQLite/{17 => 18}/select_bufferByName.sql | 0 .../SQLite/{17 => 18}/select_bufferExists.sql | 0 .../SQLite/{17 => 18}/select_buffer_by_id.sql | 0 .../select_buffer_lastseen_messages.sql | 0 .../select_buffer_markerlinemsgids.sql | 0 .../SQL/SQLite/{17 => 18}/select_buffers.sql | 0 .../{17 => 18}/select_buffers_for_merge.sql | 0 .../{17 => 18}/select_buffers_for_network.sql | 0 .../{17 => 18}/select_checkidentity.sql | 0 .../{17 => 18}/select_connected_networks.sql | 0 .../SQLite/{17 => 18}/select_identities.sql | 0 .../SQLite/{17 => 18}/select_internaluser.sql | 0 .../SQL/SQLite/{17 => 18}/select_messages.sql | 0 .../SQLite/{17 => 18}/select_messagesAll.sql | 0 .../{17 => 18}/select_messagesAllNew.sql | 0 .../{17 => 18}/select_messagesNewerThan.sql | 0 .../{17 => 18}/select_messagesNewestK.sql | 0 .../{17 => 18}/select_networkExists.sql | 0 .../{17 => 18}/select_network_awaymsg.sql | 0 .../{17 => 18}/select_network_usermode.sql | 0 .../{17 => 18}/select_networks_for_user.sql | 0 .../SQL/SQLite/{17 => 18}/select_nicks.sql | 0 .../{17 => 18}/select_persistent_channels.sql | 0 .../{17 => 18}/select_servers_for_network.sql | 0 .../SQLite/{17 => 18}/select_user_setting.sql | 0 .../SQL/SQLite/{17 => 18}/select_userid.sql | 0 .../{17 => 18}/setup_000_quasseluser.sql | 0 .../SQLite/{17 => 18}/setup_010_sender.sql | 0 .../SQLite/{17 => 18}/setup_020_network.sql | 0 .../SQLite/{17 => 18}/setup_030_buffer.sql | 0 .../{17 => 18}/setup_040_buffer_idx.sql | 0 .../{17 => 18}/setup_050_buffer_cname_idx.sql | 0 .../SQLite/{17 => 18}/setup_060_backlog.sql | 0 .../SQLite/{17 => 18}/setup_070_coreinfo.sql | 0 .../{17 => 18}/setup_080_ircservers.sql | 0 .../{17 => 18}/setup_090_backlog_idx.sql | 0 .../{17 => 18}/setup_100_backlog_idx2.sql | 0 .../{17 => 18}/setup_110_buffer_user_idx.sql | 0 .../{17 => 18}/setup_120_user_setting.sql | 0 .../SQLite/{17 => 18}/setup_130_identity.sql | 0 .../{17 => 18}/setup_140_identity_nick.sql | 0 .../{17 => 18}/update_backlog_bufferid.sql | 0 .../{17 => 18}/update_buffer_lastseen.sql | 0 .../update_buffer_markerlinemsgid.sql | 0 .../SQLite/{17 => 18}/update_buffer_name.sql | 0 .../update_buffer_persistent_channel.sql | 0 .../update_buffer_set_channel_key.sql | 0 .../SQL/SQLite/{17 => 18}/update_identity.sql | 0 .../SQL/SQLite/{17 => 18}/update_network.sql | 0 .../{17 => 18}/update_network_connected.sql | 0 .../{17 => 18}/update_network_set_awaymsg.sql | 0 .../update_network_set_usermode.sql | 0 .../SQLite/{17 => 18}/update_user_setting.sql | 0 .../SQL/SQLite/{17 => 18}/update_username.sql | 0 .../SQL/SQLite/18/update_userpassword.sql | 3 + ..._alter_quasseluser_add_passwordversion.sql | 2 + src/core/postgresqlstorage.cpp | 9 +- src/core/sql.qrc | 458 +++++++++--------- src/core/sqlitestorage.cpp | 17 +- src/core/storage.cpp | 31 +- src/core/storage.h | 15 +- 183 files changed, 311 insertions(+), 258 deletions(-) delete mode 100644 src/core/SQL/PostgreSQL/16/insert_quasseluser.sql delete mode 100644 src/core/SQL/PostgreSQL/16/select_authuser.sql delete mode 100644 src/core/SQL/PostgreSQL/16/update_userpassword.sql rename src/core/SQL/PostgreSQL/{16 => 17}/delete_backlog_by_uid.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/delete_backlog_for_buffer.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/delete_backlog_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/delete_buffer_for_bufferid.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/delete_buffers_by_uid.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/delete_buffers_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/delete_identity.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/delete_ircservers_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/delete_network.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/delete_networks_by_uid.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/delete_nicks.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/delete_quasseluser.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/insert_buffer.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/insert_identity.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/insert_message.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/insert_network.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/insert_nick.sql (100%) create mode 100644 src/core/SQL/PostgreSQL/17/insert_quasseluser.sql rename src/core/SQL/PostgreSQL/{16 => 17}/insert_sender.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/insert_server.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/insert_user_setting.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/migrate_write_backlog.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/migrate_write_buffer.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/migrate_write_identity.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/migrate_write_identity_nick.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/migrate_write_ircserver.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/migrate_write_network.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/migrate_write_quasseluser.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/migrate_write_sender.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/migrate_write_usersetting.sql (100%) create mode 100644 src/core/SQL/PostgreSQL/17/select_authuser.sql rename src/core/SQL/PostgreSQL/{16 => 17}/select_bufferByName.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_bufferExists.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_buffer_by_id.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_buffer_lastseen_messages.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_buffer_markerlinemsgids.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_buffers.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_buffers_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_checkidentity.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_connected_networks.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_identities.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_internaluser.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_messages.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_messagesAll.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_messagesAllNew.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_messagesNewerThan.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_messagesRange.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_networkExists.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_network_awaymsg.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_network_usermode.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_networks_for_user.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_nicks.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_persistent_channels.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_senderid.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_servers_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_user_setting.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/select_userid.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_000_quasseluser.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_010_sender.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_020_identity.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_030_identity_nick.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_040_network.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_050_buffer.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_060_backlog.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_070_coreinfo.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_080_ircservers.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_090_backlog_idx.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_100_user_setting.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_110_alter_sender_seq.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/setup_120_alter_messageid_seq.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_backlog_bufferid.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_buffer_lastseen.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_buffer_markerlinemsgid.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_buffer_name.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_buffer_persistent_channel.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_buffer_set_channel_key.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_identity.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_network.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_network_connected.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_network_set_awaymsg.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_network_set_usermode.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_user_setting.sql (100%) rename src/core/SQL/PostgreSQL/{16 => 17}/update_username.sql (100%) create mode 100644 src/core/SQL/PostgreSQL/17/update_userpassword.sql create mode 100644 src/core/SQL/PostgreSQL/17/upgrade_000_alter_quasseluser_add_passwordversion.sql delete mode 100644 src/core/SQL/SQLite/17/insert_quasseluser.sql delete mode 100644 src/core/SQL/SQLite/17/select_authuser.sql delete mode 100644 src/core/SQL/SQLite/17/update_userpassword.sql rename src/core/SQL/SQLite/{17 => 18}/delete_backlog_by_uid.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/delete_backlog_for_buffer.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/delete_backlog_for_network.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/delete_buffer_for_bufferid.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/delete_buffers_by_uid.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/delete_buffers_for_network.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/delete_identity.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/delete_ircservers_for_network.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/delete_network.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/delete_networks_by_uid.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/delete_nicks.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/delete_quasseluser.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/insert_buffer.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/insert_identity.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/insert_message.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/insert_network.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/insert_nick.sql (100%) create mode 100644 src/core/SQL/SQLite/18/insert_quasseluser.sql rename src/core/SQL/SQLite/{17 => 18}/insert_sender.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/insert_server.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/insert_user_setting.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/migrate_read_backlog.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/migrate_read_buffer.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/migrate_read_identity.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/migrate_read_identity_nick.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/migrate_read_ircserver.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/migrate_read_network.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/migrate_read_quasseluser.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/migrate_read_sender.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/migrate_read_usersetting.sql (100%) create mode 100644 src/core/SQL/SQLite/18/select_authuser.sql rename src/core/SQL/SQLite/{17 => 18}/select_bufferByName.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_bufferExists.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_buffer_by_id.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_buffer_lastseen_messages.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_buffer_markerlinemsgids.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_buffers.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_buffers_for_merge.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_buffers_for_network.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_checkidentity.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_connected_networks.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_identities.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_internaluser.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_messages.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_messagesAll.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_messagesAllNew.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_messagesNewerThan.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_messagesNewestK.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_networkExists.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_network_awaymsg.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_network_usermode.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_networks_for_user.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_nicks.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_persistent_channels.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_servers_for_network.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_user_setting.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/select_userid.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_000_quasseluser.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_010_sender.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_020_network.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_030_buffer.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_040_buffer_idx.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_050_buffer_cname_idx.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_060_backlog.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_070_coreinfo.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_080_ircservers.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_090_backlog_idx.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_100_backlog_idx2.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_110_buffer_user_idx.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_120_user_setting.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_130_identity.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/setup_140_identity_nick.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_backlog_bufferid.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_buffer_lastseen.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_buffer_markerlinemsgid.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_buffer_name.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_buffer_persistent_channel.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_buffer_set_channel_key.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_identity.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_network.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_network_connected.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_network_set_awaymsg.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_network_set_usermode.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_user_setting.sql (100%) rename src/core/SQL/SQLite/{17 => 18}/update_username.sql (100%) create mode 100644 src/core/SQL/SQLite/18/update_userpassword.sql create mode 100644 src/core/SQL/SQLite/18/upgrade_000_alter_quasseluser_add_passwordversion.sql diff --git a/src/core/SQL/PostgreSQL/16/insert_quasseluser.sql b/src/core/SQL/PostgreSQL/16/insert_quasseluser.sql deleted file mode 100644 index f336d0cb..00000000 --- a/src/core/SQL/PostgreSQL/16/insert_quasseluser.sql +++ /dev/null @@ -1,3 +0,0 @@ -INSERT INTO quasseluser (username, password) -VALUES (:username, :password) -RETURNING userid diff --git a/src/core/SQL/PostgreSQL/16/select_authuser.sql b/src/core/SQL/PostgreSQL/16/select_authuser.sql deleted file mode 100644 index f11bf18a..00000000 --- a/src/core/SQL/PostgreSQL/16/select_authuser.sql +++ /dev/null @@ -1,3 +0,0 @@ -SELECT userid -FROM quasseluser -WHERE username = :username AND password = :password diff --git a/src/core/SQL/PostgreSQL/16/update_userpassword.sql b/src/core/SQL/PostgreSQL/16/update_userpassword.sql deleted file mode 100644 index 44a514a1..00000000 --- a/src/core/SQL/PostgreSQL/16/update_userpassword.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE quasseluser -SET password = :password -WHERE userid = :userid diff --git a/src/core/SQL/PostgreSQL/16/delete_backlog_by_uid.sql b/src/core/SQL/PostgreSQL/17/delete_backlog_by_uid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/delete_backlog_by_uid.sql rename to src/core/SQL/PostgreSQL/17/delete_backlog_by_uid.sql diff --git a/src/core/SQL/PostgreSQL/16/delete_backlog_for_buffer.sql b/src/core/SQL/PostgreSQL/17/delete_backlog_for_buffer.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/delete_backlog_for_buffer.sql rename to src/core/SQL/PostgreSQL/17/delete_backlog_for_buffer.sql diff --git a/src/core/SQL/PostgreSQL/16/delete_backlog_for_network.sql b/src/core/SQL/PostgreSQL/17/delete_backlog_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/delete_backlog_for_network.sql rename to src/core/SQL/PostgreSQL/17/delete_backlog_for_network.sql diff --git a/src/core/SQL/PostgreSQL/16/delete_buffer_for_bufferid.sql b/src/core/SQL/PostgreSQL/17/delete_buffer_for_bufferid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/delete_buffer_for_bufferid.sql rename to src/core/SQL/PostgreSQL/17/delete_buffer_for_bufferid.sql diff --git a/src/core/SQL/PostgreSQL/16/delete_buffers_by_uid.sql b/src/core/SQL/PostgreSQL/17/delete_buffers_by_uid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/delete_buffers_by_uid.sql rename to src/core/SQL/PostgreSQL/17/delete_buffers_by_uid.sql diff --git a/src/core/SQL/PostgreSQL/16/delete_buffers_for_network.sql b/src/core/SQL/PostgreSQL/17/delete_buffers_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/delete_buffers_for_network.sql rename to src/core/SQL/PostgreSQL/17/delete_buffers_for_network.sql diff --git a/src/core/SQL/PostgreSQL/16/delete_identity.sql b/src/core/SQL/PostgreSQL/17/delete_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/delete_identity.sql rename to src/core/SQL/PostgreSQL/17/delete_identity.sql diff --git a/src/core/SQL/PostgreSQL/16/delete_ircservers_for_network.sql b/src/core/SQL/PostgreSQL/17/delete_ircservers_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/delete_ircservers_for_network.sql rename to src/core/SQL/PostgreSQL/17/delete_ircservers_for_network.sql diff --git a/src/core/SQL/PostgreSQL/16/delete_network.sql b/src/core/SQL/PostgreSQL/17/delete_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/delete_network.sql rename to src/core/SQL/PostgreSQL/17/delete_network.sql diff --git a/src/core/SQL/PostgreSQL/16/delete_networks_by_uid.sql b/src/core/SQL/PostgreSQL/17/delete_networks_by_uid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/delete_networks_by_uid.sql rename to src/core/SQL/PostgreSQL/17/delete_networks_by_uid.sql diff --git a/src/core/SQL/PostgreSQL/16/delete_nicks.sql b/src/core/SQL/PostgreSQL/17/delete_nicks.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/delete_nicks.sql rename to src/core/SQL/PostgreSQL/17/delete_nicks.sql diff --git a/src/core/SQL/PostgreSQL/16/delete_quasseluser.sql b/src/core/SQL/PostgreSQL/17/delete_quasseluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/delete_quasseluser.sql rename to src/core/SQL/PostgreSQL/17/delete_quasseluser.sql diff --git a/src/core/SQL/PostgreSQL/16/insert_buffer.sql b/src/core/SQL/PostgreSQL/17/insert_buffer.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/insert_buffer.sql rename to src/core/SQL/PostgreSQL/17/insert_buffer.sql diff --git a/src/core/SQL/PostgreSQL/16/insert_identity.sql b/src/core/SQL/PostgreSQL/17/insert_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/insert_identity.sql rename to src/core/SQL/PostgreSQL/17/insert_identity.sql diff --git a/src/core/SQL/PostgreSQL/16/insert_message.sql b/src/core/SQL/PostgreSQL/17/insert_message.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/insert_message.sql rename to src/core/SQL/PostgreSQL/17/insert_message.sql diff --git a/src/core/SQL/PostgreSQL/16/insert_network.sql b/src/core/SQL/PostgreSQL/17/insert_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/insert_network.sql rename to src/core/SQL/PostgreSQL/17/insert_network.sql diff --git a/src/core/SQL/PostgreSQL/16/insert_nick.sql b/src/core/SQL/PostgreSQL/17/insert_nick.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/insert_nick.sql rename to src/core/SQL/PostgreSQL/17/insert_nick.sql diff --git a/src/core/SQL/PostgreSQL/17/insert_quasseluser.sql b/src/core/SQL/PostgreSQL/17/insert_quasseluser.sql new file mode 100644 index 00000000..af853922 --- /dev/null +++ b/src/core/SQL/PostgreSQL/17/insert_quasseluser.sql @@ -0,0 +1,3 @@ +INSERT INTO quasseluser (username, password, hashversion) +VALUES (:username, :password, :hashversion) +RETURNING userid diff --git a/src/core/SQL/PostgreSQL/16/insert_sender.sql b/src/core/SQL/PostgreSQL/17/insert_sender.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/insert_sender.sql rename to src/core/SQL/PostgreSQL/17/insert_sender.sql diff --git a/src/core/SQL/PostgreSQL/16/insert_server.sql b/src/core/SQL/PostgreSQL/17/insert_server.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/insert_server.sql rename to src/core/SQL/PostgreSQL/17/insert_server.sql diff --git a/src/core/SQL/PostgreSQL/16/insert_user_setting.sql b/src/core/SQL/PostgreSQL/17/insert_user_setting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/insert_user_setting.sql rename to src/core/SQL/PostgreSQL/17/insert_user_setting.sql diff --git a/src/core/SQL/PostgreSQL/16/migrate_write_backlog.sql b/src/core/SQL/PostgreSQL/17/migrate_write_backlog.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/migrate_write_backlog.sql rename to src/core/SQL/PostgreSQL/17/migrate_write_backlog.sql diff --git a/src/core/SQL/PostgreSQL/16/migrate_write_buffer.sql b/src/core/SQL/PostgreSQL/17/migrate_write_buffer.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/migrate_write_buffer.sql rename to src/core/SQL/PostgreSQL/17/migrate_write_buffer.sql diff --git a/src/core/SQL/PostgreSQL/16/migrate_write_identity.sql b/src/core/SQL/PostgreSQL/17/migrate_write_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/migrate_write_identity.sql rename to src/core/SQL/PostgreSQL/17/migrate_write_identity.sql diff --git a/src/core/SQL/PostgreSQL/16/migrate_write_identity_nick.sql b/src/core/SQL/PostgreSQL/17/migrate_write_identity_nick.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/migrate_write_identity_nick.sql rename to src/core/SQL/PostgreSQL/17/migrate_write_identity_nick.sql diff --git a/src/core/SQL/PostgreSQL/16/migrate_write_ircserver.sql b/src/core/SQL/PostgreSQL/17/migrate_write_ircserver.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/migrate_write_ircserver.sql rename to src/core/SQL/PostgreSQL/17/migrate_write_ircserver.sql diff --git a/src/core/SQL/PostgreSQL/16/migrate_write_network.sql b/src/core/SQL/PostgreSQL/17/migrate_write_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/migrate_write_network.sql rename to src/core/SQL/PostgreSQL/17/migrate_write_network.sql diff --git a/src/core/SQL/PostgreSQL/16/migrate_write_quasseluser.sql b/src/core/SQL/PostgreSQL/17/migrate_write_quasseluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/migrate_write_quasseluser.sql rename to src/core/SQL/PostgreSQL/17/migrate_write_quasseluser.sql diff --git a/src/core/SQL/PostgreSQL/16/migrate_write_sender.sql b/src/core/SQL/PostgreSQL/17/migrate_write_sender.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/migrate_write_sender.sql rename to src/core/SQL/PostgreSQL/17/migrate_write_sender.sql diff --git a/src/core/SQL/PostgreSQL/16/migrate_write_usersetting.sql b/src/core/SQL/PostgreSQL/17/migrate_write_usersetting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/migrate_write_usersetting.sql rename to src/core/SQL/PostgreSQL/17/migrate_write_usersetting.sql diff --git a/src/core/SQL/PostgreSQL/17/select_authuser.sql b/src/core/SQL/PostgreSQL/17/select_authuser.sql new file mode 100644 index 00000000..1991281e --- /dev/null +++ b/src/core/SQL/PostgreSQL/17/select_authuser.sql @@ -0,0 +1,3 @@ +SELECT userid, password, hashversion +FROM quasseluser +WHERE username = :username diff --git a/src/core/SQL/PostgreSQL/16/select_bufferByName.sql b/src/core/SQL/PostgreSQL/17/select_bufferByName.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_bufferByName.sql rename to src/core/SQL/PostgreSQL/17/select_bufferByName.sql diff --git a/src/core/SQL/PostgreSQL/16/select_bufferExists.sql b/src/core/SQL/PostgreSQL/17/select_bufferExists.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_bufferExists.sql rename to src/core/SQL/PostgreSQL/17/select_bufferExists.sql diff --git a/src/core/SQL/PostgreSQL/16/select_buffer_by_id.sql b/src/core/SQL/PostgreSQL/17/select_buffer_by_id.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_buffer_by_id.sql rename to src/core/SQL/PostgreSQL/17/select_buffer_by_id.sql diff --git a/src/core/SQL/PostgreSQL/16/select_buffer_lastseen_messages.sql b/src/core/SQL/PostgreSQL/17/select_buffer_lastseen_messages.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_buffer_lastseen_messages.sql rename to src/core/SQL/PostgreSQL/17/select_buffer_lastseen_messages.sql diff --git a/src/core/SQL/PostgreSQL/16/select_buffer_markerlinemsgids.sql b/src/core/SQL/PostgreSQL/17/select_buffer_markerlinemsgids.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_buffer_markerlinemsgids.sql rename to src/core/SQL/PostgreSQL/17/select_buffer_markerlinemsgids.sql diff --git a/src/core/SQL/PostgreSQL/16/select_buffers.sql b/src/core/SQL/PostgreSQL/17/select_buffers.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_buffers.sql rename to src/core/SQL/PostgreSQL/17/select_buffers.sql diff --git a/src/core/SQL/PostgreSQL/16/select_buffers_for_network.sql b/src/core/SQL/PostgreSQL/17/select_buffers_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_buffers_for_network.sql rename to src/core/SQL/PostgreSQL/17/select_buffers_for_network.sql diff --git a/src/core/SQL/PostgreSQL/16/select_checkidentity.sql b/src/core/SQL/PostgreSQL/17/select_checkidentity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_checkidentity.sql rename to src/core/SQL/PostgreSQL/17/select_checkidentity.sql diff --git a/src/core/SQL/PostgreSQL/16/select_connected_networks.sql b/src/core/SQL/PostgreSQL/17/select_connected_networks.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_connected_networks.sql rename to src/core/SQL/PostgreSQL/17/select_connected_networks.sql diff --git a/src/core/SQL/PostgreSQL/16/select_identities.sql b/src/core/SQL/PostgreSQL/17/select_identities.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_identities.sql rename to src/core/SQL/PostgreSQL/17/select_identities.sql diff --git a/src/core/SQL/PostgreSQL/16/select_internaluser.sql b/src/core/SQL/PostgreSQL/17/select_internaluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_internaluser.sql rename to src/core/SQL/PostgreSQL/17/select_internaluser.sql diff --git a/src/core/SQL/PostgreSQL/16/select_messages.sql b/src/core/SQL/PostgreSQL/17/select_messages.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_messages.sql rename to src/core/SQL/PostgreSQL/17/select_messages.sql diff --git a/src/core/SQL/PostgreSQL/16/select_messagesAll.sql b/src/core/SQL/PostgreSQL/17/select_messagesAll.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_messagesAll.sql rename to src/core/SQL/PostgreSQL/17/select_messagesAll.sql diff --git a/src/core/SQL/PostgreSQL/16/select_messagesAllNew.sql b/src/core/SQL/PostgreSQL/17/select_messagesAllNew.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_messagesAllNew.sql rename to src/core/SQL/PostgreSQL/17/select_messagesAllNew.sql diff --git a/src/core/SQL/PostgreSQL/16/select_messagesNewerThan.sql b/src/core/SQL/PostgreSQL/17/select_messagesNewerThan.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_messagesNewerThan.sql rename to src/core/SQL/PostgreSQL/17/select_messagesNewerThan.sql diff --git a/src/core/SQL/PostgreSQL/16/select_messagesRange.sql b/src/core/SQL/PostgreSQL/17/select_messagesRange.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_messagesRange.sql rename to src/core/SQL/PostgreSQL/17/select_messagesRange.sql diff --git a/src/core/SQL/PostgreSQL/16/select_networkExists.sql b/src/core/SQL/PostgreSQL/17/select_networkExists.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_networkExists.sql rename to src/core/SQL/PostgreSQL/17/select_networkExists.sql diff --git a/src/core/SQL/PostgreSQL/16/select_network_awaymsg.sql b/src/core/SQL/PostgreSQL/17/select_network_awaymsg.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_network_awaymsg.sql rename to src/core/SQL/PostgreSQL/17/select_network_awaymsg.sql diff --git a/src/core/SQL/PostgreSQL/16/select_network_usermode.sql b/src/core/SQL/PostgreSQL/17/select_network_usermode.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_network_usermode.sql rename to src/core/SQL/PostgreSQL/17/select_network_usermode.sql diff --git a/src/core/SQL/PostgreSQL/16/select_networks_for_user.sql b/src/core/SQL/PostgreSQL/17/select_networks_for_user.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_networks_for_user.sql rename to src/core/SQL/PostgreSQL/17/select_networks_for_user.sql diff --git a/src/core/SQL/PostgreSQL/16/select_nicks.sql b/src/core/SQL/PostgreSQL/17/select_nicks.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_nicks.sql rename to src/core/SQL/PostgreSQL/17/select_nicks.sql diff --git a/src/core/SQL/PostgreSQL/16/select_persistent_channels.sql b/src/core/SQL/PostgreSQL/17/select_persistent_channels.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_persistent_channels.sql rename to src/core/SQL/PostgreSQL/17/select_persistent_channels.sql diff --git a/src/core/SQL/PostgreSQL/16/select_senderid.sql b/src/core/SQL/PostgreSQL/17/select_senderid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_senderid.sql rename to src/core/SQL/PostgreSQL/17/select_senderid.sql diff --git a/src/core/SQL/PostgreSQL/16/select_servers_for_network.sql b/src/core/SQL/PostgreSQL/17/select_servers_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_servers_for_network.sql rename to src/core/SQL/PostgreSQL/17/select_servers_for_network.sql diff --git a/src/core/SQL/PostgreSQL/16/select_user_setting.sql b/src/core/SQL/PostgreSQL/17/select_user_setting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_user_setting.sql rename to src/core/SQL/PostgreSQL/17/select_user_setting.sql diff --git a/src/core/SQL/PostgreSQL/16/select_userid.sql b/src/core/SQL/PostgreSQL/17/select_userid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/select_userid.sql rename to src/core/SQL/PostgreSQL/17/select_userid.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_000_quasseluser.sql b/src/core/SQL/PostgreSQL/17/setup_000_quasseluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_000_quasseluser.sql rename to src/core/SQL/PostgreSQL/17/setup_000_quasseluser.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_010_sender.sql b/src/core/SQL/PostgreSQL/17/setup_010_sender.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_010_sender.sql rename to src/core/SQL/PostgreSQL/17/setup_010_sender.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_020_identity.sql b/src/core/SQL/PostgreSQL/17/setup_020_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_020_identity.sql rename to src/core/SQL/PostgreSQL/17/setup_020_identity.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_030_identity_nick.sql b/src/core/SQL/PostgreSQL/17/setup_030_identity_nick.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_030_identity_nick.sql rename to src/core/SQL/PostgreSQL/17/setup_030_identity_nick.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_040_network.sql b/src/core/SQL/PostgreSQL/17/setup_040_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_040_network.sql rename to src/core/SQL/PostgreSQL/17/setup_040_network.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_050_buffer.sql b/src/core/SQL/PostgreSQL/17/setup_050_buffer.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_050_buffer.sql rename to src/core/SQL/PostgreSQL/17/setup_050_buffer.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_060_backlog.sql b/src/core/SQL/PostgreSQL/17/setup_060_backlog.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_060_backlog.sql rename to src/core/SQL/PostgreSQL/17/setup_060_backlog.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_070_coreinfo.sql b/src/core/SQL/PostgreSQL/17/setup_070_coreinfo.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_070_coreinfo.sql rename to src/core/SQL/PostgreSQL/17/setup_070_coreinfo.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_080_ircservers.sql b/src/core/SQL/PostgreSQL/17/setup_080_ircservers.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_080_ircservers.sql rename to src/core/SQL/PostgreSQL/17/setup_080_ircservers.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_090_backlog_idx.sql b/src/core/SQL/PostgreSQL/17/setup_090_backlog_idx.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_090_backlog_idx.sql rename to src/core/SQL/PostgreSQL/17/setup_090_backlog_idx.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_100_user_setting.sql b/src/core/SQL/PostgreSQL/17/setup_100_user_setting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_100_user_setting.sql rename to src/core/SQL/PostgreSQL/17/setup_100_user_setting.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_110_alter_sender_seq.sql b/src/core/SQL/PostgreSQL/17/setup_110_alter_sender_seq.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_110_alter_sender_seq.sql rename to src/core/SQL/PostgreSQL/17/setup_110_alter_sender_seq.sql diff --git a/src/core/SQL/PostgreSQL/16/setup_120_alter_messageid_seq.sql b/src/core/SQL/PostgreSQL/17/setup_120_alter_messageid_seq.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/setup_120_alter_messageid_seq.sql rename to src/core/SQL/PostgreSQL/17/setup_120_alter_messageid_seq.sql diff --git a/src/core/SQL/PostgreSQL/16/update_backlog_bufferid.sql b/src/core/SQL/PostgreSQL/17/update_backlog_bufferid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_backlog_bufferid.sql rename to src/core/SQL/PostgreSQL/17/update_backlog_bufferid.sql diff --git a/src/core/SQL/PostgreSQL/16/update_buffer_lastseen.sql b/src/core/SQL/PostgreSQL/17/update_buffer_lastseen.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_buffer_lastseen.sql rename to src/core/SQL/PostgreSQL/17/update_buffer_lastseen.sql diff --git a/src/core/SQL/PostgreSQL/16/update_buffer_markerlinemsgid.sql b/src/core/SQL/PostgreSQL/17/update_buffer_markerlinemsgid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_buffer_markerlinemsgid.sql rename to src/core/SQL/PostgreSQL/17/update_buffer_markerlinemsgid.sql diff --git a/src/core/SQL/PostgreSQL/16/update_buffer_name.sql b/src/core/SQL/PostgreSQL/17/update_buffer_name.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_buffer_name.sql rename to src/core/SQL/PostgreSQL/17/update_buffer_name.sql diff --git a/src/core/SQL/PostgreSQL/16/update_buffer_persistent_channel.sql b/src/core/SQL/PostgreSQL/17/update_buffer_persistent_channel.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_buffer_persistent_channel.sql rename to src/core/SQL/PostgreSQL/17/update_buffer_persistent_channel.sql diff --git a/src/core/SQL/PostgreSQL/16/update_buffer_set_channel_key.sql b/src/core/SQL/PostgreSQL/17/update_buffer_set_channel_key.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_buffer_set_channel_key.sql rename to src/core/SQL/PostgreSQL/17/update_buffer_set_channel_key.sql diff --git a/src/core/SQL/PostgreSQL/16/update_identity.sql b/src/core/SQL/PostgreSQL/17/update_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_identity.sql rename to src/core/SQL/PostgreSQL/17/update_identity.sql diff --git a/src/core/SQL/PostgreSQL/16/update_network.sql b/src/core/SQL/PostgreSQL/17/update_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_network.sql rename to src/core/SQL/PostgreSQL/17/update_network.sql diff --git a/src/core/SQL/PostgreSQL/16/update_network_connected.sql b/src/core/SQL/PostgreSQL/17/update_network_connected.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_network_connected.sql rename to src/core/SQL/PostgreSQL/17/update_network_connected.sql diff --git a/src/core/SQL/PostgreSQL/16/update_network_set_awaymsg.sql b/src/core/SQL/PostgreSQL/17/update_network_set_awaymsg.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_network_set_awaymsg.sql rename to src/core/SQL/PostgreSQL/17/update_network_set_awaymsg.sql diff --git a/src/core/SQL/PostgreSQL/16/update_network_set_usermode.sql b/src/core/SQL/PostgreSQL/17/update_network_set_usermode.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_network_set_usermode.sql rename to src/core/SQL/PostgreSQL/17/update_network_set_usermode.sql diff --git a/src/core/SQL/PostgreSQL/16/update_user_setting.sql b/src/core/SQL/PostgreSQL/17/update_user_setting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_user_setting.sql rename to src/core/SQL/PostgreSQL/17/update_user_setting.sql diff --git a/src/core/SQL/PostgreSQL/16/update_username.sql b/src/core/SQL/PostgreSQL/17/update_username.sql similarity index 100% rename from src/core/SQL/PostgreSQL/16/update_username.sql rename to src/core/SQL/PostgreSQL/17/update_username.sql diff --git a/src/core/SQL/PostgreSQL/17/update_userpassword.sql b/src/core/SQL/PostgreSQL/17/update_userpassword.sql new file mode 100644 index 00000000..61eeb0ce --- /dev/null +++ b/src/core/SQL/PostgreSQL/17/update_userpassword.sql @@ -0,0 +1,3 @@ +UPDATE quasseluser +SET password = :password, hashversion = :hashversion +WHERE userid = :userid diff --git a/src/core/SQL/PostgreSQL/17/upgrade_000_alter_quasseluser_add_passwordversion.sql b/src/core/SQL/PostgreSQL/17/upgrade_000_alter_quasseluser_add_passwordversion.sql new file mode 100644 index 00000000..7a799c78 --- /dev/null +++ b/src/core/SQL/PostgreSQL/17/upgrade_000_alter_quasseluser_add_passwordversion.sql @@ -0,0 +1,3 @@ +ALTER TABLE quasseluser +ALTER COLUMN password TYPE text, +ADD COLUMN hashversion integer NOT NULL DEFAULT 0 diff --git a/src/core/SQL/SQLite/17/insert_quasseluser.sql b/src/core/SQL/SQLite/17/insert_quasseluser.sql deleted file mode 100644 index 3a9ff8ba..00000000 --- a/src/core/SQL/SQLite/17/insert_quasseluser.sql +++ /dev/null @@ -1,2 +0,0 @@ -INSERT INTO quasseluser (username, password) -VALUES (:username, :password) \ No newline at end of file diff --git a/src/core/SQL/SQLite/17/select_authuser.sql b/src/core/SQL/SQLite/17/select_authuser.sql deleted file mode 100644 index f11bf18a..00000000 --- a/src/core/SQL/SQLite/17/select_authuser.sql +++ /dev/null @@ -1,3 +0,0 @@ -SELECT userid -FROM quasseluser -WHERE username = :username AND password = :password diff --git a/src/core/SQL/SQLite/17/update_userpassword.sql b/src/core/SQL/SQLite/17/update_userpassword.sql deleted file mode 100644 index 44a514a1..00000000 --- a/src/core/SQL/SQLite/17/update_userpassword.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE quasseluser -SET password = :password -WHERE userid = :userid diff --git a/src/core/SQL/SQLite/17/delete_backlog_by_uid.sql b/src/core/SQL/SQLite/18/delete_backlog_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/17/delete_backlog_by_uid.sql rename to src/core/SQL/SQLite/18/delete_backlog_by_uid.sql diff --git a/src/core/SQL/SQLite/17/delete_backlog_for_buffer.sql b/src/core/SQL/SQLite/18/delete_backlog_for_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/17/delete_backlog_for_buffer.sql rename to src/core/SQL/SQLite/18/delete_backlog_for_buffer.sql diff --git a/src/core/SQL/SQLite/17/delete_backlog_for_network.sql b/src/core/SQL/SQLite/18/delete_backlog_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/17/delete_backlog_for_network.sql rename to src/core/SQL/SQLite/18/delete_backlog_for_network.sql diff --git a/src/core/SQL/SQLite/17/delete_buffer_for_bufferid.sql b/src/core/SQL/SQLite/18/delete_buffer_for_bufferid.sql similarity index 100% rename from src/core/SQL/SQLite/17/delete_buffer_for_bufferid.sql rename to src/core/SQL/SQLite/18/delete_buffer_for_bufferid.sql diff --git a/src/core/SQL/SQLite/17/delete_buffers_by_uid.sql b/src/core/SQL/SQLite/18/delete_buffers_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/17/delete_buffers_by_uid.sql rename to src/core/SQL/SQLite/18/delete_buffers_by_uid.sql diff --git a/src/core/SQL/SQLite/17/delete_buffers_for_network.sql b/src/core/SQL/SQLite/18/delete_buffers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/17/delete_buffers_for_network.sql rename to src/core/SQL/SQLite/18/delete_buffers_for_network.sql diff --git a/src/core/SQL/SQLite/17/delete_identity.sql b/src/core/SQL/SQLite/18/delete_identity.sql similarity index 100% rename from src/core/SQL/SQLite/17/delete_identity.sql rename to src/core/SQL/SQLite/18/delete_identity.sql diff --git a/src/core/SQL/SQLite/17/delete_ircservers_for_network.sql b/src/core/SQL/SQLite/18/delete_ircservers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/17/delete_ircservers_for_network.sql rename to src/core/SQL/SQLite/18/delete_ircservers_for_network.sql diff --git a/src/core/SQL/SQLite/17/delete_network.sql b/src/core/SQL/SQLite/18/delete_network.sql similarity index 100% rename from src/core/SQL/SQLite/17/delete_network.sql rename to src/core/SQL/SQLite/18/delete_network.sql diff --git a/src/core/SQL/SQLite/17/delete_networks_by_uid.sql b/src/core/SQL/SQLite/18/delete_networks_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/17/delete_networks_by_uid.sql rename to src/core/SQL/SQLite/18/delete_networks_by_uid.sql diff --git a/src/core/SQL/SQLite/17/delete_nicks.sql b/src/core/SQL/SQLite/18/delete_nicks.sql similarity index 100% rename from src/core/SQL/SQLite/17/delete_nicks.sql rename to src/core/SQL/SQLite/18/delete_nicks.sql diff --git a/src/core/SQL/SQLite/17/delete_quasseluser.sql b/src/core/SQL/SQLite/18/delete_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/17/delete_quasseluser.sql rename to src/core/SQL/SQLite/18/delete_quasseluser.sql diff --git a/src/core/SQL/SQLite/17/insert_buffer.sql b/src/core/SQL/SQLite/18/insert_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/17/insert_buffer.sql rename to src/core/SQL/SQLite/18/insert_buffer.sql diff --git a/src/core/SQL/SQLite/17/insert_identity.sql b/src/core/SQL/SQLite/18/insert_identity.sql similarity index 100% rename from src/core/SQL/SQLite/17/insert_identity.sql rename to src/core/SQL/SQLite/18/insert_identity.sql diff --git a/src/core/SQL/SQLite/17/insert_message.sql b/src/core/SQL/SQLite/18/insert_message.sql similarity index 100% rename from src/core/SQL/SQLite/17/insert_message.sql rename to src/core/SQL/SQLite/18/insert_message.sql diff --git a/src/core/SQL/SQLite/17/insert_network.sql b/src/core/SQL/SQLite/18/insert_network.sql similarity index 100% rename from src/core/SQL/SQLite/17/insert_network.sql rename to src/core/SQL/SQLite/18/insert_network.sql diff --git a/src/core/SQL/SQLite/17/insert_nick.sql b/src/core/SQL/SQLite/18/insert_nick.sql similarity index 100% rename from src/core/SQL/SQLite/17/insert_nick.sql rename to src/core/SQL/SQLite/18/insert_nick.sql diff --git a/src/core/SQL/SQLite/18/insert_quasseluser.sql b/src/core/SQL/SQLite/18/insert_quasseluser.sql new file mode 100644 index 00000000..8a244192 --- /dev/null +++ b/src/core/SQL/SQLite/18/insert_quasseluser.sql @@ -0,0 +1,2 @@ +INSERT INTO quasseluser (username, password, hashversion) +VALUES (:username, :password, :hashversion) \ No newline at end of file diff --git a/src/core/SQL/SQLite/17/insert_sender.sql b/src/core/SQL/SQLite/18/insert_sender.sql similarity index 100% rename from src/core/SQL/SQLite/17/insert_sender.sql rename to src/core/SQL/SQLite/18/insert_sender.sql diff --git a/src/core/SQL/SQLite/17/insert_server.sql b/src/core/SQL/SQLite/18/insert_server.sql similarity index 100% rename from src/core/SQL/SQLite/17/insert_server.sql rename to src/core/SQL/SQLite/18/insert_server.sql diff --git a/src/core/SQL/SQLite/17/insert_user_setting.sql b/src/core/SQL/SQLite/18/insert_user_setting.sql similarity index 100% rename from src/core/SQL/SQLite/17/insert_user_setting.sql rename to src/core/SQL/SQLite/18/insert_user_setting.sql diff --git a/src/core/SQL/SQLite/17/migrate_read_backlog.sql b/src/core/SQL/SQLite/18/migrate_read_backlog.sql similarity index 100% rename from src/core/SQL/SQLite/17/migrate_read_backlog.sql rename to src/core/SQL/SQLite/18/migrate_read_backlog.sql diff --git a/src/core/SQL/SQLite/17/migrate_read_buffer.sql b/src/core/SQL/SQLite/18/migrate_read_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/17/migrate_read_buffer.sql rename to src/core/SQL/SQLite/18/migrate_read_buffer.sql diff --git a/src/core/SQL/SQLite/17/migrate_read_identity.sql b/src/core/SQL/SQLite/18/migrate_read_identity.sql similarity index 100% rename from src/core/SQL/SQLite/17/migrate_read_identity.sql rename to src/core/SQL/SQLite/18/migrate_read_identity.sql diff --git a/src/core/SQL/SQLite/17/migrate_read_identity_nick.sql b/src/core/SQL/SQLite/18/migrate_read_identity_nick.sql similarity index 100% rename from src/core/SQL/SQLite/17/migrate_read_identity_nick.sql rename to src/core/SQL/SQLite/18/migrate_read_identity_nick.sql diff --git a/src/core/SQL/SQLite/17/migrate_read_ircserver.sql b/src/core/SQL/SQLite/18/migrate_read_ircserver.sql similarity index 100% rename from src/core/SQL/SQLite/17/migrate_read_ircserver.sql rename to src/core/SQL/SQLite/18/migrate_read_ircserver.sql diff --git a/src/core/SQL/SQLite/17/migrate_read_network.sql b/src/core/SQL/SQLite/18/migrate_read_network.sql similarity index 100% rename from src/core/SQL/SQLite/17/migrate_read_network.sql rename to src/core/SQL/SQLite/18/migrate_read_network.sql diff --git a/src/core/SQL/SQLite/17/migrate_read_quasseluser.sql b/src/core/SQL/SQLite/18/migrate_read_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/17/migrate_read_quasseluser.sql rename to src/core/SQL/SQLite/18/migrate_read_quasseluser.sql diff --git a/src/core/SQL/SQLite/17/migrate_read_sender.sql b/src/core/SQL/SQLite/18/migrate_read_sender.sql similarity index 100% rename from src/core/SQL/SQLite/17/migrate_read_sender.sql rename to src/core/SQL/SQLite/18/migrate_read_sender.sql diff --git a/src/core/SQL/SQLite/17/migrate_read_usersetting.sql b/src/core/SQL/SQLite/18/migrate_read_usersetting.sql similarity index 100% rename from src/core/SQL/SQLite/17/migrate_read_usersetting.sql rename to src/core/SQL/SQLite/18/migrate_read_usersetting.sql diff --git a/src/core/SQL/SQLite/18/select_authuser.sql b/src/core/SQL/SQLite/18/select_authuser.sql new file mode 100644 index 00000000..1991281e --- /dev/null +++ b/src/core/SQL/SQLite/18/select_authuser.sql @@ -0,0 +1,3 @@ +SELECT userid, password, hashversion +FROM quasseluser +WHERE username = :username diff --git a/src/core/SQL/SQLite/17/select_bufferByName.sql b/src/core/SQL/SQLite/18/select_bufferByName.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_bufferByName.sql rename to src/core/SQL/SQLite/18/select_bufferByName.sql diff --git a/src/core/SQL/SQLite/17/select_bufferExists.sql b/src/core/SQL/SQLite/18/select_bufferExists.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_bufferExists.sql rename to src/core/SQL/SQLite/18/select_bufferExists.sql diff --git a/src/core/SQL/SQLite/17/select_buffer_by_id.sql b/src/core/SQL/SQLite/18/select_buffer_by_id.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_buffer_by_id.sql rename to src/core/SQL/SQLite/18/select_buffer_by_id.sql diff --git a/src/core/SQL/SQLite/17/select_buffer_lastseen_messages.sql b/src/core/SQL/SQLite/18/select_buffer_lastseen_messages.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_buffer_lastseen_messages.sql rename to src/core/SQL/SQLite/18/select_buffer_lastseen_messages.sql diff --git a/src/core/SQL/SQLite/17/select_buffer_markerlinemsgids.sql b/src/core/SQL/SQLite/18/select_buffer_markerlinemsgids.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_buffer_markerlinemsgids.sql rename to src/core/SQL/SQLite/18/select_buffer_markerlinemsgids.sql diff --git a/src/core/SQL/SQLite/17/select_buffers.sql b/src/core/SQL/SQLite/18/select_buffers.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_buffers.sql rename to src/core/SQL/SQLite/18/select_buffers.sql diff --git a/src/core/SQL/SQLite/17/select_buffers_for_merge.sql b/src/core/SQL/SQLite/18/select_buffers_for_merge.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_buffers_for_merge.sql rename to src/core/SQL/SQLite/18/select_buffers_for_merge.sql diff --git a/src/core/SQL/SQLite/17/select_buffers_for_network.sql b/src/core/SQL/SQLite/18/select_buffers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_buffers_for_network.sql rename to src/core/SQL/SQLite/18/select_buffers_for_network.sql diff --git a/src/core/SQL/SQLite/17/select_checkidentity.sql b/src/core/SQL/SQLite/18/select_checkidentity.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_checkidentity.sql rename to src/core/SQL/SQLite/18/select_checkidentity.sql diff --git a/src/core/SQL/SQLite/17/select_connected_networks.sql b/src/core/SQL/SQLite/18/select_connected_networks.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_connected_networks.sql rename to src/core/SQL/SQLite/18/select_connected_networks.sql diff --git a/src/core/SQL/SQLite/17/select_identities.sql b/src/core/SQL/SQLite/18/select_identities.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_identities.sql rename to src/core/SQL/SQLite/18/select_identities.sql diff --git a/src/core/SQL/SQLite/17/select_internaluser.sql b/src/core/SQL/SQLite/18/select_internaluser.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_internaluser.sql rename to src/core/SQL/SQLite/18/select_internaluser.sql diff --git a/src/core/SQL/SQLite/17/select_messages.sql b/src/core/SQL/SQLite/18/select_messages.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_messages.sql rename to src/core/SQL/SQLite/18/select_messages.sql diff --git a/src/core/SQL/SQLite/17/select_messagesAll.sql b/src/core/SQL/SQLite/18/select_messagesAll.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_messagesAll.sql rename to src/core/SQL/SQLite/18/select_messagesAll.sql diff --git a/src/core/SQL/SQLite/17/select_messagesAllNew.sql b/src/core/SQL/SQLite/18/select_messagesAllNew.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_messagesAllNew.sql rename to src/core/SQL/SQLite/18/select_messagesAllNew.sql diff --git a/src/core/SQL/SQLite/17/select_messagesNewerThan.sql b/src/core/SQL/SQLite/18/select_messagesNewerThan.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_messagesNewerThan.sql rename to src/core/SQL/SQLite/18/select_messagesNewerThan.sql diff --git a/src/core/SQL/SQLite/17/select_messagesNewestK.sql b/src/core/SQL/SQLite/18/select_messagesNewestK.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_messagesNewestK.sql rename to src/core/SQL/SQLite/18/select_messagesNewestK.sql diff --git a/src/core/SQL/SQLite/17/select_networkExists.sql b/src/core/SQL/SQLite/18/select_networkExists.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_networkExists.sql rename to src/core/SQL/SQLite/18/select_networkExists.sql diff --git a/src/core/SQL/SQLite/17/select_network_awaymsg.sql b/src/core/SQL/SQLite/18/select_network_awaymsg.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_network_awaymsg.sql rename to src/core/SQL/SQLite/18/select_network_awaymsg.sql diff --git a/src/core/SQL/SQLite/17/select_network_usermode.sql b/src/core/SQL/SQLite/18/select_network_usermode.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_network_usermode.sql rename to src/core/SQL/SQLite/18/select_network_usermode.sql diff --git a/src/core/SQL/SQLite/17/select_networks_for_user.sql b/src/core/SQL/SQLite/18/select_networks_for_user.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_networks_for_user.sql rename to src/core/SQL/SQLite/18/select_networks_for_user.sql diff --git a/src/core/SQL/SQLite/17/select_nicks.sql b/src/core/SQL/SQLite/18/select_nicks.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_nicks.sql rename to src/core/SQL/SQLite/18/select_nicks.sql diff --git a/src/core/SQL/SQLite/17/select_persistent_channels.sql b/src/core/SQL/SQLite/18/select_persistent_channels.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_persistent_channels.sql rename to src/core/SQL/SQLite/18/select_persistent_channels.sql diff --git a/src/core/SQL/SQLite/17/select_servers_for_network.sql b/src/core/SQL/SQLite/18/select_servers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_servers_for_network.sql rename to src/core/SQL/SQLite/18/select_servers_for_network.sql diff --git a/src/core/SQL/SQLite/17/select_user_setting.sql b/src/core/SQL/SQLite/18/select_user_setting.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_user_setting.sql rename to src/core/SQL/SQLite/18/select_user_setting.sql diff --git a/src/core/SQL/SQLite/17/select_userid.sql b/src/core/SQL/SQLite/18/select_userid.sql similarity index 100% rename from src/core/SQL/SQLite/17/select_userid.sql rename to src/core/SQL/SQLite/18/select_userid.sql diff --git a/src/core/SQL/SQLite/17/setup_000_quasseluser.sql b/src/core/SQL/SQLite/18/setup_000_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_000_quasseluser.sql rename to src/core/SQL/SQLite/18/setup_000_quasseluser.sql diff --git a/src/core/SQL/SQLite/17/setup_010_sender.sql b/src/core/SQL/SQLite/18/setup_010_sender.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_010_sender.sql rename to src/core/SQL/SQLite/18/setup_010_sender.sql diff --git a/src/core/SQL/SQLite/17/setup_020_network.sql b/src/core/SQL/SQLite/18/setup_020_network.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_020_network.sql rename to src/core/SQL/SQLite/18/setup_020_network.sql diff --git a/src/core/SQL/SQLite/17/setup_030_buffer.sql b/src/core/SQL/SQLite/18/setup_030_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_030_buffer.sql rename to src/core/SQL/SQLite/18/setup_030_buffer.sql diff --git a/src/core/SQL/SQLite/17/setup_040_buffer_idx.sql b/src/core/SQL/SQLite/18/setup_040_buffer_idx.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_040_buffer_idx.sql rename to src/core/SQL/SQLite/18/setup_040_buffer_idx.sql diff --git a/src/core/SQL/SQLite/17/setup_050_buffer_cname_idx.sql b/src/core/SQL/SQLite/18/setup_050_buffer_cname_idx.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_050_buffer_cname_idx.sql rename to src/core/SQL/SQLite/18/setup_050_buffer_cname_idx.sql diff --git a/src/core/SQL/SQLite/17/setup_060_backlog.sql b/src/core/SQL/SQLite/18/setup_060_backlog.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_060_backlog.sql rename to src/core/SQL/SQLite/18/setup_060_backlog.sql diff --git a/src/core/SQL/SQLite/17/setup_070_coreinfo.sql b/src/core/SQL/SQLite/18/setup_070_coreinfo.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_070_coreinfo.sql rename to src/core/SQL/SQLite/18/setup_070_coreinfo.sql diff --git a/src/core/SQL/SQLite/17/setup_080_ircservers.sql b/src/core/SQL/SQLite/18/setup_080_ircservers.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_080_ircservers.sql rename to src/core/SQL/SQLite/18/setup_080_ircservers.sql diff --git a/src/core/SQL/SQLite/17/setup_090_backlog_idx.sql b/src/core/SQL/SQLite/18/setup_090_backlog_idx.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_090_backlog_idx.sql rename to src/core/SQL/SQLite/18/setup_090_backlog_idx.sql diff --git a/src/core/SQL/SQLite/17/setup_100_backlog_idx2.sql b/src/core/SQL/SQLite/18/setup_100_backlog_idx2.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_100_backlog_idx2.sql rename to src/core/SQL/SQLite/18/setup_100_backlog_idx2.sql diff --git a/src/core/SQL/SQLite/17/setup_110_buffer_user_idx.sql b/src/core/SQL/SQLite/18/setup_110_buffer_user_idx.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_110_buffer_user_idx.sql rename to src/core/SQL/SQLite/18/setup_110_buffer_user_idx.sql diff --git a/src/core/SQL/SQLite/17/setup_120_user_setting.sql b/src/core/SQL/SQLite/18/setup_120_user_setting.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_120_user_setting.sql rename to src/core/SQL/SQLite/18/setup_120_user_setting.sql diff --git a/src/core/SQL/SQLite/17/setup_130_identity.sql b/src/core/SQL/SQLite/18/setup_130_identity.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_130_identity.sql rename to src/core/SQL/SQLite/18/setup_130_identity.sql diff --git a/src/core/SQL/SQLite/17/setup_140_identity_nick.sql b/src/core/SQL/SQLite/18/setup_140_identity_nick.sql similarity index 100% rename from src/core/SQL/SQLite/17/setup_140_identity_nick.sql rename to src/core/SQL/SQLite/18/setup_140_identity_nick.sql diff --git a/src/core/SQL/SQLite/17/update_backlog_bufferid.sql b/src/core/SQL/SQLite/18/update_backlog_bufferid.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_backlog_bufferid.sql rename to src/core/SQL/SQLite/18/update_backlog_bufferid.sql diff --git a/src/core/SQL/SQLite/17/update_buffer_lastseen.sql b/src/core/SQL/SQLite/18/update_buffer_lastseen.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_buffer_lastseen.sql rename to src/core/SQL/SQLite/18/update_buffer_lastseen.sql diff --git a/src/core/SQL/SQLite/17/update_buffer_markerlinemsgid.sql b/src/core/SQL/SQLite/18/update_buffer_markerlinemsgid.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_buffer_markerlinemsgid.sql rename to src/core/SQL/SQLite/18/update_buffer_markerlinemsgid.sql diff --git a/src/core/SQL/SQLite/17/update_buffer_name.sql b/src/core/SQL/SQLite/18/update_buffer_name.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_buffer_name.sql rename to src/core/SQL/SQLite/18/update_buffer_name.sql diff --git a/src/core/SQL/SQLite/17/update_buffer_persistent_channel.sql b/src/core/SQL/SQLite/18/update_buffer_persistent_channel.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_buffer_persistent_channel.sql rename to src/core/SQL/SQLite/18/update_buffer_persistent_channel.sql diff --git a/src/core/SQL/SQLite/17/update_buffer_set_channel_key.sql b/src/core/SQL/SQLite/18/update_buffer_set_channel_key.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_buffer_set_channel_key.sql rename to src/core/SQL/SQLite/18/update_buffer_set_channel_key.sql diff --git a/src/core/SQL/SQLite/17/update_identity.sql b/src/core/SQL/SQLite/18/update_identity.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_identity.sql rename to src/core/SQL/SQLite/18/update_identity.sql diff --git a/src/core/SQL/SQLite/17/update_network.sql b/src/core/SQL/SQLite/18/update_network.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_network.sql rename to src/core/SQL/SQLite/18/update_network.sql diff --git a/src/core/SQL/SQLite/17/update_network_connected.sql b/src/core/SQL/SQLite/18/update_network_connected.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_network_connected.sql rename to src/core/SQL/SQLite/18/update_network_connected.sql diff --git a/src/core/SQL/SQLite/17/update_network_set_awaymsg.sql b/src/core/SQL/SQLite/18/update_network_set_awaymsg.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_network_set_awaymsg.sql rename to src/core/SQL/SQLite/18/update_network_set_awaymsg.sql diff --git a/src/core/SQL/SQLite/17/update_network_set_usermode.sql b/src/core/SQL/SQLite/18/update_network_set_usermode.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_network_set_usermode.sql rename to src/core/SQL/SQLite/18/update_network_set_usermode.sql diff --git a/src/core/SQL/SQLite/17/update_user_setting.sql b/src/core/SQL/SQLite/18/update_user_setting.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_user_setting.sql rename to src/core/SQL/SQLite/18/update_user_setting.sql diff --git a/src/core/SQL/SQLite/17/update_username.sql b/src/core/SQL/SQLite/18/update_username.sql similarity index 100% rename from src/core/SQL/SQLite/17/update_username.sql rename to src/core/SQL/SQLite/18/update_username.sql diff --git a/src/core/SQL/SQLite/18/update_userpassword.sql b/src/core/SQL/SQLite/18/update_userpassword.sql new file mode 100644 index 00000000..61eeb0ce --- /dev/null +++ b/src/core/SQL/SQLite/18/update_userpassword.sql @@ -0,0 +1,3 @@ +UPDATE quasseluser +SET password = :password, hashversion = :hashversion +WHERE userid = :userid diff --git a/src/core/SQL/SQLite/18/upgrade_000_alter_quasseluser_add_passwordversion.sql b/src/core/SQL/SQLite/18/upgrade_000_alter_quasseluser_add_passwordversion.sql new file mode 100644 index 00000000..ab1fce8f --- /dev/null +++ b/src/core/SQL/SQLite/18/upgrade_000_alter_quasseluser_add_passwordversion.sql @@ -0,0 +1,2 @@ +ALTER TABLE quasseluser +ADD COLUMN hashversion INTEGER NOT NULL DEFAULT 0 diff --git a/src/core/postgresqlstorage.cpp b/src/core/postgresqlstorage.cpp index 11adb1dd..7c20a05b 100644 --- a/src/core/postgresqlstorage.cpp +++ b/src/core/postgresqlstorage.cpp @@ -207,7 +207,8 @@ UserId PostgreSqlStorage::addUser(const QString &user, const QString &password) QSqlQuery query(logDb()); query.prepare(queryString("insert_quasseluser")); query.bindValue(":username", user); - query.bindValue(":password", cryptedPassword(password)); + query.bindValue(":password", hashPassword(password)); + query.bindValue(":hashversion", Storage::HashVersion::latest); safeExec(query); if (!watchQuery(query)) return 0; @@ -224,7 +225,8 @@ bool PostgreSqlStorage::updateUser(UserId user, const QString &password) QSqlQuery query(logDb()); query.prepare(queryString("update_userpassword")); query.bindValue(":userid", user.toInt()); - query.bindValue(":password", cryptedPassword(password)); + query.bindValue(":password", hashPassword(password)); + query.bindValue(":hashversion", Storage::HashVersion::latest); safeExec(query); watchQuery(query); return query.numRowsAffected() != 0; @@ -248,11 +250,10 @@ UserId PostgreSqlStorage::validateUser(const QString &user, const QString &passw QSqlQuery query(logDb()); query.prepare(queryString("select_authuser")); query.bindValue(":username", user); - query.bindValue(":password", cryptedPassword(password)); safeExec(query); watchQuery(query); - if (query.first()) { + if (query.first() && checkHashedPassword(query.value(0).toInt(), password, query.value(1).toString(), static_cast(query.value(2).toInt()))) { return query.value(0).toInt(); } else { diff --git a/src/core/sql.qrc b/src/core/sql.qrc index fce06925..c72d14f6 100644 --- a/src/core/sql.qrc +++ b/src/core/sql.qrc @@ -1,248 +1,250 @@ - ./SQL/PostgreSQL/15/upgrade_000_alter_buffer_add_markerlinemsgid.sql - ./SQL/PostgreSQL/16/delete_backlog_by_uid.sql - ./SQL/PostgreSQL/16/delete_backlog_for_buffer.sql - ./SQL/PostgreSQL/16/delete_backlog_for_network.sql - ./SQL/PostgreSQL/16/delete_buffer_for_bufferid.sql - ./SQL/PostgreSQL/16/delete_buffers_by_uid.sql - ./SQL/PostgreSQL/16/delete_buffers_for_network.sql - ./SQL/PostgreSQL/16/delete_identity.sql - ./SQL/PostgreSQL/16/delete_ircservers_for_network.sql - ./SQL/PostgreSQL/16/delete_network.sql - ./SQL/PostgreSQL/16/delete_networks_by_uid.sql - ./SQL/PostgreSQL/16/delete_nicks.sql - ./SQL/PostgreSQL/16/delete_quasseluser.sql - ./SQL/PostgreSQL/16/insert_buffer.sql - ./SQL/PostgreSQL/16/insert_identity.sql - ./SQL/PostgreSQL/16/insert_message.sql - ./SQL/PostgreSQL/16/insert_network.sql - ./SQL/PostgreSQL/16/insert_nick.sql - ./SQL/PostgreSQL/16/insert_quasseluser.sql - ./SQL/PostgreSQL/16/insert_sender.sql - ./SQL/PostgreSQL/16/insert_server.sql - ./SQL/PostgreSQL/16/insert_user_setting.sql - ./SQL/PostgreSQL/16/migrate_write_backlog.sql - ./SQL/PostgreSQL/16/migrate_write_buffer.sql - ./SQL/PostgreSQL/16/migrate_write_identity.sql - ./SQL/PostgreSQL/16/migrate_write_identity_nick.sql - ./SQL/PostgreSQL/16/migrate_write_ircserver.sql - ./SQL/PostgreSQL/16/migrate_write_network.sql - ./SQL/PostgreSQL/16/migrate_write_quasseluser.sql - ./SQL/PostgreSQL/16/migrate_write_sender.sql - ./SQL/PostgreSQL/16/migrate_write_usersetting.sql - ./SQL/PostgreSQL/16/select_authuser.sql - ./SQL/PostgreSQL/16/select_buffer_by_id.sql - ./SQL/PostgreSQL/16/select_buffer_lastseen_messages.sql - ./SQL/PostgreSQL/16/select_buffer_markerlinemsgids.sql - ./SQL/PostgreSQL/16/select_bufferByName.sql - ./SQL/PostgreSQL/16/select_bufferExists.sql - ./SQL/PostgreSQL/16/select_buffers.sql - ./SQL/PostgreSQL/16/select_buffers_for_network.sql - ./SQL/PostgreSQL/16/select_checkidentity.sql - ./SQL/PostgreSQL/16/select_connected_networks.sql - ./SQL/PostgreSQL/16/select_identities.sql - ./SQL/PostgreSQL/16/select_internaluser.sql - ./SQL/PostgreSQL/16/select_messages.sql - ./SQL/PostgreSQL/16/select_messagesAll.sql - ./SQL/PostgreSQL/16/select_messagesAllNew.sql - ./SQL/PostgreSQL/16/select_messagesNewerThan.sql - ./SQL/PostgreSQL/16/select_messagesRange.sql - ./SQL/PostgreSQL/16/select_network_awaymsg.sql - ./SQL/PostgreSQL/16/select_network_usermode.sql - ./SQL/PostgreSQL/16/select_networkExists.sql - ./SQL/PostgreSQL/16/select_networks_for_user.sql - ./SQL/PostgreSQL/16/select_nicks.sql - ./SQL/PostgreSQL/16/select_persistent_channels.sql - ./SQL/PostgreSQL/16/select_senderid.sql - ./SQL/PostgreSQL/16/select_servers_for_network.sql - ./SQL/PostgreSQL/16/select_user_setting.sql - ./SQL/PostgreSQL/16/select_userid.sql - ./SQL/PostgreSQL/16/setup_000_quasseluser.sql - ./SQL/PostgreSQL/16/setup_010_sender.sql - ./SQL/PostgreSQL/16/setup_020_identity.sql - ./SQL/PostgreSQL/16/setup_030_identity_nick.sql - ./SQL/PostgreSQL/16/setup_040_network.sql - ./SQL/PostgreSQL/16/setup_050_buffer.sql - ./SQL/PostgreSQL/16/setup_060_backlog.sql - ./SQL/PostgreSQL/16/setup_070_coreinfo.sql - ./SQL/PostgreSQL/16/setup_080_ircservers.sql - ./SQL/PostgreSQL/16/setup_090_backlog_idx.sql - ./SQL/PostgreSQL/16/setup_100_user_setting.sql - ./SQL/PostgreSQL/16/setup_110_alter_sender_seq.sql - ./SQL/PostgreSQL/16/setup_120_alter_messageid_seq.sql - ./SQL/PostgreSQL/16/update_backlog_bufferid.sql - ./SQL/PostgreSQL/16/update_buffer_lastseen.sql - ./SQL/PostgreSQL/16/update_buffer_markerlinemsgid.sql - ./SQL/PostgreSQL/16/update_buffer_name.sql - ./SQL/PostgreSQL/16/update_buffer_persistent_channel.sql - ./SQL/PostgreSQL/16/update_buffer_set_channel_key.sql - ./SQL/PostgreSQL/16/update_identity.sql - ./SQL/PostgreSQL/16/update_network.sql - ./SQL/PostgreSQL/16/update_network_connected.sql - ./SQL/PostgreSQL/16/update_network_set_awaymsg.sql - ./SQL/PostgreSQL/16/update_network_set_usermode.sql - ./SQL/PostgreSQL/16/update_user_setting.sql - ./SQL/PostgreSQL/16/update_username.sql - ./SQL/PostgreSQL/16/update_userpassword.sql - ./SQL/PostgreSQL/16/upgrade_000_alter_network_add_sasl.sql - ./SQL/SQLite/1/upgrade_000_drop_coreinfo.sql - ./SQL/SQLite/1/upgrade_010_create_coreinfo.sql - ./SQL/SQLite/1/upgrade_020_update_schemaversion.sql - ./SQL/SQLite/10/upgrade_000_switch_to_msgid.sql - ./SQL/SQLite/10/upgrade_010_rename_buffer_table.sql - ./SQL/SQLite/10/upgrade_020_create_buffer_table.sql - ./SQL/SQLite/10/upgrade_030_copy_buffer_table.sql - ./SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql - ./SQL/SQLite/11/upgrade_000_create_user_setting.sql - ./SQL/SQLite/12/upgrade_000_create_identity.sql - ./SQL/SQLite/12/upgrade_010_create_identity_nick.sql - ./SQL/SQLite/12/upgrade_020_rename_servertable.sql - ./SQL/SQLite/12/upgrade_030_create_ircserver.sql - ./SQL/SQLite/12/upgrade_040_copy_ircserver.sql - ./SQL/SQLite/12/upgrade_050_drop_ircserverold.sql - ./SQL/SQLite/13/upgrade_000_create_buffer_user_idx.sql - ./SQL/SQLite/13/upgrade_010_create_buffer_cname_idx.sql - ./SQL/SQLite/13/upgrade_020_create_buffer_cname_idx.sql - ./SQL/SQLite/14/upgrade_000_rename_networktable.sql - ./SQL/SQLite/14/upgrade_010_create_networktable.sql - ./SQL/SQLite/14/upgrade_030_copy_networktable.sql - ./SQL/SQLite/14/upgrade_040_drop_networkold.sql - ./SQL/SQLite/15/upgrade_000_fix_ircservers.sql - ./SQL/SQLite/15/upgrade_000_fix_network.sql ./SQL/SQLite/16/upgrade_000_alter_buffer_add_markerlinemsgid.sql - ./SQL/SQLite/17/delete_backlog_by_uid.sql - ./SQL/SQLite/17/delete_backlog_for_buffer.sql - ./SQL/SQLite/17/delete_backlog_for_network.sql - ./SQL/SQLite/17/delete_buffer_for_bufferid.sql - ./SQL/SQLite/17/delete_buffers_by_uid.sql - ./SQL/SQLite/17/delete_buffers_for_network.sql - ./SQL/SQLite/17/delete_identity.sql - ./SQL/SQLite/17/delete_ircservers_for_network.sql - ./SQL/SQLite/17/delete_network.sql - ./SQL/SQLite/17/delete_networks_by_uid.sql - ./SQL/SQLite/17/delete_nicks.sql - ./SQL/SQLite/17/delete_quasseluser.sql - ./SQL/SQLite/17/insert_buffer.sql - ./SQL/SQLite/17/insert_identity.sql - ./SQL/SQLite/17/insert_message.sql - ./SQL/SQLite/17/insert_network.sql - ./SQL/SQLite/17/insert_nick.sql - ./SQL/SQLite/17/insert_quasseluser.sql - ./SQL/SQLite/17/insert_sender.sql - ./SQL/SQLite/17/insert_server.sql - ./SQL/SQLite/17/insert_user_setting.sql - ./SQL/SQLite/17/migrate_read_backlog.sql - ./SQL/SQLite/17/migrate_read_buffer.sql - ./SQL/SQLite/17/migrate_read_identity.sql - ./SQL/SQLite/17/migrate_read_identity_nick.sql - ./SQL/SQLite/17/migrate_read_ircserver.sql - ./SQL/SQLite/17/migrate_read_network.sql - ./SQL/SQLite/17/migrate_read_quasseluser.sql - ./SQL/SQLite/17/migrate_read_sender.sql - ./SQL/SQLite/17/migrate_read_usersetting.sql - ./SQL/SQLite/17/select_authuser.sql - ./SQL/SQLite/17/select_buffer_by_id.sql - ./SQL/SQLite/17/select_buffer_lastseen_messages.sql - ./SQL/SQLite/17/select_buffer_markerlinemsgids.sql - ./SQL/SQLite/17/select_bufferByName.sql - ./SQL/SQLite/17/select_bufferExists.sql - ./SQL/SQLite/17/select_buffers.sql - ./SQL/SQLite/17/select_buffers_for_merge.sql - ./SQL/SQLite/17/select_buffers_for_network.sql - ./SQL/SQLite/17/select_checkidentity.sql - ./SQL/SQLite/17/select_connected_networks.sql - ./SQL/SQLite/17/select_identities.sql - ./SQL/SQLite/17/select_internaluser.sql - ./SQL/SQLite/17/select_messages.sql - ./SQL/SQLite/17/select_messagesAll.sql - ./SQL/SQLite/17/select_messagesAllNew.sql - ./SQL/SQLite/17/select_messagesNewerThan.sql - ./SQL/SQLite/17/select_messagesNewestK.sql - ./SQL/SQLite/17/select_network_awaymsg.sql - ./SQL/SQLite/17/select_network_usermode.sql - ./SQL/SQLite/17/select_networkExists.sql - ./SQL/SQLite/17/select_networks_for_user.sql - ./SQL/SQLite/17/select_nicks.sql - ./SQL/SQLite/17/select_persistent_channels.sql - ./SQL/SQLite/17/select_servers_for_network.sql - ./SQL/SQLite/17/select_user_setting.sql - ./SQL/SQLite/17/select_userid.sql - ./SQL/SQLite/17/setup_000_quasseluser.sql - ./SQL/SQLite/17/setup_010_sender.sql - ./SQL/SQLite/17/setup_020_network.sql - ./SQL/SQLite/17/setup_030_buffer.sql - ./SQL/SQLite/17/setup_040_buffer_idx.sql - ./SQL/SQLite/17/setup_050_buffer_cname_idx.sql - ./SQL/SQLite/17/setup_060_backlog.sql - ./SQL/SQLite/17/setup_070_coreinfo.sql - ./SQL/SQLite/17/setup_080_ircservers.sql - ./SQL/SQLite/17/setup_090_backlog_idx.sql - ./SQL/SQLite/17/setup_100_backlog_idx2.sql - ./SQL/SQLite/17/setup_110_buffer_user_idx.sql - ./SQL/SQLite/17/setup_120_user_setting.sql - ./SQL/SQLite/17/setup_130_identity.sql - ./SQL/SQLite/17/setup_140_identity_nick.sql - ./SQL/SQLite/17/update_backlog_bufferid.sql - ./SQL/SQLite/17/update_buffer_lastseen.sql - ./SQL/SQLite/17/update_buffer_markerlinemsgid.sql - ./SQL/SQLite/17/update_buffer_name.sql - ./SQL/SQLite/17/update_buffer_persistent_channel.sql - ./SQL/SQLite/17/update_buffer_set_channel_key.sql - ./SQL/SQLite/17/update_identity.sql - ./SQL/SQLite/17/update_network.sql - ./SQL/SQLite/17/update_network_connected.sql - ./SQL/SQLite/17/update_network_set_awaymsg.sql - ./SQL/SQLite/17/update_network_set_usermode.sql - ./SQL/SQLite/17/update_user_setting.sql - ./SQL/SQLite/17/update_username.sql - ./SQL/SQLite/17/update_userpassword.sql - ./SQL/SQLite/17/upgrade_000_alter_network_add_sasl.sql ./SQL/SQLite/17/upgrade_001_alter_network_add_sasl.sql + ./SQL/SQLite/17/upgrade_000_alter_network_add_sasl.sql ./SQL/SQLite/17/upgrade_002_alter_network_add_sasl.sql - ./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql + ./SQL/SQLite/18/update_buffer_persistent_channel.sql + ./SQL/SQLite/18/insert_network.sql + ./SQL/SQLite/18/insert_identity.sql + ./SQL/SQLite/18/select_checkidentity.sql + ./SQL/SQLite/18/migrate_read_identity.sql + ./SQL/SQLite/18/update_identity.sql + ./SQL/SQLite/18/delete_buffer_for_bufferid.sql + ./SQL/SQLite/18/setup_120_user_setting.sql + ./SQL/SQLite/18/select_networks_for_user.sql + ./SQL/SQLite/18/select_networkExists.sql + ./SQL/SQLite/18/migrate_read_network.sql + ./SQL/SQLite/18/setup_130_identity.sql + ./SQL/SQLite/18/select_messagesNewestK.sql + ./SQL/SQLite/18/setup_100_backlog_idx2.sql + ./SQL/SQLite/18/select_messagesAllNew.sql + ./SQL/SQLite/18/select_buffers_for_merge.sql + ./SQL/SQLite/18/delete_ircservers_for_network.sql + ./SQL/SQLite/18/select_persistent_channels.sql + ./SQL/SQLite/18/update_buffer_set_channel_key.sql + ./SQL/SQLite/18/setup_040_buffer_idx.sql + ./SQL/SQLite/18/select_messagesNewerThan.sql + ./SQL/SQLite/18/setup_070_coreinfo.sql + ./SQL/SQLite/18/insert_nick.sql + ./SQL/SQLite/18/select_messagesAll.sql + ./SQL/SQLite/18/delete_identity.sql + ./SQL/SQLite/18/select_buffer_markerlinemsgids.sql + ./SQL/SQLite/18/migrate_read_identity_nick.sql + ./SQL/SQLite/18/select_buffer_lastseen_messages.sql + ./SQL/SQLite/18/insert_sender.sql + ./SQL/SQLite/18/select_nicks.sql + ./SQL/SQLite/18/setup_030_buffer.sql + ./SQL/SQLite/18/migrate_read_sender.sql + ./SQL/SQLite/18/insert_user_setting.sql + ./SQL/SQLite/18/delete_buffers_for_network.sql + ./SQL/SQLite/18/select_messages.sql + ./SQL/SQLite/18/select_buffers.sql + ./SQL/SQLite/18/select_userid.sql + ./SQL/SQLite/18/update_network.sql + ./SQL/SQLite/18/migrate_read_usersetting.sql + ./SQL/SQLite/18/migrate_read_quasseluser.sql + ./SQL/SQLite/18/setup_010_sender.sql + ./SQL/SQLite/18/delete_quasseluser.sql + ./SQL/SQLite/18/select_network_usermode.sql + ./SQL/SQLite/18/update_userpassword.sql + ./SQL/SQLite/18/select_identities.sql + ./SQL/SQLite/18/setup_000_quasseluser.sql + ./SQL/SQLite/18/setup_080_ircservers.sql + ./SQL/SQLite/18/delete_nicks.sql + ./SQL/SQLite/18/delete_network.sql + ./SQL/SQLite/18/select_servers_for_network.sql + ./SQL/SQLite/18/migrate_read_buffer.sql + ./SQL/SQLite/18/select_connected_networks.sql + ./SQL/SQLite/18/update_network_connected.sql + ./SQL/SQLite/18/delete_backlog_for_network.sql + ./SQL/SQLite/18/setup_060_backlog.sql + ./SQL/SQLite/18/update_username.sql + ./SQL/SQLite/18/insert_message.sql + ./SQL/SQLite/18/select_buffer_by_id.sql + ./SQL/SQLite/18/update_user_setting.sql + ./SQL/SQLite/18/update_buffer_name.sql + ./SQL/SQLite/18/select_bufferExists.sql + ./SQL/SQLite/18/setup_110_buffer_user_idx.sql + ./SQL/SQLite/18/select_buffers_for_network.sql + ./SQL/SQLite/18/delete_backlog_by_uid.sql + ./SQL/SQLite/18/select_internaluser.sql + ./SQL/SQLite/18/select_network_awaymsg.sql + ./SQL/SQLite/18/setup_090_backlog_idx.sql + ./SQL/SQLite/18/insert_quasseluser.sql + ./SQL/SQLite/18/update_network_set_usermode.sql + ./SQL/SQLite/18/migrate_read_ircserver.sql + ./SQL/SQLite/18/delete_backlog_for_buffer.sql + ./SQL/SQLite/18/update_network_set_awaymsg.sql + ./SQL/SQLite/18/upgrade_000_alter_quasseluser_add_passwordversion.sql + ./SQL/SQLite/18/update_backlog_bufferid.sql + ./SQL/SQLite/18/update_buffer_markerlinemsgid.sql + ./SQL/SQLite/18/update_buffer_lastseen.sql + ./SQL/SQLite/18/setup_050_buffer_cname_idx.sql + ./SQL/SQLite/18/insert_buffer.sql + ./SQL/SQLite/18/select_authuser.sql + ./SQL/SQLite/18/select_user_setting.sql + ./SQL/SQLite/18/select_bufferByName.sql + ./SQL/SQLite/18/insert_server.sql + ./SQL/SQLite/18/setup_020_network.sql + ./SQL/SQLite/18/migrate_read_backlog.sql + ./SQL/SQLite/18/setup_140_identity_nick.sql + ./SQL/SQLite/18/delete_networks_by_uid.sql + ./SQL/SQLite/18/delete_buffers_by_uid.sql + ./SQL/SQLite/15/upgrade_000_fix_ircservers.sql + ./SQL/SQLite/15/upgrade_000_fix_network.sql ./SQL/SQLite/2/upgrade_010_update_schemaversion.sql - ./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql - ./SQL/SQLite/3/upgrade_010_update_schemaversion.sql - ./SQL/SQLite/4/upgrade_000_rename_buffertable.sql - ./SQL/SQLite/4/upgrade_010_create_buffertable.sql - ./SQL/SQLite/4/upgrade_020_copy_buffertable.sql - ./SQL/SQLite/4/upgrade_030_drop_oldbuffertable.sql - ./SQL/SQLite/4/upgrade_040_create_buffer_idx.sql - ./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql - ./SQL/SQLite/5/upgrade_000_rename_networktable.sql - ./SQL/SQLite/5/upgrade_010_create_newnetworktable.sql - ./SQL/SQLite/5/upgrade_020_copy_networktable.sql + ./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql ./SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql + ./SQL/SQLite/5/upgrade_020_copy_networktable.sql + ./SQL/SQLite/5/upgrade_000_rename_networktable.sql ./SQL/SQLite/5/upgrade_180_create_ircservers.sql - ./SQL/SQLite/6/upgrade_000_alter_buffertable.sql + ./SQL/SQLite/5/upgrade_010_create_newnetworktable.sql + ./SQL/SQLite/12/upgrade_050_drop_ircserverold.sql + ./SQL/SQLite/12/upgrade_030_create_ircserver.sql + ./SQL/SQLite/12/upgrade_010_create_identity_nick.sql + ./SQL/SQLite/12/upgrade_040_copy_ircserver.sql + ./SQL/SQLite/12/upgrade_000_create_identity.sql + ./SQL/SQLite/12/upgrade_020_rename_servertable.sql + ./SQL/SQLite/14/upgrade_000_rename_networktable.sql + ./SQL/SQLite/14/upgrade_040_drop_networkold.sql + ./SQL/SQLite/14/upgrade_010_create_networktable.sql + ./SQL/SQLite/14/upgrade_030_copy_networktable.sql + ./SQL/SQLite/13/upgrade_000_create_buffer_user_idx.sql + ./SQL/SQLite/13/upgrade_020_create_buffer_cname_idx.sql + ./SQL/SQLite/13/upgrade_010_create_buffer_cname_idx.sql + ./SQL/SQLite/11/upgrade_000_create_user_setting.sql + ./SQL/SQLite/3/upgrade_010_update_schemaversion.sql + ./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql + ./SQL/SQLite/8/upgrade_000_alter_network_add_connected.sql + ./SQL/SQLite/8/upgrade_020_alter_buffer_add_joined.sql + ./SQL/SQLite/8/upgrade_010_alter_buffer_add_key.sql + ./SQL/SQLite/8/upgrade_030_update_buffer_set_joined_for_channels.sql ./SQL/SQLite/6/upgrade_010_set_statusbuffertype.sql - ./SQL/SQLite/6/upgrade_020_set_channelbuffertype.sql - ./SQL/SQLite/6/upgrade_030_set_querybuffertype.sql - ./SQL/SQLite/6/upgrade_040_update_msgtype.sql - ./SQL/SQLite/6/upgrade_050_update_msgtype.sql + ./SQL/SQLite/6/upgrade_080_update_msgtype.sql + ./SQL/SQLite/6/upgrade_000_alter_buffertable.sql ./SQL/SQLite/6/upgrade_060_update_msgtype.sql + ./SQL/SQLite/6/upgrade_050_update_msgtype.sql + ./SQL/SQLite/6/upgrade_150_update_msgtype.sql + ./SQL/SQLite/6/upgrade_100_update_msgtype.sql + ./SQL/SQLite/6/upgrade_040_update_msgtype.sql + ./SQL/SQLite/6/upgrade_130_update_msgtype.sql + ./SQL/SQLite/6/upgrade_160_update_msgtype.sql + ./SQL/SQLite/6/upgrade_020_set_channelbuffertype.sql ./SQL/SQLite/6/upgrade_070_update_msgtype.sql - ./SQL/SQLite/6/upgrade_080_update_msgtype.sql ./SQL/SQLite/6/upgrade_090_update_msgtype.sql - ./SQL/SQLite/6/upgrade_100_update_msgtype.sql - ./SQL/SQLite/6/upgrade_110_update_msgtype.sql + ./SQL/SQLite/6/upgrade_030_set_querybuffertype.sql ./SQL/SQLite/6/upgrade_120_update_msgtype.sql - ./SQL/SQLite/6/upgrade_130_update_msgtype.sql + ./SQL/SQLite/6/upgrade_110_update_msgtype.sql ./SQL/SQLite/6/upgrade_140_update_msgtype.sql - ./SQL/SQLite/6/upgrade_150_update_msgtype.sql - ./SQL/SQLite/6/upgrade_160_update_msgtype.sql + ./SQL/SQLite/4/upgrade_010_create_buffertable.sql + ./SQL/SQLite/4/upgrade_040_create_buffer_idx.sql + ./SQL/SQLite/4/upgrade_020_copy_buffertable.sql + ./SQL/SQLite/4/upgrade_030_drop_oldbuffertable.sql + ./SQL/SQLite/4/upgrade_000_rename_buffertable.sql + ./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql + ./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql + ./SQL/SQLite/7/upgrade_020_copy_networktable.sql ./SQL/SQLite/7/upgrade_000_rename_networktable.sql ./SQL/SQLite/7/upgrade_010_create_newnetworktable.sql - ./SQL/SQLite/7/upgrade_020_copy_networktable.sql - ./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql ./SQL/SQLite/7/upgrade_040_alter_buffer_add_lastseen.sql - ./SQL/SQLite/8/upgrade_000_alter_network_add_connected.sql - ./SQL/SQLite/8/upgrade_010_alter_buffer_add_key.sql - ./SQL/SQLite/8/upgrade_020_alter_buffer_add_joined.sql - ./SQL/SQLite/8/upgrade_030_update_buffer_set_joined_for_channels.sql - ./SQL/SQLite/9/upgrade_000_create_backlog_idx.sql - ./SQL/SQLite/9/upgrade_010_create_backlog_idx2.sql + ./SQL/SQLite/1/upgrade_010_create_coreinfo.sql + ./SQL/SQLite/1/upgrade_020_update_schemaversion.sql + ./SQL/SQLite/1/upgrade_000_drop_coreinfo.sql + ./SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql + ./SQL/SQLite/10/upgrade_030_copy_buffer_table.sql + ./SQL/SQLite/10/upgrade_000_switch_to_msgid.sql + ./SQL/SQLite/10/upgrade_020_create_buffer_table.sql + ./SQL/SQLite/10/upgrade_010_rename_buffer_table.sql ./SQL/SQLite/9/upgrade_020_create_buffer_idx.sql + ./SQL/SQLite/9/upgrade_010_create_backlog_idx2.sql + ./SQL/SQLite/9/upgrade_000_create_backlog_idx.sql + ./SQL/PostgreSQL/16/upgrade_000_alter_network_add_sasl.sql + ./SQL/PostgreSQL/17/setup_120_alter_messageid_seq.sql + ./SQL/PostgreSQL/17/setup_030_identity_nick.sql + ./SQL/PostgreSQL/17/update_buffer_persistent_channel.sql + ./SQL/PostgreSQL/17/insert_network.sql + ./SQL/PostgreSQL/17/insert_identity.sql + ./SQL/PostgreSQL/17/select_checkidentity.sql + ./SQL/PostgreSQL/17/update_identity.sql + ./SQL/PostgreSQL/17/delete_buffer_for_bufferid.sql + ./SQL/PostgreSQL/17/select_networks_for_user.sql + ./SQL/PostgreSQL/17/select_networkExists.sql + ./SQL/PostgreSQL/17/migrate_write_backlog.sql + ./SQL/PostgreSQL/17/migrate_write_identity_nick.sql + ./SQL/PostgreSQL/17/select_messagesAllNew.sql + ./SQL/PostgreSQL/17/delete_ircservers_for_network.sql + ./SQL/PostgreSQL/17/select_persistent_channels.sql + ./SQL/PostgreSQL/17/update_buffer_set_channel_key.sql + ./SQL/PostgreSQL/17/migrate_write_ircserver.sql + ./SQL/PostgreSQL/17/setup_040_network.sql + ./SQL/PostgreSQL/17/migrate_write_buffer.sql + ./SQL/PostgreSQL/17/migrate_write_usersetting.sql + ./SQL/PostgreSQL/17/setup_050_buffer.sql + ./SQL/PostgreSQL/17/migrate_write_identity.sql + ./SQL/PostgreSQL/17/select_messagesNewerThan.sql + ./SQL/PostgreSQL/17/setup_070_coreinfo.sql + ./SQL/PostgreSQL/17/insert_nick.sql + ./SQL/PostgreSQL/17/select_messagesAll.sql + ./SQL/PostgreSQL/17/delete_identity.sql + ./SQL/PostgreSQL/17/setup_110_alter_sender_seq.sql + ./SQL/PostgreSQL/17/select_senderid.sql + ./SQL/PostgreSQL/17/select_buffer_markerlinemsgids.sql + ./SQL/PostgreSQL/17/select_buffer_lastseen_messages.sql + ./SQL/PostgreSQL/17/insert_sender.sql + ./SQL/PostgreSQL/17/select_nicks.sql + ./SQL/PostgreSQL/17/insert_user_setting.sql + ./SQL/PostgreSQL/17/setup_020_identity.sql + ./SQL/PostgreSQL/17/delete_buffers_for_network.sql + ./SQL/PostgreSQL/17/select_messages.sql + ./SQL/PostgreSQL/17/select_buffers.sql + ./SQL/PostgreSQL/17/select_userid.sql + ./SQL/PostgreSQL/17/update_network.sql + ./SQL/PostgreSQL/17/setup_010_sender.sql + ./SQL/PostgreSQL/17/delete_quasseluser.sql + ./SQL/PostgreSQL/17/select_network_usermode.sql + ./SQL/PostgreSQL/17/update_userpassword.sql + ./SQL/PostgreSQL/17/select_identities.sql + ./SQL/PostgreSQL/17/setup_000_quasseluser.sql + ./SQL/PostgreSQL/17/setup_080_ircservers.sql + ./SQL/PostgreSQL/17/delete_nicks.sql + ./SQL/PostgreSQL/17/migrate_write_quasseluser.sql + ./SQL/PostgreSQL/17/delete_network.sql + ./SQL/PostgreSQL/17/select_servers_for_network.sql + ./SQL/PostgreSQL/17/select_connected_networks.sql + ./SQL/PostgreSQL/17/update_network_connected.sql + ./SQL/PostgreSQL/17/select_messagesRange.sql + ./SQL/PostgreSQL/17/delete_backlog_for_network.sql + ./SQL/PostgreSQL/17/setup_060_backlog.sql + ./SQL/PostgreSQL/17/update_username.sql + ./SQL/PostgreSQL/17/insert_message.sql + ./SQL/PostgreSQL/17/select_buffer_by_id.sql + ./SQL/PostgreSQL/17/update_user_setting.sql + ./SQL/PostgreSQL/17/update_buffer_name.sql + ./SQL/PostgreSQL/17/select_bufferExists.sql + ./SQL/PostgreSQL/17/select_buffers_for_network.sql + ./SQL/PostgreSQL/17/delete_backlog_by_uid.sql + ./SQL/PostgreSQL/17/select_internaluser.sql + ./SQL/PostgreSQL/17/select_network_awaymsg.sql + ./SQL/PostgreSQL/17/setup_090_backlog_idx.sql + ./SQL/PostgreSQL/17/insert_quasseluser.sql + ./SQL/PostgreSQL/17/update_network_set_usermode.sql + ./SQL/PostgreSQL/17/delete_backlog_for_buffer.sql + ./SQL/PostgreSQL/17/update_network_set_awaymsg.sql + ./SQL/PostgreSQL/17/upgrade_000_alter_quasseluser_add_passwordversion.sql + ./SQL/PostgreSQL/17/update_backlog_bufferid.sql + ./SQL/PostgreSQL/17/update_buffer_markerlinemsgid.sql + ./SQL/PostgreSQL/17/update_buffer_lastseen.sql + ./SQL/PostgreSQL/17/insert_buffer.sql + ./SQL/PostgreSQL/17/select_authuser.sql + ./SQL/PostgreSQL/17/select_user_setting.sql + ./SQL/PostgreSQL/17/migrate_write_network.sql + ./SQL/PostgreSQL/17/select_bufferByName.sql + ./SQL/PostgreSQL/17/insert_server.sql + ./SQL/PostgreSQL/17/delete_networks_by_uid.sql + ./SQL/PostgreSQL/17/migrate_write_sender.sql + ./SQL/PostgreSQL/17/delete_buffers_by_uid.sql + ./SQL/PostgreSQL/17/setup_100_user_setting.sql + ./SQL/PostgreSQL/15/upgrade_000_alter_buffer_add_markerlinemsgid.sql diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 837e6b8a..0b640f46 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -129,7 +129,8 @@ UserId SqliteStorage::addUser(const QString &user, const QString &password) QSqlQuery query(db); query.prepare(queryString("insert_quasseluser")); query.bindValue(":username", user); - query.bindValue(":password", cryptedPassword(password)); + query.bindValue(":password", hashPassword(password)); + query.bindValue(":hashversion", Storage::HashVersion::latest); lockForWrite(); safeExec(query); if (query.lastError().isValid() && query.lastError().number() == 19) { // user already exists - sadly 19 seems to be the general constraint violation error... @@ -158,7 +159,8 @@ bool SqliteStorage::updateUser(UserId user, const QString &password) QSqlQuery query(db); query.prepare(queryString("update_userpassword")); query.bindValue(":userid", user.toInt()); - query.bindValue(":password", cryptedPassword(password)); + query.bindValue(":password", hashPassword(password)); + query.bindValue(":hashversion", Storage::HashVersion::latest); lockForWrite(); safeExec(query); success = query.numRowsAffected() != 0; @@ -190,23 +192,30 @@ void SqliteStorage::renameUser(UserId user, const QString &newName) UserId SqliteStorage::validateUser(const QString &user, const QString &password) { UserId userId; + QString hashedPassword; + Storage::HashVersion hashVersion; { QSqlQuery query(logDb()); query.prepare(queryString("select_authuser")); query.bindValue(":username", user); - query.bindValue(":password", cryptedPassword(password)); lockForRead(); safeExec(query); if (query.first()) { userId = query.value(0).toInt(); + hashedPassword = query.value(1).toString(); + hashVersion = static_cast(query.value(2).toInt()); } } unlock(); - return userId; + UserId returnUserId; + if (userId != 0 && checkHashedPassword(userId, password, hashedPassword, hashVersion)) { + returnUserId = userId; + } + return returnUserId; } diff --git a/src/core/storage.cpp b/src/core/storage.cpp index 2e81de67..4a84e9bb 100644 --- a/src/core/storage.cpp +++ b/src/core/storage.cpp @@ -27,8 +27,37 @@ Storage::Storage(QObject *parent) { } +QString Storage::hashPassword(const QString &password) +{ + return hashPasswordSha1(password); +} -QString Storage::cryptedPassword(const QString &password) +bool Storage::checkHashedPassword(const UserId user, const QString &password, const QString &hashedPassword, const Storage::HashVersion version) +{ + bool passwordCorrect = false; + + switch (version) { + case Storage::HashVersion::sha1: + passwordCorrect = checkHashedPasswordSha1(password, hashedPassword); + break; + + default: + qWarning() << "Password hash version" << QString(version) << "is not supported, please reset password"; + } + + if (passwordCorrect && version < Storage::HashVersion::latest) { + updateUser(user, password); + } + + return passwordCorrect; +} + +QString Storage::hashPasswordSha1(const QString &password) { return QString(QCryptographicHash::hash(password.toUtf8(), QCryptographicHash::Sha1).toHex()); } + +bool Storage::checkHashedPasswordSha1(const QString &password, const QString &hashedPassword) +{ + return hashPasswordSha1(password) == hashedPassword; +} diff --git a/src/core/storage.h b/src/core/storage.h index 9984d317..9371529d 100644 --- a/src/core/storage.h +++ b/src/core/storage.h @@ -42,6 +42,11 @@ public: NotAvailable // remove the storage backend from the list of avaliable backends }; + enum HashVersion { + sha1, + latest=sha1 + }; + public slots: /* General */ @@ -408,10 +413,12 @@ signals: void userRemoved(UserId); protected: - //! when implementing a storage handler, use this method to crypt user passwords. - /** This guarantees compatibility with other storage handlers and allows easy migration - */ - QString cryptedPassword(const QString &password); + QString hashPassword(const QString &password); + bool checkHashedPassword(const UserId user, const QString &password, const QString &hashedPassword, const Storage::HashVersion version); + +private: + QString hashPasswordSha1(const QString &password); + bool checkHashedPasswordSha1(const QString &password, const QString &hashedPassword); }; -- 2.20.1