keycloak-d4science-spi-parent/keycloak-d4science-theme/src/main/resources/theme/d4science/account/resources/assets/DeviceActivity-B-Fnxak0.js.map

1 line
17 KiB
Plaintext

{"version":3,"file":"DeviceActivity-B-Fnxak0.js","sources":["../../../../node_modules/.pnpm/@patternfly+react-icons@4.93.7_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-icons/dist/esm/icons/desktop-icon.js","../../../../node_modules/.pnpm/@patternfly+react-icons@4.93.7_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-icons/dist/esm/icons/mobile-alt-icon.js","../../../../node_modules/.pnpm/@patternfly+react-icons@4.93.7_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-icons/dist/esm/icons/sync-alt-icon.js","../../src/account-security/DeviceActivity.tsx"],"sourcesContent":["import { createIcon } from '../createIcon';\n\nexport const DesktopIconConfig = {\n name: 'DesktopIcon',\n height: 512,\n width: 576,\n svgPath: 'M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z',\n yOffset: 0,\n xOffset: 0,\n};\n\nexport const DesktopIcon = createIcon(DesktopIconConfig);\n\nexport default DesktopIcon;","import { createIcon } from '../createIcon';\n\nexport const MobileAltIconConfig = {\n name: 'MobileAltIcon',\n height: 512,\n width: 320,\n svgPath: 'M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z',\n yOffset: 0,\n xOffset: 0,\n};\n\nexport const MobileAltIcon = createIcon(MobileAltIconConfig);\n\nexport default MobileAltIcon;","import { createIcon } from '../createIcon';\n\nexport const SyncAltIconConfig = {\n name: 'SyncAltIcon',\n height: 512,\n width: 512,\n svgPath: 'M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z',\n yOffset: 0,\n xOffset: 0,\n};\n\nexport const SyncAltIcon = createIcon(SyncAltIconConfig);\n\nexport default SyncAltIcon;","import {\r\n Button,\r\n DataList,\r\n DataListContent,\r\n DataListItem,\r\n DataListItemRow,\r\n DescriptionList,\r\n DescriptionListDescription,\r\n DescriptionListGroup,\r\n DescriptionListTerm,\r\n Grid,\r\n GridItem,\r\n Label,\r\n Spinner,\r\n Split,\r\n SplitItem,\r\n Title,\r\n} from \"@patternfly/react-core\";\r\nimport {\r\n DesktopIcon,\r\n MobileAltIcon,\r\n SyncAltIcon,\r\n} from \"@patternfly/react-icons\";\r\nimport { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { ContinueCancelModal, useAlerts } from \"ui-shared\";\r\nimport { deleteSession, getDevices } from \"../api/methods\";\r\nimport {\r\n ClientRepresentation,\r\n DeviceRepresentation,\r\n SessionRepresentation,\r\n} from \"../api/representations\";\r\nimport { Page } from \"../components/page/Page\";\r\nimport { TFuncKey } from \"../i18n\";\r\nimport { useEnvironment } from \"../root/KeycloakContext\";\r\nimport { formatDate } from \"../utils/formatDate\";\r\nimport { usePromise } from \"../utils/usePromise\";\r\n\r\nexport const DeviceActivity = () => {\r\n const { t } = useTranslation();\r\n const context = useEnvironment();\r\n const { addAlert, addError } = useAlerts();\r\n\r\n const [devices, setDevices] = useState<DeviceRepresentation[]>();\r\n const [key, setKey] = useState(0);\r\n const refresh = () => setKey(key + 1);\r\n\r\n const moveCurrentToTop = (devices: DeviceRepresentation[]) => {\r\n let currentDevice = devices[0];\r\n\r\n const index = devices.findIndex((d) => d.current);\r\n currentDevice = devices.splice(index, 1)[0];\r\n devices.unshift(currentDevice);\r\n\r\n const sessionIndex = currentDevice.sessions.findIndex((s) => s.current);\r\n const currentSession = currentDevice.sessions.splice(sessionIndex, 1)[0];\r\n currentDevice.sessions.unshift(currentSession);\r\n\r\n setDevices(devices);\r\n };\r\n\r\n usePromise((signal) => getDevices({ signal, context }), moveCurrentToTop, [\r\n key,\r\n ]);\r\n\r\n const signOutAll = async () => {\r\n await deleteSession(context);\r\n context.keycloak.logout();\r\n };\r\n\r\n const signOutSession = async (\r\n session: SessionRepresentation,\r\n device: DeviceRepresentation,\r\n ) => {\r\n try {\r\n await deleteSession(context, session.id);\r\n addAlert(\r\n t(\"signedOutSession\", { browser: session.browser, os: device.os }),\r\n );\r\n refresh();\r\n } catch (error) {\r\n addError(t(\"errorSignOutMessage\", { error }).toString());\r\n }\r\n };\r\n\r\n const makeClientsString = (clients: ClientRepresentation[]): string => {\r\n let clientsString = \"\";\r\n clients.forEach((client, index) => {\r\n let clientName: string;\r\n if (client.clientName !== \"\") {\r\n clientName = t(client.clientName as TFuncKey);\r\n } else {\r\n clientName = client.clientId;\r\n }\r\n\r\n clientsString += clientName;\r\n\r\n if (clients.length > index + 1) clientsString += \", \";\r\n });\r\n\r\n return clientsString;\r\n };\r\n\r\n if (!devices) {\r\n return <Spinner />;\r\n }\r\n\r\n return (\r\n <Page\r\n title={t(\"deviceActivity\")}\r\n description={t(\"signedInDevicesExplanation\")}\r\n >\r\n <Split hasGutter className=\"pf-u-mb-lg\">\r\n <SplitItem isFilled>\r\n <Title headingLevel=\"h2\" size=\"xl\">\r\n {t(\"signedInDevices\")}\r\n </Title>\r\n </SplitItem>\r\n <SplitItem>\r\n <Button\r\n id=\"refresh-page\"\r\n variant=\"link\"\r\n onClick={() => refresh()}\r\n icon={<SyncAltIcon />}\r\n >\r\n {t(\"refreshPage\")}\r\n </Button>\r\n\r\n {(devices.length > 1 || devices[0].sessions.length > 1) && (\r\n <ContinueCancelModal\r\n buttonTitle={t(\"signOutAllDevices\")}\r\n modalTitle={t(\"signOutAllDevices\")}\r\n continueLabel={t(\"confirm\")}\r\n cancelLabel={t(\"cancel\")}\r\n onContinue={() => signOutAll()}\r\n >\r\n {t(\"signOutAllDevicesWarning\")}\r\n </ContinueCancelModal>\r\n )}\r\n </SplitItem>\r\n </Split>\r\n <DataList\r\n className=\"signed-in-device-list\"\r\n aria-label={t(\"signedInDevices\")}\r\n >\r\n <DataListItem aria-labelledby={`sessions-${key}`}>\r\n {devices.map((device) =>\r\n device.sessions.map((session, index) => (\r\n <DataListItemRow key={device.id} data-testid={`row-${index}`}>\r\n <DataListContent\r\n aria-label=\"device-sessions-content\"\r\n className=\"pf-u-flex-grow-1\"\r\n >\r\n <Grid hasGutter>\r\n <GridItem span={1} rowSpan={2}>\r\n {device.mobile ? <MobileAltIcon /> : <DesktopIcon />}\r\n </GridItem>\r\n <GridItem sm={8} md={9} span={10}>\r\n <span className=\"pf-u-mr-md session-title\">\r\n {device.os.toLowerCase().includes(\"unknown\")\r\n ? t(\"unknownOperatingSystem\")\r\n : device.os}{\" \"}\r\n {!device.osVersion.toLowerCase().includes(\"unknown\") &&\r\n device.osVersion}{\" \"}\r\n / {session.browser}\r\n </span>\r\n {session.current && (\r\n <Label color=\"green\">{t(\"currentSession\")}</Label>\r\n )}\r\n </GridItem>\r\n <GridItem\r\n className=\"pf-u-text-align-right\"\r\n sm={3}\r\n md={2}\r\n span={1}\r\n >\r\n {!session.current && (\r\n <ContinueCancelModal\r\n buttonTitle={t(\"signOut\")}\r\n modalTitle={t(\"signOut\")}\r\n continueLabel={t(\"confirm\")}\r\n cancelLabel={t(\"cancel\")}\r\n buttonVariant=\"secondary\"\r\n onContinue={() => signOutSession(session, device)}\r\n >\r\n {t(\"signOutWarning\")}\r\n </ContinueCancelModal>\r\n )}\r\n </GridItem>\r\n <GridItem span={11}>\r\n <DescriptionList\r\n className=\"signed-in-device-grid\"\r\n columnModifier={{ sm: \"2Col\", lg: \"3Col\" }}\r\n cols={5}\r\n rows={1}\r\n >\r\n <DescriptionListGroup>\r\n <DescriptionListTerm>\r\n {t(\"ipAddress\")}\r\n </DescriptionListTerm>\r\n <DescriptionListDescription>\r\n {session.ipAddress}\r\n </DescriptionListDescription>\r\n </DescriptionListGroup>\r\n <DescriptionListGroup>\r\n <DescriptionListTerm>\r\n {t(\"lastAccessedOn\")}\r\n </DescriptionListTerm>\r\n <DescriptionListDescription>\r\n {formatDate(new Date(session.lastAccess * 1000))}\r\n </DescriptionListDescription>\r\n </DescriptionListGroup>\r\n <DescriptionListGroup>\r\n <DescriptionListTerm>\r\n {t(\"clients\")}\r\n </DescriptionListTerm>\r\n <DescriptionListDescription>\r\n {makeClientsString(session.clients)}\r\n </DescriptionListDescription>\r\n </DescriptionListGroup>\r\n <DescriptionListGroup>\r\n <DescriptionListTerm>\r\n {t(\"started\")}\r\n </DescriptionListTerm>\r\n <DescriptionListDescription>\r\n {formatDate(new Date(session.started * 1000))}\r\n </DescriptionListDescription>\r\n </DescriptionListGroup>\r\n <DescriptionListGroup>\r\n <DescriptionListTerm>\r\n {t(\"expires\")}\r\n </DescriptionListTerm>\r\n <DescriptionListDescription>\r\n {formatDate(new Date(session.expires * 1000))}\r\n </DescriptionListDescription>\r\n </DescriptionListGroup>\r\n </DescriptionList>\r\n </GridItem>\r\n </Grid>\r\n </DataListContent>\r\n </DataListItemRow>\r\n )),\r\n )}\r\n </DataListItem>\r\n </DataList>\r\n </Page>\r\n );\r\n};\r\n\r\nexport default DeviceActivity;\r\n"],"names":["DesktopIconConfig","DesktopIcon","createIcon","MobileAltIconConfig","MobileAltIcon","SyncAltIconConfig","SyncAltIcon","DeviceActivity","t","useTranslation","context","useEnvironment","addAlert","addError","useAlerts","devices","setDevices","useState","key","setKey","refresh","usePromise","signal","getDevices","currentDevice","index","d","sessionIndex","s","currentSession","signOutAll","deleteSession","signOutSession","session","device","error","makeClientsString","clients","clientsString","client","clientName","jsxs","Page","Split","jsx","SplitItem","Title","Button","ContinueCancelModal","DataList","DataListItem","DataListItemRow","DataListContent","Grid","GridItem","Label","DescriptionList","DescriptionListGroup","DescriptionListTerm","DescriptionListDescription","formatDate","Spinner"],"mappings":"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","x_google_ignoreList":[0,1,2]}