⚝
One Hat Cyber Team
⚝
Your IP:
216.73.217.4
Server IP:
41.128.143.86
Server:
Linux host.raqmix.cloud 6.8.0-1025-azure #30~22.04.1-Ubuntu SMP Wed Mar 12 15:28:20 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.3.23
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
api-keys
/
View File Name :
ApiKeysTable.tsx
import { css } from '@emotion/css'; import React from 'react'; import { dateTimeFormat, GrafanaTheme2, TimeZone } from '@grafana/data'; import { Button, DeleteButton, HorizontalGroup, Icon, Tooltip, useTheme2 } from '@grafana/ui'; import { contextSrv } from 'app/core/core'; import { AccessControlAction } from 'app/types'; import { ApiKey } from '../../types'; interface Props { apiKeys: ApiKey[]; timeZone: TimeZone; onDelete: (apiKey: ApiKey) => void; onMigrate: (apiKey: ApiKey) => void; } export const ApiKeysTable = ({ apiKeys, timeZone, onDelete, onMigrate }: Props) => { const theme = useTheme2(); const styles = getStyles(theme); return (
Name
Role
Expires
Last used at
{apiKeys.length > 0 ? (
{apiKeys.map((key) => { const isExpired = Boolean(key.expiration && Date.now() > new Date(key.expiration).getTime()); return (
{key.name}
{key.role}
{formatDate(key.expiration, timeZone)} {isExpired && (
)}
{formatLastUsedAtDate(timeZone, key.lastUsedAt)}
onMigrate(key)}> Migrate to service account
onDelete(key)} disabled={!contextSrv.hasPermissionInMetadata(AccessControlAction.ActionAPIKeysDelete, key)} />
); })}
) : null}
); }; function formatLastUsedAtDate(timeZone: TimeZone, lastUsedAt?: string): string { if (!lastUsedAt) { return 'Never'; } return dateTimeFormat(lastUsedAt, { timeZone }); } function formatDate(expiration: string | undefined, timeZone: TimeZone): string { if (!expiration) { return 'No expiration date'; } return dateTimeFormat(expiration, { timeZone }); } const getStyles = (theme: GrafanaTheme2) => ({ tableRow: (isExpired: boolean) => css` color: ${isExpired ? theme.colors.text.secondary : theme.colors.text.primary}; `, tooltipContainer: css` margin-left: ${theme.spacing(1)}; `, });