grafana_bak/public/app/features/admin/ldap/LdapUserPermissions.tsx
2025-04-01 10:38:02 +09:00

62 lines
1.4 KiB
TypeScript

import { useMemo } from 'react';
import * as React from 'react';
import { Column, Icon, InteractiveTable } from '@grafana/ui';
import { Trans } from 'app/core/internationalization';
import { LdapPermissions } from 'app/types';
interface Props {
permissions: LdapPermissions;
}
interface TableRow {
permission: string;
value: React.ReactNode;
}
export const LdapUserPermissions = ({ permissions }: Props) => {
const columns = useMemo<Array<Column<TableRow>>>(
() => [
{
id: 'permission',
header: 'Permissions',
disableGrow: true,
},
{
id: 'value',
},
],
[]
);
const data = useMemo<TableRow[]>(
() => [
{
permission: 'Grafana admin',
value: permissions.isGrafanaAdmin ? (
<Trans i18nKey="admin.ldap-permissions.admin">
<Icon name="shield" /> Yes
</Trans>
) : (
'No'
),
},
{
permission: 'Status',
value: permissions.isDisabled ? (
<Trans i18nKey="admin.ldap-permissions.inactive">
<Icon name="times" /> Inactive
</Trans>
) : (
<Trans i18nKey="admin.ldap-permissions.active">
<Icon name="check" /> Active
</Trans>
),
},
],
[permissions]
);
return <InteractiveTable data={data} columns={columns} getRowId={(row) => row.permission} />;
};