diff --git a/lib/new-admin/graphql/schema.js b/lib/new-admin/graphql/schema.js
index a39eb05d..db678330 100644
--- a/lib/new-admin/graphql/schema.js
+++ b/lib/new-admin/graphql/schema.js
@@ -243,6 +243,7 @@ const typeDefs = gql`
saveConfig(config: JSONObject): JSONObject
createPairingTotem(name: String!): String
saveAccounts(accounts: JSONObject): JSONObject
+ revokeToken(token: String!): UserToken
}
`
@@ -293,7 +294,8 @@ const resolvers = {
.then(it => {
notify()
return it
- })
+ }),
+ revokeToken: (...[, { token }]) => tokenManager.revokeToken(token)
}
}
diff --git a/lib/token-manager.js b/lib/token-manager.js
index 74bde507..3c9a7cc5 100644
--- a/lib/token-manager.js
+++ b/lib/token-manager.js
@@ -1,8 +1,13 @@
const db = require('./db')
-function getTokenList() {
- const sql = `select * from user_tokens`
- return db.any(sql);
+function getTokenList () {
+ const sql = `select * from user_tokens`
+ return db.any(sql)
}
-module.exports = { getTokenList }
\ No newline at end of file
+function revokeToken (token) {
+ const sql = `delete from user_tokens where token = $1`
+ return db.none(sql, [token])
+}
+
+module.exports = { getTokenList, revokeToken }
\ No newline at end of file
diff --git a/new-lamassu-admin/src/pages/TokenManagement/TokenManagement.js b/new-lamassu-admin/src/pages/TokenManagement/TokenManagement.js
index 1ee83b29..c503a547 100644
--- a/new-lamassu-admin/src/pages/TokenManagement/TokenManagement.js
+++ b/new-lamassu-admin/src/pages/TokenManagement/TokenManagement.js
@@ -1,4 +1,4 @@
-import { useQuery } from '@apollo/react-hooks'
+import { useQuery, useMutation } from '@apollo/react-hooks'
import { makeStyles } from '@material-ui/core/styles'
import gql from 'graphql-tag'
import moment from 'moment'
@@ -6,15 +6,16 @@ import * as R from 'ramda'
import React from 'react'
import Title from 'src/components/Title'
-// import DataTable from 'src/components/tables/DataTable'
-import { Table as EditableTable } from 'src/components/editableTable'
+import { IconButton } from 'src/components/buttons'
+import DataTable from 'src/components/tables/DataTable'
+import { ReactComponent as DeleteIcon } from 'src/styling/icons/action/delete/enabled.svg'
import { mainStyles } from './TokenManagement.styles'
const useStyles = makeStyles(mainStyles)
const GET_USER_TOKENS = gql`
- {
+ query userTokens {
userTokens {
token
name
@@ -23,64 +24,72 @@ const GET_USER_TOKENS = gql`
}
`
+const REVOKE_USER_TOKEN = gql`
+ mutation revokeToken($token: String!) {
+ revokeToken(token: $token) {
+ token
+ }
+ }
+`
+
const Tokens = () => {
const classes = useStyles()
const { data: tknResponse } = useQuery(GET_USER_TOKENS)
+ const [revokeToken] = useMutation(REVOKE_USER_TOKEN, {
+ onCompleted: () => console.log('passed'),
+ onError: () => console.log('failed'),
+ refetchQueries: () => ['userTokens']
+ })
+
const elements = [
{
- name: 'name',
header: 'Name',
- width: 312,
+ width: 257,
textAlign: 'center',
- size: 'sm'
+ size: 'sm',
+ view: t => t.name
},
{
- name: 'token',
header: 'Token',
- width: 520,
+ width: 505,
textAlign: 'center',
- size: 'sm'
+ size: 'sm',
+ view: t => t.token
},
{
- name: 'created',
header: 'Date (UTC)',
- width: 140,
+ width: 145,
textAlign: 'right',
size: 'sm',
- view: t => moment.utc(t).format('YYYY-MM-DD')
+ view: t => moment.utc(t.created).format('YYYY-MM-DD')
},
{
- name: 'created',
header: 'Time (UTC)',
- width: 140,
+ width: 145,
textAlign: 'right',
size: 'sm',
- view: t => moment.utc(t).format('HH:mm:ss')
+ view: t => moment.utc(t.created).format('HH:mm:ss')
+ },
+ {
+ header: '',
+ width: 80,
+ textAlign: 'center',
+ size: 'sm',
+ view: t => (
+