From 4e36ae89db8cfb94cad07d4c45591040893483ee Mon Sep 17 00:00:00 2001 From: Alex Tugarev Date: Wed, 15 Jun 2022 07:34:16 +0000 Subject: [PATCH 1/2] [dashboard] no eager loading of admin settings and license --- components/dashboard/src/App.tsx | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/components/dashboard/src/App.tsx b/components/dashboard/src/App.tsx index 7b9f8ae4d0babf..98ddf2c2f2f414 100644 --- a/components/dashboard/src/App.tsx +++ b/components/dashboard/src/App.tsx @@ -12,15 +12,13 @@ import { Login } from "./Login"; import { UserContext } from "./user-context"; import { TeamsContext } from "./teams/teams-context"; import { ThemeContext } from "./theme-context"; -import { AdminContext } from "./admin-context"; -import { LicenseContext } from "./license-context"; import { getGitpodService } from "./service/service"; import { shouldSeeWhatsNew, WhatsNew } from "./whatsnew/WhatsNew"; import gitpodIcon from "./icons/gitpod.svg"; import { ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error"; import { useHistory } from "react-router-dom"; import { trackButtonOrAnchor, trackPathChange, trackLocation } from "./Analytics"; -import { ContextURL, LicenseInfo, User } from "@gitpod/gitpod-protocol"; +import { ContextURL, User } from "@gitpod/gitpod-protocol"; import * as GitpodCookie from "@gitpod/gitpod-protocol/lib/util/gitpod-cookie"; import { Experiment } from "./experiments"; import { workspacesPathMain } from "./workspaces/workspaces.routes"; @@ -147,9 +145,7 @@ export function getURLHash() { function App() { const { user, setUser } = useContext(UserContext); const { teams, setTeams } = useContext(TeamsContext); - const { setAdminSettings } = useContext(AdminContext); const { setIsDark } = useContext(ThemeContext); - const { setLicense } = useContext(LicenseContext); const [loading, setLoading] = useState(true); const [isWhatsNewShown, setWhatsNewShown] = useState(false); @@ -183,14 +179,6 @@ function App() { } } setTeams(teams); - - if (user?.rolesOrPermissions?.includes("admin")) { - const adminSettings = await getGitpodService().server.adminGetSettings(); - setAdminSettings(adminSettings); - - var license: LicenseInfo = await getGitpodService().server.adminGetLicense(); - setLicense(license); - } } catch (error) { console.error(error); if (error && "code" in error) { From bf9c16ce5e4786b72f08bfc3bc96fd78ace52cb0 Mon Sep 17 00:00:00 2001 From: Alex Tugarev Date: Wed, 15 Jun 2022 07:37:13 +0000 Subject: [PATCH 2/2] [server] add guards to adminGetLicense --- components/server/src/workspace/gitpod-server-impl.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/server/src/workspace/gitpod-server-impl.ts b/components/server/src/workspace/gitpod-server-impl.ts index 7bcccf9c28194e..676e3c6de7cfd6 100644 --- a/components/server/src/workspace/gitpod-server-impl.ts +++ b/components/server/src/workspace/gitpod-server-impl.ts @@ -2650,6 +2650,10 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable { } async adminGetLicense(ctx: TraceContext): Promise { + traceAPIParams(ctx, {}); + + await this.guardAdminAccess("adminGetLicense", {}, Permission.ADMIN_API); + const licenseData = this.licenseEvaluator.getLicenseData(); const licensePayload = licenseData.payload; const licenseValid = this.licenseEvaluator.validate(); @@ -2674,7 +2678,7 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable { }; } - async licenseFeatures(ctx: TraceContext, features: string[], userCount: number): Promise { + protected async licenseFeatures(ctx: TraceContext, features: string[], userCount: number): Promise { var enabledFeatures: string[] = []; for (const feature of features) { const featureName: Feature = Feature[feature as keyof typeof Feature];