diff --git a/dashboard/package-lock.json b/dashboard/package-lock.json index 58bbb5391..6a14b55e2 100644 --- a/dashboard/package-lock.json +++ b/dashboard/package-lock.json @@ -11,7 +11,7 @@ "@fontsource/inter": "^5.2.5", "@fontsource/noto-sans": "^5.2.6", "@fortawesome/fontawesome-free": "^6.7.2", - "@vitejs/plugin-vue": "^5.2.1", + "@vitejs/plugin-vue": "^5.2.3", "@xterm/addon-attach": "^0.11.0", "@xterm/addon-fit": "^0.10.0", "@xterm/xterm": "^5.5.0", @@ -25,7 +25,7 @@ "jquery": "^3.7.1", "marked": "^15.0.7", "moment-timezone": "^0.5.47", - "pankow": "^2.10.1", + "pankow": "^2.10.2", "pankow-viewers": "^1.0.11", "sass": "^1.85.1", "vite": "^6.2.2", @@ -1282,9 +1282,9 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@vitejs/plugin-vue": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", - "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz", + "integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==", "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" @@ -2351,9 +2351,9 @@ } }, "node_modules/pankow": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/pankow/-/pankow-2.10.1.tgz", - "integrity": "sha512-ePanPbreta20RFgVX3w1sZQqnjNqMzIOm2+T1utxwmc4LwoQYEVSZcKwgF1AXkPdZXwUw8cDX3j/GIcnts0Eyg==", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/pankow/-/pankow-2.10.2.tgz", + "integrity": "sha512-J0BkBajRhDjElVCQ+1AYxX9n07+ofwmmlPcCmkRkqd0N5xUmNFUnD74WM/6qXN625XU9rORCbCeuPX/IsB2uCA==", "license": "ISC", "dependencies": { "@fontsource/inter": "^5.2.5", @@ -3410,9 +3410,9 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "@vitejs/plugin-vue": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", - "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz", + "integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==", "requires": {} }, "@vue/compiler-core": { @@ -4155,9 +4155,9 @@ } }, "pankow": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/pankow/-/pankow-2.10.1.tgz", - "integrity": "sha512-ePanPbreta20RFgVX3w1sZQqnjNqMzIOm2+T1utxwmc4LwoQYEVSZcKwgF1AXkPdZXwUw8cDX3j/GIcnts0Eyg==", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/pankow/-/pankow-2.10.2.tgz", + "integrity": "sha512-J0BkBajRhDjElVCQ+1AYxX9n07+ofwmmlPcCmkRkqd0N5xUmNFUnD74WM/6qXN625XU9rORCbCeuPX/IsB2uCA==", "requires": { "@fontsource/inter": "^5.2.5", "@fortawesome/fontawesome-free": "^6.7.2", diff --git a/dashboard/package.json b/dashboard/package.json index 58ab810bb..f8254517b 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -12,7 +12,7 @@ "@fontsource/inter": "^5.2.5", "@fontsource/noto-sans": "^5.2.6", "@fortawesome/fontawesome-free": "^6.7.2", - "@vitejs/plugin-vue": "^5.2.1", + "@vitejs/plugin-vue": "^5.2.3", "@xterm/addon-attach": "^0.11.0", "@xterm/addon-fit": "^0.10.0", "@xterm/xterm": "^5.5.0", @@ -26,7 +26,7 @@ "jquery": "^3.7.1", "marked": "^15.0.7", "moment-timezone": "^0.5.47", - "pankow": "^2.10.1", + "pankow": "^2.10.2", "pankow-viewers": "^1.0.11", "sass": "^1.85.1", "vite": "^6.2.2", diff --git a/dashboard/src/components/GroupDialog.vue b/dashboard/src/components/GroupDialog.vue index 907e30c3d..3f300c5c9 100644 --- a/dashboard/src/components/GroupDialog.vue +++ b/dashboard/src/components/GroupDialog.vue @@ -29,14 +29,14 @@ async function onSubmit() { formError.value = ''; if (group.value) { - const [error] = await groupsModel.update(group.value.id, name.value, users.value.map(u => u.id), apps.value.map(u => u.id)); + const [error] = await groupsModel.update(group.value.id, name.value, users.value, apps.value); if (error) { formError.value = error.body ? error.body.message : 'Internal error'; busy.value = false; return console.error(error); } } else { - const [error] = await groupsModel.add(name.value, users.value.map(u => u.id), apps.value.map(u => u.id)); + const [error] = await groupsModel.add(name.value, users.value, apps.value); if (error) { formError.value = error.body ? error.body.message : 'Internal error'; busy.value = false; @@ -58,13 +58,13 @@ defineExpose({ if (error) return console.error(error); result.forEach(u => u.label = (u.username || u.email)); allUsers.value = result; - users.value = g ? g.userIds.map(id => { return result.find(u => u.id === id); }) : []; + users.value = g ? g.userIds : []; [error, result] = await appsModel.list(); if (error) return console.error(error); result.forEach(a => a.label = (a.label || a.fqdn)); allApps.value = result; - apps.value = g ? g.appIds.map(id => { return result.find(a => a.id === id); }) : []; + apps.value = g ? g.appIds : []; dialog.value.open(); } @@ -95,7 +95,7 @@ defineExpose({
{{ (user.username || user.email) }}
- +
diff --git a/dashboard/src/components/UserDialog.vue b/dashboard/src/components/UserDialog.vue index 8a4254623..97f3a9631 100644 --- a/dashboard/src/components/UserDialog.vue +++ b/dashboard/src/components/UserDialog.vue @@ -100,7 +100,7 @@ async function onSubmit() { return console.error(error); } - const [groupError] = await usersModel.setLocalGroups(userId, localGroups.value.map(g => g.id)); + const [groupError] = await usersModel.setLocalGroups(userId, localGroups.value); if (groupError) { busy.value = false; return console.error(error); @@ -137,8 +137,8 @@ defineExpose({ result.forEach(g => g.label = g.name); allGroups.value = result; allLocalGroups.value = result.filter(g => !g.source); - groups.value = u ? u.groupIds.map(id => { return result.find(g => g.id === id); }) : []; - localGroups.value = (u ? u.groupIds.map(id => { return result.find(g => g.id === id); }) : []).filter(g => !g.source); + groups.value = u ? u.groupIds : []; + localGroups.value = (u ? u.groupIds.filter(g => !g.source) : []); [error, result] = await profileModel.get(); if (error) return console.error(error); @@ -176,12 +176,12 @@ defineExpose({ - + - + @@ -206,10 +206,7 @@ defineExpose({ -
- - -
+