/* eslint-disable */ // @ts-nocheck import UserSessionRepresentation from "@keycloak/keycloak-admin-client/lib/defs/userSessionRepresentation"; import { KeycloakSelect } from "../../shared/keycloak-ui-shared"; import { DropdownItem, PageSection, SelectOption, } from "../../shared/@patternfly/react-core"; import { FilterIcon } from "../../shared/@patternfly/react-icons"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useAdminClient } from "../admin-client"; import { useAlerts } from "../../shared/keycloak-ui-shared"; import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog"; import { ViewHeader } from "../components/view-header/ViewHeader"; import { fetchAdminUI } from "../context/auth/admin-ui-endpoint"; import { useRealm } from "../context/realm-context/RealmContext"; import helpUrls from "../help-urls"; import useToggle from "../utils/useToggle"; import { RevocationModal } from "./RevocationModal"; import SessionsTable from "./SessionsTable"; import "./SessionsSection.css"; type FilterType = "ALL" | "REGULAR" | "OFFLINE"; type SessionFilterProps = { filterType: FilterType; onChange: (filterType: FilterType) => void; }; const SessionFilter = ({ filterType, onChange }: SessionFilterProps) => { const { t } = useTranslation(); const [open, toggle] = useToggle(); return ( } onSelect={(value) => { const filter = value as FilterType; onChange(filter); toggle(); }} selections={filterType} > {t("sessionsType.allSessions")} {t("sessionsType.regularSSO")} {t("sessionsType.offline")} ); }; export default function SessionsSection() { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const [key, setKey] = useState(0); const refresh = () => setKey(key + 1); const { addError } = useAlerts(); const { realm } = useRealm(); const [revocationModalOpen, setRevocationModalOpen] = useState(false); const [filterType, setFilterType] = useState("ALL"); const [noSessions, setNoSessions] = useState(false); const handleRevocationModalToggle = () => { setRevocationModalOpen(!revocationModalOpen); }; const loader = async (first?: number, max?: number, search?: string) => { const data = await fetchAdminUI( adminClient, "ui-ext/sessions", { first: `${first}`, max: `${max}`, type: filterType, search: search || "", }, ); setNoSessions(data.length === 0); return data; }; const [toggleLogoutDialog, LogoutConfirm] = useConfirmDialog({ titleKey: "logoutAllSessions", messageKey: "logoutAllDescription", continueButtonLabel: "confirm", onConfirm: async () => { try { await adminClient.realms.logoutAll({ realm }); refresh(); } catch (error) { addError("logoutAllSessionsError", error); } }, }); return ( <> handleRevocationModalToggle()} > {t("revocation")} , {t("signOutAllActiveSessions")} , ]} titleKey="titleSessions" subKey="sessionExplain" helpUrl={helpUrls.sessionsUrl} /> {revocationModalOpen && ( { handleRevocationModalToggle(); }} /> )} { setFilterType(type); refresh(); }} /> } /> ); }