diff --git a/server/src/lib/paloalto.js b/server/src/lib/paloalto.js index 2af4729..ed6ae50 100644 --- a/server/src/lib/paloalto.js +++ b/server/src/lib/paloalto.js @@ -127,7 +127,7 @@ function decryptKey(encryptedKey) { return AES.decrypt(encryptedKey, process.env.CRYPT_SECRET).toString(enc.Utf8) } -async function addHost({ cidr, user, password, description, note }) { +async function addHost({ cidr, user, password, description, note, owner }) { if (!CIDR_RE.test(cidr)) throw new Error('Este não é um CIDR válido') const ipAddr = cidr.split('/')[0] @@ -152,7 +152,12 @@ async function addHost({ cidr, user, password, description, note }) { encryptedKey, user, description, - note + note, + owner: { + connect: { + sAMAccountName: owner.sAMAccountName + } + } } const host = id diff --git a/server/src/resolvers/Mutation/index.js b/server/src/resolvers/Mutation/index.js index cfe30b5..95dcd5d 100644 --- a/server/src/resolvers/Mutation/index.js +++ b/server/src/resolvers/Mutation/index.js @@ -53,7 +53,14 @@ const Mutation = { { data: { cidr, user, password, description, note } }, { auth } ) { - const host = await addHost({ cidr, user, password, description, note }) + const host = await addHost({ + cidr, + user, + password, + description, + note, + owner: auth + }) if (host) logSuccess({ @@ -64,7 +71,12 @@ const Mutation = { return host }, - async delPAHost(_, { id }) { + async delPAHost(_, { id }, { auth }) { + const host = await prisma.pAHost.findUnique({ where: { id } }) + + if (host.ownerId != auth.id) + throw new Error('Você não pode apagar o host de outro usuário') + return prisma.pAHost.delete({ where: { id } }) } } diff --git a/server/src/resolvers/PAHost.js b/server/src/resolvers/PAHost.js index dfd4fde..1dd3490 100644 --- a/server/src/resolvers/PAHost.js +++ b/server/src/resolvers/PAHost.js @@ -1,7 +1,9 @@ import { decryptKey } from '../lib/paloalto' +import prisma from '../prisma' const PAHost = { - key: parent => `${decryptKey(parent.encryptedKey).slice(0, 5)}*****` + key: parent => `${decryptKey(parent.encryptedKey).slice(0, 5)}*****`, + owner: parent => prisma.user.findUnique({ where: { id: parent.ownerId } }) } export { PAHost } diff --git a/server/src/typeDefs.js b/server/src/typeDefs.js index 529a681..32567b5 100644 --- a/server/src/typeDefs.js +++ b/server/src/typeDefs.js @@ -275,6 +275,8 @@ const typeDefs = gql` note: String "The API key owner" user: String + "The user who added the host" + owner: User! createdAt: String updatedAt: String diff --git a/web/src/views/SystemAdministration/PaloAlto.vue b/web/src/views/SystemAdministration/PaloAlto.vue index 5e8eaa0..43927df 100644 --- a/web/src/views/SystemAdministration/PaloAlto.vue +++ b/web/src/views/SystemAdministration/PaloAlto.vue @@ -57,12 +57,17 @@ {{ pAHost.note || 'Sem observações' }} + + Adicionado por: {{ pAHost.owner.displayName }} - +