From 0544def98f97e0045d5da0b25a8d7c4b3192fab5 Mon Sep 17 00:00:00 2001 From: Sidney Alcantara Date: Tue, 28 Sep 2021 21:35:45 +1000 Subject: [PATCH] setup step 2: show which roles are missing --- src/components/Setup/Step2ServiceAccount.tsx | 51 +++++++++++++++----- src/pages/Setup.tsx | 4 +- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/src/components/Setup/Step2ServiceAccount.tsx b/src/components/Setup/Step2ServiceAccount.tsx index 926e11f8..26dc7132 100644 --- a/src/components/Setup/Step2ServiceAccount.tsx +++ b/src/components/Setup/Step2ServiceAccount.tsx @@ -21,6 +21,7 @@ export default function Step2ServiceAccount({ setCompletion, }: ISetupStepBodyProps) { const [hasAllRoles, setHasAllRoles] = useState(completion.serviceAccount); + const [roles, setRoles] = useState>({}); const [verificationStatus, setVerificationStatus] = useState< "IDLE" | "LOADING" | "FAIL" >("IDLE"); @@ -40,8 +41,8 @@ export default function Step2ServiceAccount({ setVerificationStatus("LOADING"); try { const result = await checkServiceAccount(rowyRunUrl); - console.log(result); - if (result) { + setRoles(result); + if (result.hasAllRoles) { setVerificationStatus("IDLE"); setHasAllRoles(true); setCompletion((c) => ({ ...c, serviceAccount: true })); @@ -92,8 +93,23 @@ export default function Step2ServiceAccount({ <> @@ -117,8 +133,18 @@ export default function Step2ServiceAccount({ {verificationStatus === "FAIL" && ( - - The service account does not have the required IAM roles. + + Some roles are missing. Also make sure your Firebase project has + Firestore and Authentication enabled.{" "} + + Setup Guide + + )} @@ -150,11 +176,14 @@ export const checkServiceAccount = async ( route: runRoutes.serviceAccountAccess, signal, }); - console.log(res); - return Object.values(res).reduce( - (acc, value) => acc && value, - true - ) as boolean; + + return { + ...res, + hasAllRoles: Object.values(res).reduce( + (acc, value) => acc && value, + true + ) as boolean, + }; } catch (e: any) { console.error(e); return false; diff --git a/src/pages/Setup.tsx b/src/pages/Setup.tsx index 176b9cc4..c37ce72d 100644 --- a/src/pages/Setup.tsx +++ b/src/pages/Setup.tsx @@ -76,7 +76,7 @@ const checkAllSteps = async ( const promises = [ checkServiceAccount(rowyRunUrl, signal).then((serviceAccount) => { - if (serviceAccount) completion.serviceAccount = true; + if (serviceAccount.hasAllRoles) completion.serviceAccount = true; }), checkProjectOwner(rowyRunUrl, currentUser, userRoles, signal).then( (projectOwner) => { @@ -340,7 +340,7 @@ export default function SetupPage() { spacing={3} sx={{ minHeight: "100%", - maxWidth: 400, + maxWidth: 440, margin: "0 auto", textAlign: "center", py: 3,