mirror of
https://github.com/grafana/grafana.git
synced 2025-02-11 16:15:42 -06:00
bc5237e840
* ServiceAccounts: Delete/Disable service account from details page * ServiceAccounts: capitalize viewable messages from UI * ServiceAccounts: Link new update endpoint to details page * ServiceAccounts: reimplement service account retrieve to include is_disabled and only target service accounts * Cleanup styles * Fix modal show * ServiceAccounts: simplify handler functions * Apply suggestions from code review Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> Co-authored-by: Clarity-89 <homes89@ukr.net> Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
import React, { PureComponent } from 'react';
|
|
import { css, cx } from '@emotion/css';
|
|
import { AccessControlAction, OrgRole, Role, ServiceAccountDTO } from 'app/types';
|
|
import { OrgRolePicker } from '../admin/OrgRolePicker';
|
|
import { contextSrv } from 'app/core/core';
|
|
import { UserRolePicker } from 'app/core/components/RolePicker/UserRolePicker';
|
|
|
|
interface Props {
|
|
label: string;
|
|
serviceAccount: ServiceAccountDTO;
|
|
onRoleChange: (role: OrgRole) => void;
|
|
roleOptions: Role[];
|
|
builtInRoles: Record<string, Role[]>;
|
|
}
|
|
|
|
export class ServiceAccountRoleRow extends PureComponent<Props> {
|
|
render() {
|
|
const { label, serviceAccount, roleOptions, builtInRoles, onRoleChange } = this.props;
|
|
const canUpdateRole = contextSrv.hasPermissionInMetadata(AccessControlAction.ServiceAccountsWrite, serviceAccount);
|
|
const rolePickerDisabled = !canUpdateRole;
|
|
const labelClass = cx(
|
|
'width-16',
|
|
css`
|
|
font-weight: 500;
|
|
`
|
|
);
|
|
|
|
const inputId = `${label}-input`;
|
|
return (
|
|
<tr>
|
|
<td className={labelClass}>
|
|
<label htmlFor={inputId}>{label}</label>
|
|
</td>
|
|
<td className="width-25" colSpan={2}>
|
|
{contextSrv.licensedAccessControlEnabled() ? (
|
|
<UserRolePicker
|
|
userId={serviceAccount.id}
|
|
orgId={serviceAccount.orgId}
|
|
builtInRole={serviceAccount.role}
|
|
onBuiltinRoleChange={onRoleChange}
|
|
roleOptions={roleOptions}
|
|
builtInRoles={builtInRoles}
|
|
disabled={rolePickerDisabled}
|
|
/>
|
|
) : (
|
|
<OrgRolePicker
|
|
aria-label="Role"
|
|
value={serviceAccount.role}
|
|
disabled={!canUpdateRole}
|
|
onChange={onRoleChange}
|
|
/>
|
|
)}
|
|
</td>
|
|
<td></td>
|
|
</tr>
|
|
);
|
|
}
|
|
}
|