Skip to content

Commit 2df9e70

Browse files
committed
[server] Implement a second getAllEnvVars() method that doesn't filter on repository pattern precedence
1 parent a73ee70 commit 2df9e70

File tree

4 files changed

+22
-1
lines changed

4 files changed

+22
-1
lines changed

components/dashboard/src/settings/EnvironmentVariables.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export default function EnvVars() {
8585
const [currentEnvVar, setCurrentEnvVar] = useState({ name: '', value: '', repositoryPattern: '' } as UserEnvVarValue);
8686
const [isAddEnvVarModalVisible, setAddEnvVarModalVisible] = useState(false);
8787
const update = async () => {
88-
await getGitpodService().server.getEnvVars().then(r => setEnvVars(r));
88+
await getGitpodService().server.getAllEnvVars().then(r => setEnvVars(r));
8989
}
9090

9191
useEffect(() => {

components/gitpod-protocol/src/gitpod-service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
107107

108108
// user env vars
109109
getEnvVars(): Promise<UserEnvVarValue[]>;
110+
getAllEnvVars(): Promise<UserEnvVarValue[]>;
110111
setEnvVar(variable: UserEnvVarValue): Promise<void>;
111112
deleteEnvVar(variable: UserEnvVarValue): Promise<void>;
112113

components/server/src/auth/rate-limiter.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ function readConfig(): RateLimiterConfig {
7777
"getUserStorageResource": { group: "default", points: 1 },
7878
"updateUserStorageResource": { group: "default", points: 1 },
7979
"getEnvVars": { group: "default", points: 1 },
80+
"getAllEnvVars": { group: "default", points: 1 },
8081
"setEnvVar": { group: "default", points: 1 },
8182
"deleteEnvVar": { group: "default", points: 1 },
8283
"getContentBlobUploadUrl": { group: "default", points: 1 },

components/server/src/workspace/gitpod-server-impl.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1257,6 +1257,7 @@ export class GitpodServerImpl<Client extends GitpodClient, Server extends Gitpod
12571257
return layoutData.layoutData;
12581258
}
12591259

1260+
// Get environment variables (filter by repository pattern precedence)
12601261
async getEnvVars(): Promise<UserEnvVarValue[]> {
12611262
const user = this.checkUser("getEnvVars");
12621263
const result = new Map<string, { value: UserEnvVar, score: number }>();
@@ -1274,6 +1275,24 @@ export class GitpodServerImpl<Client extends GitpodClient, Server extends Gitpod
12741275
.map(({ value: { id, name, value, repositoryPattern } }) => ({ id, name, value, repositoryPattern }));
12751276
}
12761277

1278+
// Get all environment variables (unfiltered)
1279+
async getAllEnvVars(): Promise<UserEnvVarValue[]> {
1280+
const user = this.checkUser("getAllEnvVars");
1281+
const result: UserEnvVarValue[] = [];
1282+
for (const value of await this.userDB.getEnvVars(user.id)) {
1283+
if (!await this.resourceAccessGuard.canAccess({ kind: 'envVar', subject: value }, 'get')) {
1284+
continue;
1285+
}
1286+
result.push({
1287+
id: value.id,
1288+
name: value.name,
1289+
value: value.value,
1290+
repositoryPattern: value.repositoryPattern,
1291+
});
1292+
}
1293+
return result;
1294+
}
1295+
12771296
async setEnvVar(variable: UserEnvVarValue): Promise<void> {
12781297
// Note: this operation is per-user only, hence needs no resource guard
12791298
const user = this.checkUser("setEnvVar");

0 commit comments

Comments
 (0)