import React, { useEffect, useMemo, useState } from 'react'; import { Button, Form, HorizontalGroup, Select } from '@grafana/ui'; import { CloseButton } from 'app/core/components/CloseButton/CloseButton'; import { TeamPicker } from 'app/core/components/Select/TeamPicker'; import { UserPicker } from 'app/core/components/Select/UserPicker'; import { OrgRole } from 'app/types/acl'; import { Assignments, PermissionTarget, SetPermission } from './types'; export interface Props { title?: string; permissions: string[]; assignments: Assignments; onCancel: () => void; onAdd: (state: SetPermission) => void; } export const AddPermission = ({ title = 'Add Permission For', permissions, assignments, onAdd, onCancel }: Props) => { const [target, setPermissionTarget] = useState(PermissionTarget.None); const [teamId, setTeamId] = useState(0); const [userId, setUserId] = useState(0); const [builtInRole, setBuiltinRole] = useState(''); const [permission, setPermission] = useState(''); const targetOptions = useMemo(() => { const options = []; if (assignments.users) { options.push({ value: PermissionTarget.User, label: 'User' }); } if (assignments.teams) { options.push({ value: PermissionTarget.Team, label: 'Team' }); } if (assignments.builtInRoles) { options.push({ value: PermissionTarget.BuiltInRole, label: 'Role' }); } return options; }, [assignments]); useEffect(() => { if (permissions.length > 0) { setPermission(permissions[0]); } }, [permissions]); const isValid = () => (target === PermissionTarget.Team && teamId > 0) || (target === PermissionTarget.User && userId > 0) || (PermissionTarget.BuiltInRole && OrgRole.hasOwnProperty(builtInRole)); return (
{title}
onAdd({ userId, teamId, builtInRole, permission, target })} > {() => ( ({ value: r, label: r }))} onChange={(r) => setBuiltinRole(r.value || '')} width={40} /> )}