import React, { FC, useEffect, useState } from 'react'; import { AccessControlAction, Role, OrgServiceAccount } from 'app/types'; import { OrgRolePicker } from '../admin/OrgRolePicker'; import { Button, ConfirmModal } from '@grafana/ui'; import { OrgRole } from '@grafana/data'; import { contextSrv } from 'app/core/core'; import { fetchBuiltinRoles, fetchRoleOptions, UserRolePicker } from 'app/core/components/RolePicker/UserRolePicker'; export interface Props { serviceAccounts: OrgServiceAccount[]; orgId?: number; onRoleChange: (role: OrgRole, serviceaccount: OrgServiceAccount) => void; onRemoveServiceaccount: (serviceaccount: OrgServiceAccount) => void; } const ServiceaccountsTable: FC = (props) => { const { serviceAccounts, orgId, onRoleChange, onRemoveServiceaccount: onRemoveserviceaccount } = props; const canUpdateRole = contextSrv.hasPermission(AccessControlAction.OrgUsersRoleUpdate); const canRemoveFromOrg = contextSrv.hasPermission(AccessControlAction.OrgUsersRemove); const rolePickerDisabled = !canUpdateRole; const [showRemoveModal, setShowRemoveModal] = useState(false); const [roleOptions, setRoleOptions] = useState([]); const [builtinRoles, setBuiltinRoles] = useState>({}); useEffect(() => { async function fetchOptions() { try { let options = await fetchRoleOptions(orgId); setRoleOptions(options); const builtInRoles = await fetchBuiltinRoles(orgId); setBuiltinRoles(builtInRoles); } catch (e) { console.error('Error loading options'); } } if (contextSrv.accessControlEnabled()) { fetchOptions(); } }, [orgId]); const getRoleOptions = async () => roleOptions; const getBuiltinRoles = async () => builtinRoles; return ( {serviceAccounts.map((serviceAccount, index) => { return ( {canRemoveFromOrg && ( )} ); })}
Login Email Name Seen Role
serviceaccount avatar {serviceAccount.login} {serviceAccount.email} {serviceAccount.name} {serviceAccount.lastSeenAtAge} {contextSrv.accessControlEnabled() ? ( onRoleChange(newRole, serviceAccount)} getRoleOptions={getRoleOptions} getBuiltinRoles={getBuiltinRoles} disabled={rolePickerDisabled} /> ) : ( onRoleChange(newRole, serviceAccount)} /> )}
); }; export default ServiceaccountsTable;