From dc2f611257bd72b45e09ebb87c8cc5f2afdbcec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nuno=20G=C3=B3is?= Date: Mon, 10 Oct 2022 12:51:12 +0100 Subject: [PATCH] fix: PAT secret no longer returned (except new), use id instead (#2162) * fix: PAT secret no longer returned (except new), use id instead * fix types --- .../CreatePersonalAPIToken.tsx | 4 ++-- .../DeletePersonalAPIToken.tsx | 2 +- .../PersonalAPITokenDialog.tsx | 4 ++-- .../PersonalAPITokensTab/PersonalAPITokensTab.tsx | 13 ++++++++----- .../usePersonalAPITokensApi.ts | 7 ++++--- frontend/src/interfaces/personalAPIToken.ts | 4 ++++ 6 files changed, 21 insertions(+), 13 deletions(-) diff --git a/frontend/src/component/user/Profile/PersonalAPITokensTab/CreatePersonalAPIToken/CreatePersonalAPIToken.tsx b/frontend/src/component/user/Profile/PersonalAPITokensTab/CreatePersonalAPIToken/CreatePersonalAPIToken.tsx index 3ada8ef097..ff570cad1b 100644 --- a/frontend/src/component/user/Profile/PersonalAPITokensTab/CreatePersonalAPIToken/CreatePersonalAPIToken.tsx +++ b/frontend/src/component/user/Profile/PersonalAPITokensTab/CreatePersonalAPIToken/CreatePersonalAPIToken.tsx @@ -12,7 +12,7 @@ import SelectMenu from 'component/common/select'; import { formatDateYMD } from 'utils/formatDate'; import { useLocationSettings } from 'hooks/useLocationSettings'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; -import { IPersonalAPIToken } from 'interfaces/personalAPIToken'; +import { INewPersonalAPIToken } from 'interfaces/personalAPIToken'; const StyledForm = styled('form')(() => ({ display: 'flex', @@ -85,7 +85,7 @@ const expirationOptions = [ interface ICreatePersonalAPITokenProps { open: boolean; setOpen: React.Dispatch>; - newToken: (token: IPersonalAPIToken) => void; + newToken: (token: INewPersonalAPIToken) => void; } export const CreatePersonalAPIToken: FC = ({ diff --git a/frontend/src/component/user/Profile/PersonalAPITokensTab/DeletePersonalAPIToken/DeletePersonalAPIToken.tsx b/frontend/src/component/user/Profile/PersonalAPITokensTab/DeletePersonalAPIToken/DeletePersonalAPIToken.tsx index c5f0be86b7..eb452a4ac3 100644 --- a/frontend/src/component/user/Profile/PersonalAPITokensTab/DeletePersonalAPIToken/DeletePersonalAPIToken.tsx +++ b/frontend/src/component/user/Profile/PersonalAPITokensTab/DeletePersonalAPIToken/DeletePersonalAPIToken.tsx @@ -25,7 +25,7 @@ export const DeletePersonalAPIToken: FC = ({ const onRemoveClick = async () => { if (token) { try { - await deletePersonalAPIToken(token?.secret); + await deletePersonalAPIToken(token?.id); refetchTokens(); setOpen(false); setToastData({ diff --git a/frontend/src/component/user/Profile/PersonalAPITokensTab/PersonalAPITokenDialog/PersonalAPITokenDialog.tsx b/frontend/src/component/user/Profile/PersonalAPITokensTab/PersonalAPITokenDialog/PersonalAPITokenDialog.tsx index 468b4e3c15..01e1bc15b1 100644 --- a/frontend/src/component/user/Profile/PersonalAPITokensTab/PersonalAPITokenDialog/PersonalAPITokenDialog.tsx +++ b/frontend/src/component/user/Profile/PersonalAPITokensTab/PersonalAPITokenDialog/PersonalAPITokenDialog.tsx @@ -1,7 +1,7 @@ import { Alert, styled, Typography } from '@mui/material'; import { UserToken } from 'component/admin/apiToken/ConfirmToken/UserToken/UserToken'; import { Dialogue } from 'component/common/Dialogue/Dialogue'; -import { IPersonalAPIToken } from 'interfaces/personalAPIToken'; +import { INewPersonalAPIToken } from 'interfaces/personalAPIToken'; import { FC } from 'react'; const StyledAlert = styled(Alert)(({ theme }) => ({ @@ -11,7 +11,7 @@ const StyledAlert = styled(Alert)(({ theme }) => ({ interface IPersonalAPITokenDialogProps { open: boolean; setOpen: React.Dispatch>; - token?: IPersonalAPIToken; + token?: INewPersonalAPIToken; } export const PersonalAPITokenDialog: FC = ({ diff --git a/frontend/src/component/user/Profile/PersonalAPITokensTab/PersonalAPITokensTab.tsx b/frontend/src/component/user/Profile/PersonalAPITokensTab/PersonalAPITokensTab.tsx index 825420a40a..0d735c40ff 100644 --- a/frontend/src/component/user/Profile/PersonalAPITokensTab/PersonalAPITokensTab.tsx +++ b/frontend/src/component/user/Profile/PersonalAPITokensTab/PersonalAPITokensTab.tsx @@ -17,11 +17,13 @@ import { TablePlaceholder, VirtualizedTable } from 'component/common/Table'; import { ActionCell } from 'component/common/Table/cells/ActionCell/ActionCell'; import { DateCell } from 'component/common/Table/cells/DateCell/DateCell'; import { HighlightCell } from 'component/common/Table/cells/HighlightCell/HighlightCell'; -import { TimeAgoCell } from 'component/common/Table/cells/TimeAgoCell/TimeAgoCell'; import { SearchHighlightProvider } from 'component/common/Table/SearchHighlightContext/SearchHighlightContext'; import { usePersonalAPITokens } from 'hooks/api/getters/usePersonalAPITokens/usePersonalAPITokens'; import { useSearch } from 'hooks/useSearch'; -import { IPersonalAPIToken } from 'interfaces/personalAPIToken'; +import { + INewPersonalAPIToken, + IPersonalAPIToken, +} from 'interfaces/personalAPIToken'; import { IUser } from 'interfaces/user'; import { useEffect, useMemo, useState } from 'react'; import { useSearchParams } from 'react-router-dom'; @@ -99,6 +101,7 @@ export const PersonalAPITokensTab = ({ user }: IPersonalAPITokensTabProps) => { const [createOpen, setCreateOpen] = useState(false); const [dialogOpen, setDialogOpen] = useState(false); const [deleteOpen, setDeleteOpen] = useState(false); + const [newToken, setNewToken] = useState(); const [selectedToken, setSelectedToken] = useState(); const columns = useMemo( @@ -309,15 +312,15 @@ export const PersonalAPITokensTab = ({ user }: IPersonalAPITokensTabProps) => { { - setSelectedToken(token); + newToken={(token: INewPersonalAPIToken) => { + setNewToken(token); setDialogOpen(true); }} /> { const createPersonalAPIToken = async ( payload: ICreatePersonalApiTokenPayload - ) => { + ): Promise => { const req = createRequest('api/admin/user/tokens', { method: 'POST', body: JSON.stringify(payload), @@ -25,8 +26,8 @@ export const usePersonalAPITokensApi = () => { } }; - const deletePersonalAPIToken = async (secret: string) => { - const req = createRequest(`api/admin/user/tokens/${secret}`, { + const deletePersonalAPIToken = async (id: string) => { + const req = createRequest(`api/admin/user/tokens/${id}`, { method: 'DELETE', }); try { diff --git a/frontend/src/interfaces/personalAPIToken.ts b/frontend/src/interfaces/personalAPIToken.ts index e221d30faa..045c990d66 100644 --- a/frontend/src/interfaces/personalAPIToken.ts +++ b/frontend/src/interfaces/personalAPIToken.ts @@ -1,6 +1,10 @@ export interface IPersonalAPIToken { + id: string; description: string; expiresAt: string; createdAt: string; +} + +export interface INewPersonalAPIToken extends IPersonalAPIToken { secret: string; }