From 1d0ad8f953c6b5dc7914ee3ac50e1d5b31c7d577 Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Tue, 3 Sep 2024 20:01:02 +0200 Subject: [PATCH 1/8] Fix bug in identity.js validation --- server/validations/identity.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/validations/identity.js b/server/validations/identity.js index e234398..a89844f 100644 --- a/server/validations/identity.js +++ b/server/validations/identity.js @@ -1,7 +1,7 @@ const Joi = require("joi"); module.exports.createIdentityValidation = Joi.object({ name: Joi.string().min(3).max(255).required(), - username: Joi.string().max(255).required(), + username: Joi.string().max(255).optional(), type: Joi.string().valid("password", "ssh").required(), password: Joi.string().optional(), sshKey: Joi.string().optional(), From d23fd064fffa4f8f1059d6f4db68be9e3d413226 Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Tue, 3 Sep 2024 20:01:10 +0200 Subject: [PATCH 2/8] Fix bug in ServerDialog.jsx --- .../components/ServerDialog/ServerDialog.jsx | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx b/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx index 7702674..be67118 100644 --- a/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx +++ b/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx @@ -27,6 +27,11 @@ export const ServerDialog = ({ open, onClose, currentFolderId, editServerId }) = const postIdentity = async (identity) => { try { console.log(identity); + + if (identity.username === "") identity.username = undefined; + if (identity.passphrase === "") identity.passphrase = undefined; + if (identity.password === "") identity.password = undefined; + const result = await putRequest("identities", { name: identity.name, username: identity.username, type: identity.authType, password: identity.password, sshKey: identity.sshKey, passphrase: identity.passphrase, @@ -42,6 +47,10 @@ export const ServerDialog = ({ open, onClose, currentFolderId, editServerId }) = const patchIdentity = async (identity) => { try { + if (identity.username === "") identity.username = undefined; + if (identity.passphrase === "") identity.passphrase = undefined; + if (identity.password === "") identity.password = undefined; + await patchRequest("identities/" + identity.id, { name: identity.name, username: identity.username, type: identity.authType, password: identity.password, sshKey: identity.sshKey, passphrase: identity.passphrase, @@ -66,7 +75,12 @@ export const ServerDialog = ({ open, onClose, currentFolderId, editServerId }) = const createServer = async () => { try { - const { id } = await updateIdentities(); + let id = null; + if (Object.keys(identityUpdates).length > 0) { + id = await updateIdentities(); + + if (!id) return; + } const result = await putRequest("servers", { name, icon: icon, ip, port, protocol: protocol, @@ -82,9 +96,10 @@ export const ServerDialog = ({ open, onClose, currentFolderId, editServerId }) = const patchServer = async () => { try { - await updateIdentities(); + const identity = await updateIdentities(); - await patchRequest("servers/" + editServerId, { name, icon: icon, ip, port, protocol: protocol }); + await patchRequest("servers/" + editServerId, { name, icon: icon, ip, port, protocol: protocol, + identities: identity.id ? [identity.id] : [] }); loadServers(); onClose(); From 5d4b1b97cfb9f5ea34793fe78c95e9d862f6d456 Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Tue, 3 Sep 2024 20:01:15 +0200 Subject: [PATCH 3/8] Fix bug in ProxmoxDialog.jsx --- .../pages/Servers/components/ProxmoxDialog/ProxmoxDialog.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/pages/Servers/components/ProxmoxDialog/ProxmoxDialog.jsx b/client/src/pages/Servers/components/ProxmoxDialog/ProxmoxDialog.jsx index 18deb54..a179694 100644 --- a/client/src/pages/Servers/components/ProxmoxDialog/ProxmoxDialog.jsx +++ b/client/src/pages/Servers/components/ProxmoxDialog/ProxmoxDialog.jsx @@ -37,7 +37,7 @@ export const ProxmoxDialog = ({ open, onClose, currentFolderId, editServerId }) } useEffect(() => { - if (editServerId) { + if (editServerId && open) { getRequest(`pve-servers/${editServerId.split("-")[1]}`).then(server => { setName(server.name); setIp(server.ip); From 4fb5a9867127b768f7202a437b275e795b366b6d Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Tue, 3 Sep 2024 20:01:33 +0200 Subject: [PATCH 4/8] Remove debug statement from ServerDialog.jsx --- .../src/pages/Servers/components/ServerDialog/ServerDialog.jsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx b/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx index be67118..b697896 100644 --- a/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx +++ b/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx @@ -26,8 +26,6 @@ export const ServerDialog = ({ open, onClose, currentFolderId, editServerId }) = const postIdentity = async (identity) => { try { - console.log(identity); - if (identity.username === "") identity.username = undefined; if (identity.passphrase === "") identity.passphrase = undefined; if (identity.password === "") identity.password = undefined; From 09b5d46c3553ea748c75c6ed018f7216a83e4c3e Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Tue, 3 Sep 2024 20:06:42 +0200 Subject: [PATCH 5/8] Fix bug in IconInput.jsx --- client/src/common/components/IconInput/IconInput.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/common/components/IconInput/IconInput.jsx b/client/src/common/components/IconInput/IconInput.jsx index 0727ec4..62b6d36 100644 --- a/client/src/common/components/IconInput/IconInput.jsx +++ b/client/src/common/components/IconInput/IconInput.jsx @@ -8,7 +8,7 @@ export const IconInput = ({ type, id, name, required, icon, placeholder, customC setValue(event.target.value)} /> + onBlur={onBlur} value={value} onChange={(event) => setValue ? setValue(event.target.value) : null} /> ); }; From 410c48cf7fd81c12aaa108be73c9e4920047b9ee Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Tue, 3 Sep 2024 20:10:34 +0200 Subject: [PATCH 6/8] Fix bug in ServerDialog.jsx --- .../pages/Servers/components/ServerDialog/ServerDialog.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx b/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx index b697896..0531a84 100644 --- a/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx +++ b/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx @@ -29,6 +29,7 @@ export const ServerDialog = ({ open, onClose, currentFolderId, editServerId }) = if (identity.username === "") identity.username = undefined; if (identity.passphrase === "") identity.passphrase = undefined; if (identity.password === "") identity.password = undefined; + if (identity.sshKey === null) identity.sshKey = undefined; const result = await putRequest("identities", { name: identity.name, username: identity.username, type: identity.authType, @@ -48,6 +49,7 @@ export const ServerDialog = ({ open, onClose, currentFolderId, editServerId }) = if (identity.username === "") identity.username = undefined; if (identity.passphrase === "") identity.passphrase = undefined; if (identity.password === "") identity.password = undefined; + if (identity.sshKey === null) identity.sshKey = undefined; await patchRequest("identities/" + identity.id, { name: identity.name, username: identity.username, type: identity.authType, @@ -97,7 +99,7 @@ export const ServerDialog = ({ open, onClose, currentFolderId, editServerId }) = const identity = await updateIdentities(); await patchRequest("servers/" + editServerId, { name, icon: icon, ip, port, protocol: protocol, - identities: identity.id ? [identity.id] : [] }); + identities: identity?.id ? [identity?.id] : undefined }); loadServers(); onClose(); From 2121cbc1bf4af511924c97413be41fc9eadaa9ee Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Tue, 3 Sep 2024 20:27:32 +0200 Subject: [PATCH 7/8] Allow null in identity username --- server/models/Identity.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/models/Identity.js b/server/models/Identity.js index 901d5c9..c2766d4 100644 --- a/server/models/Identity.js +++ b/server/models/Identity.js @@ -12,7 +12,7 @@ module.exports = db.define("identities", { }, username: { type: Sequelize.STRING, - allowNull: false, + allowNull: true, }, type: { type: Sequelize.STRING, From 52ca27079e672d8a93d0972f9e7154082b8fd80b Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Tue, 3 Sep 2024 20:27:51 +0200 Subject: [PATCH 8/8] Fix bug in ServerDialog.jsx --- .../components/ServerDialog/ServerDialog.jsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx b/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx index 0531a84..1b145bc 100644 --- a/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx +++ b/client/src/pages/Servers/components/ServerDialog/ServerDialog.jsx @@ -6,12 +6,14 @@ import Button from "@/common/components/Button"; import { getRequest, patchRequest, putRequest } from "@/common/utils/RequestUtil.js"; import { ServerContext } from "@/common/contexts/ServerContext.jsx"; import IdentityPage from "@/pages/Servers/components/ServerDialog/pages/IdentityPage.jsx"; +import { IdentityContext } from "@/common/contexts/IdentityContext.jsx"; const tabs = ["Details", "Identities", "Settings"]; export const ServerDialog = ({ open, onClose, currentFolderId, editServerId }) => { const { loadServers } = useContext(ServerContext); + const { loadIdentities } = useContext(IdentityContext); const [name, setName] = useState(""); const [icon, setIcon] = useState(null); @@ -38,6 +40,8 @@ export const ServerDialog = ({ open, onClose, currentFolderId, editServerId }) = if (result.id) setIdentityUpdates({}); + refreshIdentities(); + return result; } catch (error) { console.error(error); @@ -75,16 +79,18 @@ export const ServerDialog = ({ open, onClose, currentFolderId, editServerId }) = const createServer = async () => { try { - let id = null; + let identity = null; if (Object.keys(identityUpdates).length > 0) { - id = await updateIdentities(); + identity = await updateIdentities(); + + if (!identity) return; - if (!id) return; + loadIdentities(); } const result = await putRequest("servers", { name, icon: icon, ip, port, protocol: protocol, - folderId: currentFolderId, identities: id ? [id] : [], + folderId: currentFolderId, identities: identity?.id ? [identity?.id] : [], }); loadServers();