From 2ed0721af3c2b4b9545306b616d59d7757f4b680 Mon Sep 17 00:00:00 2001 From: WolverinDEV Date: Sun, 22 Sep 2019 12:46:14 +0200 Subject: [PATCH 1/3] Fixed permission switch mistake --- server/src/DatabaseHelper.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/DatabaseHelper.cpp b/server/src/DatabaseHelper.cpp index 77026eb..0da88a8 100644 --- a/server/src/DatabaseHelper.cpp +++ b/server/src/DatabaseHelper.cpp @@ -288,9 +288,9 @@ inline sql::result load_permissions_v2(const std::shared_ptr& server, } if(!resolve_channel || !channel) - manager->load_permission(key, {value, granted}, negated, skipped, value != permNotGranted, granted != permNotGranted); + manager->load_permission(key, {value, granted}, skipped, negated, value != permNotGranted, granted != permNotGranted); else - manager->load_permission(key, {value, granted}, channel->channelId(), negated, skipped, value != permNotGranted, granted != permNotGranted); + manager->load_permission(key, {value, granted}, channel->channelId(), skipped, negated, value != permNotGranted, granted != permNotGranted); return 0; }); From dab4c402099818d97ede4bed6b7acec7c5ebce25 Mon Sep 17 00:00:00 2001 From: WolverinDEV Date: Sun, 22 Sep 2019 13:17:33 +0200 Subject: [PATCH 2/3] Fixed permission switch #2 --- server/src/DatabaseHelper.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/src/DatabaseHelper.cpp b/server/src/DatabaseHelper.cpp index 0da88a8..bfa3c1d 100644 --- a/server/src/DatabaseHelper.cpp +++ b/server/src/DatabaseHelper.cpp @@ -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; @@ -423,7 +423,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; @@ -568,7 +568,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; From 7ec9b988831154fae177baee225154b656115fe6 Mon Sep 17 00:00:00 2001 From: WolverinDEV Date: Sun, 22 Sep 2019 14:07:24 +0200 Subject: [PATCH 3/3] Fixed another issue --- server/src/DatabaseHelper.cpp | 30 ++++++++++++++++++------------ shared | 2 +- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/server/src/DatabaseHelper.cpp b/server/src/DatabaseHelper.cpp index bfa3c1d..f7a6aab 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; @@ -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"}); @@ -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"}); @@ -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"}); @@ -1180,7 +1186,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 4a9d8f1..cb73d9d 160000 --- a/shared +++ b/shared @@ -1 +1 @@ -Subproject commit 4a9d8f132fe9ca3411e2e3c245922ad778c56aa0 +Subproject commit cb73d9df3258eaf59e4799c9e54d5f865e891734