From 9751fd92a50e75385cffed0ca847d5076ba98c92 Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Mon, 24 Jun 2024 18:56:39 -0400 Subject: [PATCH] feat: add appdata permission (if applicable) on app share --- packages/backend/src/routers/share.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/backend/src/routers/share.js b/packages/backend/src/routers/share.js index a89e1b59c..f6c4900af 100644 --- a/packages/backend/src/routers/share.js +++ b/packages/backend/src/routers/share.js @@ -427,6 +427,12 @@ const v0_2 = async (req, res) => { : { id: { name: thing.name } } }); } + + app.metadata = db.case({ + mysql: () => app.metadata, + otherwise: () => JSON.parse(app.metadata ?? '{}') + })(); + item.app = app; } @@ -451,6 +457,21 @@ const v0_2 = async (req, res) => { ) } + // Process: conditionally add permission for AppData + for ( const item of shares_work.list() ) { + if ( item.type !== 'app' ) continue; + if ( ! item.app.metadata?.shared_appdata ) continue; + + const app_owner = await get_user({ id: item.app.owner_user_id }); + + const appdatadir = + `/${app_owner.username}/AppData/${item.app.uid}`; + const appdatadir_perm = + PermissionUtil.join('fs', appdatadir, 'write'); + + item.share_intent.permissions.push(appdatadir_perm); + } + shares_work.clear_invalid(); // Mark files as successful; further errors will be