From 17b2e684a688cd883df41e20d9cd39cfbe8d7b20 Mon Sep 17 00:00:00 2001 From: DCCONSTRUCTIONS Date: Sun, 24 May 2026 10:28:07 +0300 Subject: [PATCH] Fix profile response scoping --- server/dev-server.mjs | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/server/dev-server.mjs b/server/dev-server.mjs index d5927ea..9226e0a 100644 --- a/server/dev-server.mjs +++ b/server/dev-server.mjs @@ -659,7 +659,12 @@ app.patch("/api/profile", requireSession, asyncRoute(async (req, res) => { const taskManagerProfile = await syncTaskManagerUserProfile(storeResult.user); publishControlPlaneEvent("profile.updated", [actor.id]); - res.json({ ...storeResult, provisioning: toProvisioningResponse(provisionedUser), taskManagerProfile }); + res.json({ + ...storeResult, + data: scopeSessionControlPlaneData(req, storeResult.data, actor.id), + provisioning: toProvisioningResponse(provisionedUser), + taskManagerProfile, + }); })); app.post("/api/profile/password", requireSession, asyncRoute(async (req, res) => { @@ -673,7 +678,7 @@ app.post("/api/profile/password", requireSession, asyncRoute(async (req, res) => const result = await controlPlaneStore.markUserAuthentikProvisioned(actor.id, provisionedUser, req.nodedcSession.user); publishControlPlaneEvent("profile.password.updated", [actor.id]); - res.json({ data: result.data, ok: true }); + res.json({ data: scopeSessionControlPlaneData(req, result.data, actor.id), ok: true }); })); app.get("/api/invites/:token", (req, res) => { @@ -815,15 +820,7 @@ app.get("/api/storage/data", requireSession, (req, res) => { return; } - const runtimeContext = getRuntimeSessionContext(req.nodedcSession); - const adminScope = resolveAdminScope(runtimeContext.user, runtimeContext.groups); - - if (adminScope.isRoot || adminScope.clientIds.size > 0) { - res.json(scopeControlPlaneData(snapshot.data, adminScope)); - return; - } - - res.json(scopeRuntimeControlPlaneData(snapshot.data, snapshot.actor.id)); + res.json(scopeSessionControlPlaneData(req, snapshot.data, snapshot.actor.id)); }); app.patch("/api/admin/settings", requireLauncherAdmin, requireRootLauncherAdmin, asyncRoute(async (req, res) => { @@ -3489,6 +3486,17 @@ function scopeAdminMutationResult(req, result) { }; } +function scopeSessionControlPlaneData(req, data, actorId) { + const runtimeContext = getRuntimeSessionContext(req.nodedcSession); + const adminScope = resolveAdminScope(runtimeContext.user, runtimeContext.groups); + + if (adminScope.isRoot || adminScope.clientIds.size > 0) { + return scopeControlPlaneData(data, adminScope); + } + + return scopeRuntimeControlPlaneData(data, actorId); +} + function scopeControlPlaneData(data, scope) { if (!scope || scope.isRoot) { return data;