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();