⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.72
Server IP:
41.128.143.86
Server:
Linux host.raqmix.cloud 6.8.0-1025-azure #30~22.04.1-Ubuntu SMP Wed Mar 12 15:28:20 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.3.23
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
teams
/
Edit File: CreateTeam.tsx
import React, { JSX, useState } from 'react'; import { useForm } from 'react-hook-form'; import { NavModelItem } from '@grafana/data'; import { getBackendSrv, locationService } from '@grafana/runtime'; import { Button, 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.', }; export const CreateTeam = (): JSX.Element => { const currentOrgId = contextSrv.user.orgId; const [pendingRoles, setPendingRoles] = useState<Role[]>([]); const [{ roleOptions }] = useRoleOptions(currentOrgId); const { handleSubmit, register, formState: { errors }, } = useForm<TeamDTO>(); 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 ( <Page navId="teams" pageNav={pageNav}> <Page.Contents> <form onSubmit={handleSubmit(createTeam)} style={{ maxWidth: '600px' }}> <FieldSet> <Field label="Name" required invalid={!!errors.name} error="Team name is required"> <Input {...register('name', { required: true })} id="team-name" /> </Field> {contextSrv.licensedAccessControlEnabled() && ( <Field label="Role"> <TeamRolePicker teamId={0} roleOptions={roleOptions} disabled={false} apply={true} onApplyRoles={setPendingRoles} pendingRoles={pendingRoles} maxWidth="100%" /> </Field> )} <Field label={'Email'} description={'This is optional and is primarily used for allowing custom team avatars.'} > <Input {...register('email')} type="email" id="team-email" placeholder="email@test.com" /> </Field> </FieldSet> <Button type="submit" variant="primary"> Create </Button> </form> </Page.Contents> </Page> ); }; export default CreateTeam;
Simpan