From c8367eaf324033f608c6be3173b961b097e32ced Mon Sep 17 00:00:00 2001 From: RachelElysia <71795832+RachelElysia@users.noreply.github.com> Date: Thu, 28 Jul 2022 18:33:31 -0400 Subject: [PATCH] Fleet UI: Welcome to Fleet and Learn Fleet render conditionally for roles (#6958) --- changes/issue-6956-welcome-to-fleet-card | 1 + frontend/pages/Homepage/Homepage.tsx | 56 ++++++++++++++++++------ 2 files changed, 44 insertions(+), 13 deletions(-) create mode 100644 changes/issue-6956-welcome-to-fleet-card diff --git a/changes/issue-6956-welcome-to-fleet-card b/changes/issue-6956-welcome-to-fleet-card new file mode 100644 index 0000000000..540424a11a --- /dev/null +++ b/changes/issue-6956-welcome-to-fleet-card @@ -0,0 +1 @@ +* Welcome to Fleet and Learn Fleet card only shows on All teams for users that have permission to enroll hosts \ No newline at end of file diff --git a/frontend/pages/Homepage/Homepage.tsx b/frontend/pages/Homepage/Homepage.tsx index 73ce85caa1..c771ce875a 100644 --- a/frontend/pages/Homepage/Homepage.tsx +++ b/frontend/pages/Homepage/Homepage.tsx @@ -137,6 +137,24 @@ const Homepage = (): JSX.Element => { } ); + const { + isLoading: isTeamSecretsLoading, + data: teamSecrets, + refetch: refetchTeamSecrets, + } = useQuery( + ["team secrets", currentTeam], + () => { + if (currentTeam) { + return enrollSecretsAPI.getTeamEnrollSecrets(currentTeam.id); + } + return { secrets: [] }; + }, + { + enabled: !!currentTeam?.id && !!canEnrollHosts, + select: (data: IEnrollSecretsResponse) => data.secrets, + } + ); + const handleTeamSelect = (teamId: number) => { const selectedTeam = find(teams, ["id", teamId]); setCurrentTeam(selectedTeam); @@ -292,18 +310,22 @@ const Homepage = (): JSX.Element => { ), }); - const allLayout = () => ( -
- {hostSummaryData && hostSummaryData?.totals_hosts_count < 2 && ( - <> - {WelcomeHostCard} - {LearnFleetCard} - - )} - {SoftwareCard} - {!currentTeam && isOnGlobalTeam && <>{ActivityFeedCard}} -
- ); + const allLayout = () => { + return ( +
+ {canEnrollHosts && + hostSummaryData && + hostSummaryData?.totals_hosts_count < 2 && ( + <> + {WelcomeHostCard} + {LearnFleetCard} + + )} + {SoftwareCard} + {!currentTeam && isOnGlobalTeam && <>{ActivityFeedCard}} +
+ ); + }; const macOSLayout = () => (
@@ -330,7 +352,15 @@ const Homepage = (): JSX.Element => { }; const renderAddHostsModal = () => { - const enrollSecret = globalSecrets?.[0].secret; + const enrollSecret = + // TODO: Currently, prepacked installers in Fleet Sandbox use the global enroll secret, + // and Fleet Sandbox runs Fleet Free so the isSandboxMode check here is an + // additional precaution/reminder to revisit this in connection with future changes. + // See https://github.com/fleetdm/fleet/issues/4970#issuecomment-1187679407. + currentTeam && !isSandboxMode + ? teamSecrets?.[0].secret + : globalSecrets?.[0].secret; + return (