diff --git a/server/src/DatabaseHelper.cpp b/server/src/DatabaseHelper.cpp index 9cca201..fb1d7d6 100644 --- a/server/src/DatabaseHelper.cpp +++ b/server/src/DatabaseHelper.cpp @@ -238,7 +238,7 @@ inline sql::result load_permissions_v2(const std::shared_ptr& server, auto server_id = server ? server->getServerId() : 0; return command.query([&](int length, char** values, char** names){ permission::PermissionType key = permission::PermissionType::undefined; - permission::PermissionValue value = 0, granted = 0; + permission::PermissionValue value = permNotGranted, granted = permNotGranted; bool negated = false, skipped = false; std::shared_ptr channel; @@ -342,9 +342,9 @@ std::shared_ptr DatabaseHelper::loadClientPermissionManag auto channel = perm->channelId > 0 ? server->getChannelTree()->findChannel(perm->channelId) : nullptr; if(channel) - pMgr->load_permission(perm->permission->type, {perm->value, perm->grant}, channel->channelId(), perm->flag_negate, perm->flag_skip, perm->value != permNotGranted, perm->grant != permNotGranted); + pMgr->load_permission(perm->permission->type, {perm->value, perm->grant}, channel->channelId(), perm->flag_skip, perm->flag_negate, perm->value != permNotGranted, perm->grant != permNotGranted); else - pMgr->load_permission(perm->permission->type, {perm->value, perm->grant}, perm->flag_negate, perm->flag_skip, perm->value != permNotGranted, perm->grant != permNotGranted); + pMgr->load_permission(perm->permission->type, {perm->value, perm->grant}, perm->flag_skip, perm->flag_negate, perm->value != permNotGranted, perm->grant != permNotGranted); } } loaded = true; @@ -384,6 +384,8 @@ void DatabaseHelper::saveClientPermissions(const std::shared_ptrname, @@ -398,8 +400,8 @@ void DatabaseHelper::saveClientPermissions(const std::shared_ptrname}, - variable{":value", update.values.value}, - variable{":grant", update.values.grant}, + variable{":value", value}, + variable{":grant", grant}, variable{":flag_skip", update.flag_skip}, variable{":flag_negate", update.flag_negate}) .executeLater().waitAndGetLater(LOG_SQL_CMD, {-1, "future error"}); @@ -423,7 +425,7 @@ std::shared_ptr DatabaseHelper::loadGroupPerm if(entry) { for(const auto& perm : entry->permissions) { if(perm->type == permission::SQL_PERM_GROUP && perm->id == group_id) { - result->load_permission(perm->permission->type, {perm->value, perm->grant}, perm->flag_negate, perm->flag_skip, perm->value != permNotGranted, perm->grant != permNotGranted); + result->load_permission(perm->permission->type, {perm->value, perm->grant}, perm->flag_skip, perm->flag_negate, perm->value != permNotGranted, perm->grant != permNotGranted); } } return result; @@ -449,11 +451,13 @@ void DatabaseHelper::saveGroupPermissions(const std::shared_ptrname, - update.values.value, - update.values.grant, + value, + grant, query ); sql::command(this->sql, query, @@ -463,8 +467,8 @@ void DatabaseHelper::saveGroupPermissions(const std::shared_ptrname}, - variable{":value", update.values.value}, - variable{":grant", update.values.grant}, + variable{":value", value}, + variable{":grant", grant}, variable{":flag_skip", update.flag_skip}, variable{":flag_negate", update.flag_negate}) .executeLater().waitAndGetLater(LOG_SQL_CMD, {-1, "future error"}); @@ -568,7 +572,7 @@ std::shared_ptr DatabaseHelper::loadChannelPe if(entry) { for(const auto& perm : entry->permissions) { if(perm->type == permission::SQL_PERM_CHANNEL && perm->channelId == channel) { - result->load_permission(perm->permission->type, {perm->value, perm->grant}, perm->flag_negate, perm->flag_skip, perm->value != permNotGranted, perm->grant != permNotGranted); + result->load_permission(perm->permission->type, {perm->value, perm->grant}, perm->flag_skip, perm->flag_negate, perm->value != permNotGranted, perm->grant != permNotGranted); } } return result; @@ -593,12 +597,14 @@ void DatabaseHelper::saveChannelPermissions(const std::shared_ptrname, - update.values.value, - update.values.grant, + value, + grant, query ); sql::command(this->sql, query, @@ -608,8 +614,8 @@ void DatabaseHelper::saveChannelPermissions(const std::shared_ptrname}, - variable{":value", update.values.value}, - variable{":grant", update.values.grant}, + variable{":value", value}, + variable{":grant", grant}, variable{":flag_skip", update.flag_skip}, variable{":flag_negate", update.flag_negate}) .executeLater().waitAndGetLater(LOG_SQL_CMD, {-1, "future error"}); @@ -1100,7 +1106,7 @@ void DatabaseHelper::loadStartupPermissionCache() { StartupPermissionArgument arg; sql::command(this->sql, "SELECT `serverId`, `type`, `id`, `channelId`, `permId`, `value`, `grant`, `flag_skip`, `flag_negate` FROM permissions ORDER BY `serverId`").query([&](StartupPermissionArgument* arg, int length, char** values, char** names) { auto key = permission::PermissionTypeEntry::unknown; - permission::PermissionValue value = 0, granted = 0; + permission::PermissionValue value = permNotGranted, granted = permNotGranted; permission::PermissionSqlType type = SQL_PERM_GROUP; bool negated = false, skipped = false; ChannelId channel = 0; diff --git a/shared b/shared index 8378521..cb73d9d 160000 --- a/shared +++ b/shared @@ -1 +1 @@ -Subproject commit 837852114f92d0f3acb94b5e0807dee265bf40e5 +Subproject commit cb73d9df3258eaf59e4799c9e54d5f865e891734