From 0dec24722d56cd5aefc6ea485f6554c766e93216 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nuno=20G=C3=B3is?= Date: Thu, 6 Jul 2023 12:19:48 +0100 Subject: [PATCH] fix: disallow deletion of all login history entries (#4159) https://linear.app/unleash/issue/2-1191/disallow-deletion-of-all-login-entries-in-history-ui Disallows deletion of all login history entries on the UI. ![image](https://github.com/Unleash/unleash/assets/14320932/f2378d61-0738-4614-b9c5-e81444e8dde1) --- .../LoginHistoryDeleteAllDialog.tsx | 28 ------------ .../LoginHistoryTable/LoginHistoryTable.tsx | 43 ++----------------- .../useLoginHistoryApi/useLoginHistoryApi.ts | 12 ------ 3 files changed, 3 insertions(+), 80 deletions(-) delete mode 100644 frontend/src/component/loginHistory/LoginHistoryTable/LoginHistoryDeleteAllDialog/LoginHistoryDeleteAllDialog.tsx diff --git a/frontend/src/component/loginHistory/LoginHistoryTable/LoginHistoryDeleteAllDialog/LoginHistoryDeleteAllDialog.tsx b/frontend/src/component/loginHistory/LoginHistoryTable/LoginHistoryDeleteAllDialog/LoginHistoryDeleteAllDialog.tsx deleted file mode 100644 index cfeb5b559b..0000000000 --- a/frontend/src/component/loginHistory/LoginHistoryTable/LoginHistoryDeleteAllDialog/LoginHistoryDeleteAllDialog.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { Dialogue } from 'component/common/Dialogue/Dialogue'; - -interface ILoginHistoryDeleteAllDialogProps { - open: boolean; - setOpen: React.Dispatch>; - onConfirm: () => void; -} - -export const LoginHistoryDeleteAllDialog = ({ - open, - setOpen, - onConfirm, -}: ILoginHistoryDeleteAllDialogProps) => ( - { - setOpen(false); - }} - > - You are about to clear the login history. -
- This will delete all the login events. -
-); diff --git a/frontend/src/component/loginHistory/LoginHistoryTable/LoginHistoryTable.tsx b/frontend/src/component/loginHistory/LoginHistoryTable/LoginHistoryTable.tsx index 14c30a0323..8994b7cd39 100644 --- a/frontend/src/component/loginHistory/LoginHistoryTable/LoginHistoryTable.tsx +++ b/frontend/src/component/loginHistory/LoginHistoryTable/LoginHistoryTable.tsx @@ -1,8 +1,6 @@ import { useEffect, useMemo, useState } from 'react'; import { TablePlaceholder, VirtualizedTable } from 'component/common/Table'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; -import useToast from 'hooks/useToast'; -import { formatUnknownError } from 'utils/formatUnknownError'; import { PageContent } from 'component/common/PageContent/PageContent'; import { PageHeader } from 'component/common/PageHeader/PageHeader'; import { IconButton, Tooltip, useMediaQuery } from '@mui/material'; @@ -23,8 +21,7 @@ import { useLoginHistoryApi } from 'hooks/api/actions/useLoginHistoryApi/useLogi import { formatDateYMDHMS } from 'utils/formatDate'; import { useSearchParams } from 'react-router-dom'; import { createLocalStorage } from 'utils/createLocalStorage'; -import { Delete, Download } from '@mui/icons-material'; -import { LoginHistoryDeleteAllDialog } from './LoginHistoryDeleteAllDialog/LoginHistoryDeleteAllDialog'; +import { Download } from '@mui/icons-material'; export type PageQueryType = Partial< Record<'sort' | 'order' | 'search', string> @@ -45,10 +42,8 @@ const AUTH_TYPE_LABEL: { [key: string]: string } = { }; export const LoginHistoryTable = () => { - const { setToastData, setToastApiError } = useToast(); - - const { events, loading, refetch } = useLoginHistory(); - const { removeAllEvents, downloadCSV } = useLoginHistoryApi(); + const { events, loading } = useLoginHistory(); + const { downloadCSV } = useLoginHistoryApi(); const [searchParams, setSearchParams] = useSearchParams(); const [initialState] = useState(() => ({ @@ -65,21 +60,6 @@ export const LoginHistoryTable = () => { })); const [searchValue, setSearchValue] = useState(initialState.globalFilter); - const [deleteAllOpen, setDeleteAllOpen] = useState(false); - - const onDeleteAllConfirm = async () => { - try { - await removeAllEvents(); - setToastData({ - title: `History has been cleared`, - type: 'success', - }); - refetch(); - setDeleteAllOpen(false); - } catch (error: unknown) { - setToastApiError(formatUnknownError(error)); - } - }; const isExtraSmallScreen = useMediaQuery(theme.breakpoints.down('sm')); const isSmallScreen = useMediaQuery(theme.breakpoints.down('md')); @@ -235,18 +215,6 @@ export const LoginHistoryTable = () => { - - - setDeleteAllOpen(true) - } - > - - - } /> @@ -294,11 +262,6 @@ export const LoginHistoryTable = () => { /> } /> - ); }; diff --git a/frontend/src/hooks/api/actions/useLoginHistoryApi/useLoginHistoryApi.ts b/frontend/src/hooks/api/actions/useLoginHistoryApi/useLoginHistoryApi.ts index 5f074590f0..edcbb3fe67 100644 --- a/frontend/src/hooks/api/actions/useLoginHistoryApi/useLoginHistoryApi.ts +++ b/frontend/src/hooks/api/actions/useLoginHistoryApi/useLoginHistoryApi.ts @@ -22,20 +22,8 @@ export const useLoginHistoryApi = () => { window.location.assign(url); }; - const removeAllEvents = async () => { - const requestId = 'removeAllEvents'; - const req = createRequest( - 'api/admin/logins', - { method: 'DELETE' }, - requestId - ); - - await makeRequest(req.caller, req.id); - }; - return { downloadCSV, - removeAllEvents, errors, loading, };