From 8831d676d4cb48e51c52ca2b799cee988c3dfdf0 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sat, 6 Dec 2025 23:44:07 +0300 Subject: [PATCH] feat: project permissions loading --- src/devtools/Project.cpp | 15 +++++++++++++++ src/devtools/Project.hpp | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/devtools/Project.cpp b/src/devtools/Project.cpp index 61e99c6a..f05b4a2d 100644 --- a/src/devtools/Project.cpp +++ b/src/devtools/Project.cpp @@ -11,10 +11,15 @@ static debug::Logger logger("project"); Project::~Project() = default; dv::value Project::serialize() const { + auto permissionsList = dv::list(); + for (const auto& perm : permissions) { + permissionsList.add(perm); + } return dv::object({ {"name", name}, {"title", title}, {"base_packs", dv::to_value(basePacks)}, + {"permissions", std::move(permissionsList)} }); } @@ -22,6 +27,16 @@ void Project::deserialize(const dv::value& src) { src.at("name").get(name); src.at("title").get(title); dv::get(src, "base_packs", basePacks); + + if (src.has("permissions")) { + std::vector perms; + dv::get(src, "permissions", perms); + permissions = std::set(perms.begin(), perms.end()); + } + logger.info() << "permissions: "; + for (const auto& perm : permissions) { + logger.info() << " - " << perm; + } } void Project::loadProjectClientScript() { diff --git a/src/devtools/Project.hpp b/src/devtools/Project.hpp index f0851b30..c0646181 100644 --- a/src/devtools/Project.hpp +++ b/src/devtools/Project.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -17,6 +18,7 @@ struct Project : Serializable { std::vector basePacks; std::unique_ptr clientScript; std::unique_ptr setupCoroutine; + std::set permissions; ~Project();