|
|
@@ -1140,6 +1140,17 @@ auto HttpServer::IsSuperadmin(const AuthUser& user) -> bool {
|
|
|
return std::find(user.groups.begin(), user.groups.end(), "superadmin") != user.groups.end();
|
|
|
}
|
|
|
|
|
|
+auto HttpServer::ResolveUserName(const std::string& user_id) -> std::string {
|
|
|
+ if (user_id.empty() || !userService_) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ auto result = userService_->GetUser(user_id, true);
|
|
|
+ if (result.success && result.user) {
|
|
|
+ return result.user->name;
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+}
|
|
|
+
|
|
|
void HttpServer::HandleCreateUser(const httplib::Request& req, httplib::Response& res) {
|
|
|
// Authenticate the request
|
|
|
auto auth_user = AuthenticateRequest(req);
|
|
|
@@ -1265,14 +1276,19 @@ void HttpServer::HandleListUsers(const httplib::Request& req, httplib::Response&
|
|
|
// Build response
|
|
|
nlohmann::json users_array = nlohmann::json::array();
|
|
|
for (const auto& user : result.users) {
|
|
|
- users_array.push_back({
|
|
|
+ nlohmann::json user_obj = {
|
|
|
{"id", user.id},
|
|
|
{"email", user.email},
|
|
|
{"name", user.name},
|
|
|
{"created_at", user.created_at},
|
|
|
{"updated_at", user.updated_at},
|
|
|
- {"deleted_at", user.deleted_at}
|
|
|
- });
|
|
|
+ {"deleted_at", user.deleted_at},
|
|
|
+ {"created_by", user.created_by},
|
|
|
+ {"updated_by", user.updated_by},
|
|
|
+ {"created_by_name", ResolveUserName(user.created_by)},
|
|
|
+ {"updated_by_name", ResolveUserName(user.updated_by)}
|
|
|
+ };
|
|
|
+ users_array.push_back(user_obj);
|
|
|
}
|
|
|
|
|
|
nlohmann::json response = {
|
|
|
@@ -1621,7 +1637,11 @@ void HttpServer::HandleListWorkspaces(const httplib::Request& req, httplib::Resp
|
|
|
{"name", workspace.name},
|
|
|
{"settings", workspace.settings},
|
|
|
{"created_at", workspace.created_at},
|
|
|
- {"updated_at", workspace.updated_at}
|
|
|
+ {"updated_at", workspace.updated_at},
|
|
|
+ {"created_by", workspace.created_by},
|
|
|
+ {"updated_by", workspace.updated_by},
|
|
|
+ {"created_by_name", ResolveUserName(workspace.created_by)},
|
|
|
+ {"updated_by_name", ResolveUserName(workspace.updated_by)}
|
|
|
};
|
|
|
if (IsSuperadmin(*auth_user)) {
|
|
|
ws_json["deleted_at"] = workspace.deleted_at;
|
|
|
@@ -2006,7 +2026,11 @@ void HttpServer::HandleListGroups(const httplib::Request& req, httplib::Response
|
|
|
{"parent_group_id", group.parent_group_id},
|
|
|
{"created_at", group.created_at},
|
|
|
{"updated_at", group.updated_at},
|
|
|
- {"deleted_at", group.deleted_at}
|
|
|
+ {"deleted_at", group.deleted_at},
|
|
|
+ {"created_by", group.created_by},
|
|
|
+ {"updated_by", group.updated_by},
|
|
|
+ {"created_by_name", ResolveUserName(group.created_by)},
|
|
|
+ {"updated_by_name", ResolveUserName(group.updated_by)}
|
|
|
};
|
|
|
groups_array.push_back(grp_json);
|
|
|
}
|
|
|
@@ -2022,7 +2046,11 @@ void HttpServer::HandleListGroups(const httplib::Request& req, httplib::Response
|
|
|
{"is_system", group.is_system},
|
|
|
{"parent_group_id", group.parent_group_id},
|
|
|
{"created_at", group.created_at},
|
|
|
- {"updated_at", group.updated_at}
|
|
|
+ {"updated_at", group.updated_at},
|
|
|
+ {"created_by", group.created_by},
|
|
|
+ {"updated_by", group.updated_by},
|
|
|
+ {"created_by_name", ResolveUserName(group.created_by)},
|
|
|
+ {"updated_by_name", ResolveUserName(group.updated_by)}
|
|
|
};
|
|
|
if (IsSuperadmin(*auth_user)) {
|
|
|
grp_json["deleted_at"] = group.deleted_at;
|
|
|
@@ -3116,6 +3144,10 @@ void HttpServer::HandleListCollections(const httplib::Request& req, httplib::Res
|
|
|
{"created_at", coll.created_at},
|
|
|
{"updated_at", coll.updated_at},
|
|
|
{"is_system", is_system},
|
|
|
+ {"created_by", coll.created_by},
|
|
|
+ {"updated_by", coll.updated_by},
|
|
|
+ {"created_by_name", ResolveUserName(coll.created_by)},
|
|
|
+ {"updated_by_name", ResolveUserName(coll.updated_by)},
|
|
|
{"settings", {
|
|
|
{"schema", coll.settings.schema},
|
|
|
{"encrypted_fields", coll.settings.encrypted_fields},
|
|
|
@@ -3138,6 +3170,10 @@ void HttpServer::HandleListCollections(const httplib::Request& req, httplib::Res
|
|
|
{"created_at", coll.created_at},
|
|
|
{"updated_at", coll.updated_at},
|
|
|
{"is_system", true},
|
|
|
+ {"created_by", coll.created_by},
|
|
|
+ {"updated_by", coll.updated_by},
|
|
|
+ {"created_by_name", ResolveUserName(coll.created_by)},
|
|
|
+ {"updated_by_name", ResolveUserName(coll.updated_by)},
|
|
|
{"settings", nlohmann::json::object()}
|
|
|
};
|
|
|
collections_array.push_back(coll_json);
|