Skip to content

Commit 0c42bc9

Browse files
committed
refactor: update connection:edit permissions to restrict table access
1 parent 6a63a63 commit 0c42bc9

2 files changed

Lines changed: 3 additions & 25 deletions

File tree

backend/src/entities/cedar-authorization/cedar-permissions.service.ts

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -112,24 +112,6 @@ export class CedarPermissionsService implements IUserAccessRepository {
112112
return [];
113113
}
114114

115-
// If user has connection:edit, they get full access to all tables
116-
const connEditEntities = buildCedarEntities(cognitoUserName, userGroups, connectionId);
117-
const hasConnectionEdit = this.evaluatePolicies(
118-
cognitoUserName, CedarAction.ConnectionEdit, CedarResourceType.Connection, connectionId, groupPolicies, connEditEntities,
119-
);
120-
if (hasConnectionEdit) {
121-
return tableNames.map((tableName) => ({
122-
tableName,
123-
accessLevel: {
124-
visibility: true,
125-
readonly: false,
126-
add: true,
127-
delete: true,
128-
edit: true,
129-
},
130-
}));
131-
}
132-
133115
const actions = [CedarAction.TableRead, CedarAction.TableAdd, CedarAction.TableEdit, CedarAction.TableDelete];
134116
const result: Array<ITablePermissionData> = [];
135117

backend/test/ava-tests/saas-tests/saas-cedar-permissions-e2e.test.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1487,7 +1487,7 @@ test.serial(
14871487
);
14881488

14891489
test.serial(
1490-
`${currentTest} user with connection:edit should see all tables with full permissions via Cedar`,
1490+
`${currentTest} user with connection:edit but no table perms should see empty table list via Cedar`,
14911491
async (t) => {
14921492
try {
14931493
const testData = await createConnectionAndInviteUserWithConnectionEditOnly(app);
@@ -1504,13 +1504,9 @@ test.serial(
15041504
.set('Accept', 'application/json');
15051505
t.is(getTablesInConnection.status, 200);
15061506
const tables = JSON.parse(getTablesInConnection.text);
1507-
t.true(tables.length > 0);
1507+
// connection:edit does NOT grant table access — tables should be empty
15081508
const targetTable = tables.find((table: any) => table.table === firstTableInfo.testTableName);
1509-
t.truthy(targetTable);
1510-
t.is(targetTable.permissions.visibility, true);
1511-
t.is(targetTable.permissions.add, true);
1512-
t.is(targetTable.permissions.edit, true);
1513-
t.is(targetTable.permissions.delete, true);
1509+
t.is(targetTable, undefined);
15141510
} catch (e) {
15151511
console.error(e);
15161512
throw e;

0 commit comments

Comments
 (0)