import React, { useState } from 'react'; import { NavModelItem } from '@grafana/data'; import { getBackendSrv, locationService } from '@grafana/runtime'; import { Button, Form, Field, Input, FieldSet } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; import { TeamRolePicker } from 'app/core/components/RolePicker/TeamRolePicker'; import { updateTeamRoles } from 'app/core/components/RolePicker/api'; import { useRoleOptions } from 'app/core/components/RolePicker/hooks'; import { contextSrv } from 'app/core/core'; import { AccessControlAction, Role, TeamDTO } from 'app/types'; const pageNav: NavModelItem = { icon: 'users-alt', id: 'team-new', text: 'New team', subTitle: 'Create a new team. Teams let you grant permissions to a group of users.', breadcrumbs: [{ title: 'Configuration', url: 'org/teams' }], }; export const CreateTeam = (): JSX.Element => { const currentOrgId = contextSrv.user.orgId; const [pendingRoles, setPendingRoles] = useState([]); const [{ roleOptions }] = useRoleOptions(currentOrgId); const canUpdateRoles = contextSrv.hasPermission(AccessControlAction.ActionUserRolesAdd) && contextSrv.hasPermission(AccessControlAction.ActionUserRolesRemove); const createTeam = async (formModel: TeamDTO) => { const newTeam = await getBackendSrv().post('/api/teams', formModel); if (newTeam.teamId) { try { await contextSrv.fetchUserPermissions(); if (contextSrv.licensedAccessControlEnabled() && canUpdateRoles) { await updateTeamRoles(pendingRoles, newTeam.teamId, newTeam.orgId); } } catch (e) { console.error(e); } locationService.push(`/org/teams/edit/${newTeam.teamId}`); } }; return (
{({ register, errors }) => (
{contextSrv.licensedAccessControlEnabled() && ( )}
)}
); }; export default CreateTeam;