Skip to content

Commit c885657

Browse files
geroplroboquat
authored andcommitted
[server] Extend Prebuild access level to WorkspaceInstance
1 parent 0c15004 commit c885657

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

components/server/src/auth/resource-access.spec.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -885,6 +885,43 @@ class TestResourceAccess {
885885
teamRole: "owner",
886886
expectation: true,
887887
},
888+
// prebuild instance with repo access
889+
{
890+
name: "prebuild workspaceInstance get owner",
891+
resourceKind: "workspaceInstance",
892+
workspaceType: "prebuild",
893+
isOwner: true,
894+
teamRole: undefined,
895+
repositoryAccess: true,
896+
expectation: true,
897+
},
898+
{
899+
name: "prebuild workspaceInstance get other",
900+
resourceKind: "workspaceInstance",
901+
workspaceType: "prebuild",
902+
isOwner: false,
903+
teamRole: undefined,
904+
repositoryAccess: true,
905+
expectation: true,
906+
},
907+
{
908+
name: "prebuild workspaceInstance get team member",
909+
resourceKind: "workspaceInstance",
910+
workspaceType: "prebuild",
911+
isOwner: false,
912+
teamRole: "member",
913+
repositoryAccess: true,
914+
expectation: true,
915+
},
916+
{
917+
name: "prebuild workspaceInstance get team owner (same as member)",
918+
resourceKind: "workspaceInstance",
919+
workspaceType: "prebuild",
920+
isOwner: false,
921+
teamRole: "owner",
922+
repositoryAccess: true,
923+
expectation: true,
924+
},
888925
// prebuild
889926
{
890927
name: "prebuild get owner",

components/server/src/auth/resource-access.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,14 @@ export class RepositoryResourceGuard implements ResourceAccessGuard {
489489
if (workspace.type !== "prebuild") {
490490
return false;
491491
}
492-
// We're only allowed to access prebuild workspaces with the repository guard
492+
// We're only allowed to access prebuild workspaces with this repository guard
493+
break;
494+
case "workspaceInstance":
495+
workspace = resource.workspace;
496+
if (workspace.type !== "prebuild") {
497+
return false;
498+
}
499+
// We're only allowed to access prebuild workspace instances with thi repository guard
493500
break;
494501
case "workspaceLog":
495502
workspace = resource.subject;

0 commit comments

Comments
 (0)