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 }}
-
+
mdi-trash-can
@@ -129,6 +134,11 @@ const PAHOSTS_QUERY = gql`
user
createdAt
updatedAt
+ owner {
+ id
+ sAMAccountName
+ displayName
+ }
}
}
`
@@ -159,7 +169,14 @@ export default {
addDialog: false
}),
apollo: {
- pAHosts: { query: PAHOSTS_QUERY, fetchPolicy: 'network-only' }
+ pAHosts: { query: PAHOSTS_QUERY, fetchPolicy: 'network-only' },
+ me: gql`
+ {
+ me {
+ sAMAccountName
+ }
+ }
+ `
},
methods: {
async delHost(id) {