import {Card, Flex, Label, Switch, Text} from '@gravity-ui/uikit'; import type {AvailablePermissionsConfig} from '../../../../types/api/acl'; import i18n from '../i18n'; import type {CommonRightsProps, RightsView} from '../shared'; import {RightsDescription, block, isLegacyRight} from '../shared'; interface RightsProps extends CommonRightsProps { availablePermissions?: AvailablePermissionsConfig; view: RightsView; } export function Rights({ rights, availablePermissions, handleChangeRightGetter, inheritedRights, view, }: RightsProps) { if (view === 'Groups') { return ( ); } return ( ); } interface GroupRightsProps extends CommonRightsProps { availablePermissions: AvailablePermissionsConfig['AccessRules']; } function GroupRights({ rights, availablePermissions, handleChangeRightGetter, inheritedRights, }: GroupRightsProps) { if (!availablePermissions?.length) { return i18n('description_no-group-permissions'); } return ( {availablePermissions.map(({Name, Mask, AccessRights = [], AccessRules = []}) => { const includedRights = AccessRights.concat(AccessRules); const isLegacy = isLegacyRight(Mask); const isActive = rights.get(Name); const isInherited = inheritedRights.has(Name); if (isLegacy && !isActive && !isInherited) { return null; } return ( ); })} ); } interface GranularRightsProps extends CommonRightsProps { availablePermissions: AvailablePermissionsConfig['AccessRights']; } function GranularRights({ rights, availablePermissions, handleChangeRightGetter, inheritedRights, }: GranularRightsProps) { if (!availablePermissions?.length) { return i18n('description_no-granular-permissions'); } return ( {availablePermissions.map(({Name, Mask}) => ( ))} ); } interface SingleRightProps { right: string; onUpdate: (value: boolean) => void; active?: boolean; includedRights?: string[]; description?: string; inherited?: boolean; } function SingleRight({ right, onUpdate, active, includedRights, description, inherited, }: SingleRightProps) { const onlyInherited = inherited && !active; return ( {right} {description && {description}} {includedRights?.length ? ( {includedRights.map((right) => ( ))} ) : null} {inherited && } {!onlyInherited && } ); }