diff --git a/server/src/resolvers/Log.js b/server/src/resolvers/Log.js new file mode 100644 index 0000000..745321d --- /dev/null +++ b/server/src/resolvers/Log.js @@ -0,0 +1,7 @@ +const Log = { + tags: _ => `[${_.tags.join(', ')}]`, + data: _ => JSON.stringify(_.data), + timestamp: _ => _.timestamp?.toISOString() +} + +export { Log } diff --git a/server/src/resolvers/Query.js b/server/src/resolvers/Query.js index 51df672..98e13f6 100755 --- a/server/src/resolvers/Query.js +++ b/server/src/resolvers/Query.js @@ -146,16 +146,10 @@ const Query = { }, async logs() { - const logs = await prisma.log.findMany({ + return await prisma.log.findMany({ orderBy: { timestamp: 'desc' }, take: 500 }) - - return logs.map(log => ({ - ...log, - tags: `[${log.tags.join(', ')}]`, - data: JSON.stringify(log.data) - })) } } diff --git a/server/src/resolvers/index.js b/server/src/resolvers/index.js index e84437f..bb90c3a 100755 --- a/server/src/resolvers/index.js +++ b/server/src/resolvers/index.js @@ -8,6 +8,7 @@ import { Group } from './Group' import { ResetToken } from './ResetToken' import { WifiDevice } from './WifiDevice' import { Stats } from './Stats' +import { Log } from './Log' const resolvers = { Query, @@ -18,7 +19,8 @@ const resolvers = { Group, ResetToken, WifiDevice, - Stats + Stats, + Log } export { resolvers } diff --git a/web/src/mixins/Nav.js b/web/src/mixins/Nav.js index f8fd7dc..155c17e 100644 --- a/web/src/mixins/Nav.js +++ b/web/src/mixins/Nav.js @@ -79,7 +79,14 @@ export default { }, { groupTitle: 'Sistema', + items: [ + { + title: 'Logs', + icon: 'mdi-clipboard-text-search', + route: { name: 'logs' }, + role: 'superAdmin' + }, { title: 'AdministraĆ§Ć£o', icon: 'mdi-shield-account', diff --git a/web/src/router/index.js b/web/src/router/index.js index 112e5cb..35295f7 100755 --- a/web/src/router/index.js +++ b/web/src/router/index.js @@ -177,6 +177,16 @@ const routes = [ import(/* webpackChunkName: "wifi-users" */ '../views/WifiUsers.vue') }, + { + path: '/logs', + name: 'logs', + meta: { + title: 'Logs', + superAdmin: true + }, + component: () => import(/* webpackChunkName: "logs" */ '../views/Logs.vue') + }, + { path: '/system-administration', name: 'system-administration', diff --git a/web/src/views/Logs.vue b/web/src/views/Logs.vue new file mode 100644 index 0000000..0ccf509 --- /dev/null +++ b/web/src/views/Logs.vue @@ -0,0 +1,72 @@ + + + + +