diff --git a/packages/api/.env b/packages/api/.env
index 17fb6acc1..c979d16f1 100644
--- a/packages/api/.env
+++ b/packages/api/.env
@@ -4,7 +4,7 @@ ALLOW_DBGATE_PRIVATE_CLOUD=1
DEVWEB=1
# PROD_DBGATE_CLOUD=1
# PROD_DBGATE_IDENTITY=1
-# LOCAL_DBGATE_CLOUD=1
+LOCAL_DBGATE_CLOUD=1
# LOCAL_DBGATE_IDENTITY=1
# CLOUD_UPGRADE_FILE=c:\test\upg\upgrade.zip
diff --git a/packages/api/src/controllers/cloud.js b/packages/api/src/controllers/cloud.js
index 890f438d4..8dae42c00 100644
--- a/packages/api/src/controllers/cloud.js
+++ b/packages/api/src/controllers/cloud.js
@@ -258,4 +258,22 @@ module.exports = {
await fs.writeFile(filePath, content);
return true;
},
+
+ folderUsers_meta: true,
+ async folderUsers({ folid }) {
+ const resp = await callCloudApiGet(`content-folders/users/${folid}`);
+ return resp;
+ },
+
+ setFolderUserRole_meta: true,
+ async setFolderUserRole({ folid, email, role }) {
+ const resp = await callCloudApiPost(`content-folders/set-user-role/${folid}`, { email, role });
+ return resp;
+ },
+
+ removeFolderUser_meta: true,
+ async removeFolderUser({ folid, email }) {
+ const resp = await callCloudApiPost(`content-folders/remove-user/${folid}`, { email });
+ return resp;
+ },
};
diff --git a/packages/web/src/buttons/FormStyledDropDownButton.svelte b/packages/web/src/buttons/FormStyledDropDownButton.svelte
new file mode 100644
index 000000000..e8588d2e2
--- /dev/null
+++ b/packages/web/src/buttons/FormStyledDropDownButton.svelte
@@ -0,0 +1,78 @@
+
+
+
+ {value}
+
+
+
+
diff --git a/packages/web/src/widgets/PrivateCloudWidget.svelte b/packages/web/src/widgets/PrivateCloudWidget.svelte
index 24b5c60de..7221ae32c 100644
--- a/packages/web/src/widgets/PrivateCloudWidget.svelte
+++ b/packages/web/src/widgets/PrivateCloudWidget.svelte
@@ -40,6 +40,7 @@
import runCommand from '../commands/runCommand';
import SaveFileModal from '../modals/SaveFileModal.svelte';
import newQuery from '../query/newQuery';
+ import ConfigureSharedFolderModal from '../modals/ConfigureSharedFolderModal.svelte';
let filter = '';
let domSqlObjectList = null;
@@ -201,41 +202,40 @@
});
};
- const handleCopyInviteLink = async role => {
- const { inviteToken } = await apiCall(`cloud/get-invite-token`, {
- folid: folder,
- role,
- });
- if (inviteToken) {
- const inviteLink = `dbgate://folder/v1/${inviteToken}?mode=${role}`;
- navigator.clipboard.writeText(inviteLink);
- showSnackbarInfo(`Invite link (${role}) copied to clipboard`);
- }
- };
-
return [
contentGroupMap[folder]?.role == 'admin' && [
{ text: 'Rename', onClick: handleRename },
{ text: 'Delete', onClick: handleDelete },
],
- contentGroupMap[folder]?.role == 'admin' &&
+ isProApp() &&
+ contentGroupMap[folder]?.role == 'admin' &&
!contentGroupMap[folder]?.isPrivate && {
- text: 'Copy invite link',
- submenu: [
- {
- text: 'Admin',
- onClick: () => handleCopyInviteLink('admin'),
- },
- {
- text: 'Write',
- onClick: () => handleCopyInviteLink('write'),
- },
- {
- text: 'Read',
- onClick: () => handleCopyInviteLink('read'),
- },
- ],
+ text: 'Administrate access',
+ onClick: () => {
+ showModal(ConfigureSharedFolderModal, {
+ folid: folder,
+ name: contentGroupMap[folder]?.name,
+ });
+ },
},
+ // contentGroupMap[folder]?.role == 'admin' &&
+ // !contentGroupMap[folder]?.isPrivate && {
+ // text: 'Copy invite link',
+ // submenu: [
+ // {
+ // text: 'Admin',
+ // onClick: () => handleCopyInviteLink('admin'),
+ // },
+ // {
+ // text: 'Write',
+ // onClick: () => handleCopyInviteLink('write'),
+ // },
+ // {
+ // text: 'Read',
+ // onClick: () => handleCopyInviteLink('read'),
+ // },
+ // ],
+ // },
];
}