@lightdash/common 0.2897.0 → 0.2899.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/authorization/parseScopes.test.js +4 -7
  3. package/dist/cjs/authorization/parseScopes.test.js.map +1 -1
  4. package/dist/cjs/authorization/roleToScopeMapping.d.ts.map +1 -1
  5. package/dist/cjs/authorization/roleToScopeMapping.js +56 -0
  6. package/dist/cjs/authorization/roleToScopeMapping.js.map +1 -1
  7. package/dist/cjs/authorization/roleToScopeParity.test.js +169 -97
  8. package/dist/cjs/authorization/roleToScopeParity.test.js.map +1 -1
  9. package/dist/cjs/authorization/scopes.d.ts.map +1 -1
  10. package/dist/cjs/authorization/scopes.js +7 -22
  11. package/dist/cjs/authorization/scopes.js.map +1 -1
  12. package/dist/cjs/authorization/types.d.ts +1 -1
  13. package/dist/cjs/authorization/types.d.ts.map +1 -1
  14. package/dist/cjs/ee/apps/types.d.ts +3 -0
  15. package/dist/cjs/ee/apps/types.d.ts.map +1 -1
  16. package/dist/cjs/types/projects.d.ts +1 -0
  17. package/dist/cjs/types/projects.d.ts.map +1 -1
  18. package/dist/cjs/types/projects.js +12 -1
  19. package/dist/cjs/types/projects.js.map +1 -1
  20. package/dist/cjs/types/roles.d.ts +12 -0
  21. package/dist/cjs/types/roles.d.ts.map +1 -1
  22. package/dist/cjs/utils/timeFrames.d.ts +9 -7
  23. package/dist/cjs/utils/timeFrames.d.ts.map +1 -1
  24. package/dist/cjs/utils/timeFrames.js +10 -10
  25. package/dist/cjs/utils/timeFrames.js.map +1 -1
  26. package/dist/cjs/utils/timeFrames.test.js +26 -0
  27. package/dist/cjs/utils/timeFrames.test.js.map +1 -1
  28. package/dist/esm/.tsbuildinfo +1 -1
  29. package/dist/esm/authorization/parseScopes.test.js +4 -7
  30. package/dist/esm/authorization/parseScopes.test.js.map +1 -1
  31. package/dist/esm/authorization/roleToScopeMapping.d.ts.map +1 -1
  32. package/dist/esm/authorization/roleToScopeMapping.js +56 -0
  33. package/dist/esm/authorization/roleToScopeMapping.js.map +1 -1
  34. package/dist/esm/authorization/roleToScopeParity.test.js +169 -96
  35. package/dist/esm/authorization/roleToScopeParity.test.js.map +1 -1
  36. package/dist/esm/authorization/scopes.d.ts.map +1 -1
  37. package/dist/esm/authorization/scopes.js +7 -22
  38. package/dist/esm/authorization/scopes.js.map +1 -1
  39. package/dist/esm/authorization/types.d.ts +1 -1
  40. package/dist/esm/authorization/types.d.ts.map +1 -1
  41. package/dist/esm/ee/apps/types.d.ts +3 -0
  42. package/dist/esm/ee/apps/types.d.ts.map +1 -1
  43. package/dist/esm/types/projects.d.ts +1 -0
  44. package/dist/esm/types/projects.d.ts.map +1 -1
  45. package/dist/esm/types/projects.js +10 -0
  46. package/dist/esm/types/projects.js.map +1 -1
  47. package/dist/esm/types/roles.d.ts +12 -0
  48. package/dist/esm/types/roles.d.ts.map +1 -1
  49. package/dist/esm/utils/timeFrames.d.ts +9 -7
  50. package/dist/esm/utils/timeFrames.d.ts.map +1 -1
  51. package/dist/esm/utils/timeFrames.js +10 -10
  52. package/dist/esm/utils/timeFrames.js.map +1 -1
  53. package/dist/esm/utils/timeFrames.test.js +26 -0
  54. package/dist/esm/utils/timeFrames.test.js.map +1 -1
  55. package/dist/types/.tsbuildinfo +1 -1
  56. package/dist/types/authorization/parseScopes.test.js +4 -7
  57. package/dist/types/authorization/parseScopes.test.js.map +1 -1
  58. package/dist/types/authorization/roleToScopeMapping.d.ts.map +1 -1
  59. package/dist/types/authorization/roleToScopeMapping.js +56 -0
  60. package/dist/types/authorization/roleToScopeMapping.js.map +1 -1
  61. package/dist/types/authorization/roleToScopeParity.test.js +169 -96
  62. package/dist/types/authorization/roleToScopeParity.test.js.map +1 -1
  63. package/dist/types/authorization/scopes.d.ts.map +1 -1
  64. package/dist/types/authorization/scopes.js +7 -22
  65. package/dist/types/authorization/scopes.js.map +1 -1
  66. package/dist/types/authorization/types.d.ts +1 -1
  67. package/dist/types/authorization/types.d.ts.map +1 -1
  68. package/dist/types/ee/apps/types.d.ts +3 -0
  69. package/dist/types/ee/apps/types.d.ts.map +1 -1
  70. package/dist/types/types/projects.d.ts +1 -0
  71. package/dist/types/types/projects.d.ts.map +1 -1
  72. package/dist/types/types/projects.js +10 -0
  73. package/dist/types/types/projects.js.map +1 -1
  74. package/dist/types/types/roles.d.ts +12 -0
  75. package/dist/types/types/roles.d.ts.map +1 -1
  76. package/dist/types/utils/timeFrames.d.ts +9 -7
  77. package/dist/types/utils/timeFrames.d.ts.map +1 -1
  78. package/dist/types/utils/timeFrames.js +10 -10
  79. package/dist/types/utils/timeFrames.js.map +1 -1
  80. package/dist/types/utils/timeFrames.test.js +26 -0
  81. package/dist/types/utils/timeFrames.test.js.map +1 -1
  82. package/package.json +1 -1
@@ -23,14 +23,11 @@ describe('parseScopes', () => {
23
23
  });
24
24
  it('should handle mixed case scope names correctly', () => {
25
25
  const result = parseScopes({
26
- scopes: [
27
- 'export:dashboard_csv',
28
- 'manage:personal_access_token',
29
- ],
26
+ scopes: ['manage:custom_sql', 'manage:personal_access_token'],
30
27
  isEnterprise: true,
31
28
  });
32
29
  expect(result.size).toBe(2);
33
- expect(result.has('export:DashboardCsv')).toBe(true);
30
+ expect(result.has('manage:CustomSql')).toBe(true);
34
31
  expect(result.has('manage:PersonalAccessToken')).toBe(true);
35
32
  });
36
33
  it('should handle single scope correctly', () => {
@@ -72,13 +69,13 @@ describe('parseScopes', () => {
72
69
  it('should transform snake_case to PascalCase correctly', () => {
73
70
  const result = parseScopes({
74
71
  scopes: [
75
- 'export:dashboard_csv',
72
+ 'manage:custom_sql',
76
73
  'manage:personal_access_token',
77
74
  'view:semantic_viewer',
78
75
  ],
79
76
  isEnterprise: true,
80
77
  });
81
- expect(result.has('export:DashboardCsv')).toBe(true);
78
+ expect(result.has('manage:CustomSql')).toBe(true);
82
79
  expect(result.has('manage:PersonalAccessToken')).toBe(true);
83
80
  expect(result.has('view:SemanticViewer')).toBe(true);
84
81
  });
@@ -1 +1 @@
1
- {"version":3,"file":"parseScopes.test.js","sourceRoot":"","sources":["../../../src/authorization/parseScopes.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parseScopes.test.js","sourceRoot":"","sources":["../../../src/authorization/parseScopes.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"roleToScopeMapping.d.ts","sourceRoot":"","sources":["../../../src/authorization/roleToScopeMapping.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,iBAAiB,EAEpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA2HrD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAoBnE,CAAC;AAET;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,iBAAiB,KAAG,MAAM,EAEnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,GACtC,MAAM,iBAAiB,KACxB,MAAM,EAyBR,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,cAAc,EAWzC,CAAC;AAER,eAAO,MAAM,YAAY,GAAI,UAAU,MAAM,KAAG,QAAQ,IAAI,iBACF,CAAC"}
1
+ {"version":3,"file":"roleToScopeMapping.d.ts","sourceRoot":"","sources":["../../../src/authorization/roleToScopeMapping.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,iBAAiB,EAEpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA0LrD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAoBnE,CAAC;AAET;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,iBAAiB,KAAG,MAAM,EAEnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,GACtC,MAAM,iBAAiB,KACxB,MAAM,EAyBR,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,cAAc,EAWzC,CAAC;AAER,eAAO,MAAM,YAAY,GAAI,UAAU,MAAM,KAAG,QAAQ,IAAI,iBACF,CAAC"}
@@ -18,6 +18,11 @@ const BASE_ROLE_SCOPES = {
18
18
  'view:DashboardComments',
19
19
  'view:Tags',
20
20
  'manage:ExportCsv',
21
+ // Org-context view scopes — every member-or-above can see the
22
+ // org's own metadata + the list of fellow members. Granted by
23
+ // `applyOrganizationMemberStaticAbilities.member` / `viewer`.
24
+ 'view:Organization',
25
+ 'view:OrganizationMemberProfile',
21
26
  // Enterprise scopes (when available)
22
27
  'view:MetricsTree',
23
28
  'view:SpotlightTableConfig',
@@ -34,9 +39,15 @@ const BASE_ROLE_SCOPES = {
34
39
  'manage:ScheduledDeliveries@self',
35
40
  'create:DashboardComments',
36
41
  'manage:GoogleSheets',
42
+ // Job tracking — orchestrating queries/exports/etc. Granted at
43
+ // `applyOrganizationMemberStaticAbilities.interactive_viewer`.
44
+ 'create:Job',
45
+ 'view:Job',
46
+ 'view:Job@self',
37
47
  // Space-level content management (requires space admin/editor role)
38
48
  'manage:Dashboard@space', // Via space access
39
49
  'manage:SavedChart@space', // Via space access
50
+ 'manage:SemanticViewer@space', // Via space access (paired w/ @space content)
40
51
  'manage:DataApp@space', // Via space access
41
52
  'manage:Space@assigned', // Via space access (admin role)
42
53
  // Enterprise scopes
@@ -54,6 +65,14 @@ const BASE_ROLE_SCOPES = {
54
65
  'manage:PinnedItems',
55
66
  'manage:DashboardComments',
56
67
  'manage:Tags',
68
+ // Broad SemanticViewer mgmt — promoted from the @space variant
69
+ // when the user reaches editor tier. Granted at
70
+ // `applyOrganizationMemberStaticAbilities.editor`.
71
+ 'manage:SemanticViewer',
72
+ // View-only access to org warehouse creds — needed before admin
73
+ // tier so editors can see what's already configured. Granted at
74
+ // `applyOrganizationMemberStaticAbilities.editor`.
75
+ 'view:OrganizationWarehouseCredentials',
57
76
  // Enterprise scopes
58
77
  'manage:MetricsTree',
59
78
  'manage:AiAgentThread@self', // User's own threads
@@ -62,6 +81,11 @@ const BASE_ROLE_SCOPES = {
62
81
  // Developer-specific permissions
63
82
  'manage:PreAggregation',
64
83
  'manage:VirtualView',
84
+ // Granular create/delete companions to manage:VirtualView. Both
85
+ // covered by the broader manage at runtime, but listed
86
+ // explicitly so the role-builder UI shows them ticked.
87
+ 'create:VirtualView',
88
+ 'delete:VirtualView',
65
89
  'manage:CustomSql',
66
90
  'manage:CustomFields',
67
91
  'manage:SqlRunner',
@@ -76,6 +100,12 @@ const BASE_ROLE_SCOPES = {
76
100
  'view:JobStatus', // All jobs in project
77
101
  'view:SourceCode',
78
102
  'manage:SourceCode',
103
+ // Promote to upstream project. Both broad + @space variants
104
+ // surface in `applyOrganizationMemberStaticAbilities.developer`.
105
+ 'promote:Dashboard',
106
+ 'promote:Dashboard@space',
107
+ 'promote:SavedChart',
108
+ 'promote:SavedChart@space',
79
109
  // Enterprise scopes
80
110
  'manage:SpotlightTableConfig',
81
111
  'manage:ContentAsCode',
@@ -96,6 +126,32 @@ const BASE_ROLE_SCOPES = {
96
126
  'manage:AiAgentThread', // All threads in project
97
127
  'manage:ScheduledDeliveries',
98
128
  'manage:ContentVerification',
129
+ // Organization-management scopes. These are no-ops at project
130
+ // assignment (CASL conditions match `organizationUuid`-keyed
131
+ // subjects only) but are necessary at the role's intended ORG
132
+ // assignment — service accounts with `roleUuid`, or any future
133
+ // org-level human assignment. See `docs/authentication-and-roles.md`
134
+ // → "Project vs organization assignment of custom roles".
135
+ // Granted at `applyOrganizationMemberStaticAbilities.admin`.
136
+ 'manage:OrganizationMemberProfile',
137
+ 'manage:Group',
138
+ 'manage:InviteLink',
139
+ 'manage:GitIntegration',
140
+ 'manage:OrganizationWarehouseCredentials',
141
+ 'manage:Organization',
142
+ 'impersonate:User',
143
+ // PAT management. Granted dynamically at runtime via
144
+ // `applyOrganizationMemberDynamicAbilities` based on the
145
+ // deployment-wide `PAT_ALLOWED_ORG_ROLES` env var — that path
146
+ // remains the source of truth for system roles. Listing it
147
+ // here lets admin-clone custom roles surface the toggle in the
148
+ // role builder. **Caveat:** toggling it in a custom role
149
+ // *bypasses* the dynamic gate, since CASL is additive (the
150
+ // static scope-built rule wins regardless of deployment
151
+ // config). Operators who clone admin into a lower-privilege
152
+ // role should untick it manually if their deployment intends
153
+ // to restrict PAT to specific tiers.
154
+ 'manage:PersonalAccessToken',
99
155
  ],
100
156
  };
101
157
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"roleToScopeMapping.js","sourceRoot":"","sources":["../../../src/authorization/roleToScopeMapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roleToScopeMapping.js","sourceRoot":"","sources":["../../../src/authorization/roleToScopeMapping.ts"],"names":[],"mappings":"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"}
@@ -1,70 +1,36 @@
1
1
  /* eslint-disable no-console */
2
2
  import { Ability, AbilityBuilder } from '@casl/ability';
3
- import groupBy from 'lodash/groupBy';
4
- import isEqual from 'lodash/isEqual';
5
3
  import { ProjectMemberRole } from '../types/projectMemberRole';
4
+ import { applyOrganizationMemberStaticAbilities } from './organizationMemberAbility';
5
+ import { ORGANIZATION_ADMIN, ORGANIZATION_DEVELOPER, ORGANIZATION_EDITOR, ORGANIZATION_INTERACTIVE_VIEWER, ORGANIZATION_VIEWER, } from './organizationMemberAbility.mock';
6
6
  import { projectMemberAbilities } from './projectMemberAbility';
7
7
  import { PROJECT_ADMIN, PROJECT_DEVELOPER, PROJECT_EDITOR, PROJECT_INTERACTIVE_VIEWER, PROJECT_VIEWER, } from './projectMemberAbility.mock';
8
8
  import { getAllScopesForRole } from './roleToScopeMapping';
9
9
  import { buildAbilityFromScopes } from './scopeAbilityBuilder';
10
+ import { getScopes } from './scopes';
10
11
  /**
11
- * Normalize a CASL rule for comparison by sorting object keys and handling undefined values
12
+ * Coverage check: every `${action}:${subject}` key that the role-based
13
+ * ability emits must also appear in the scope-based ability. Extras on
14
+ * the scope side are allowed — they represent granular toggles that
15
+ * either subsume into a broader role grant (e.g. `manage:Job` covers
16
+ * `create:Job` + `view:Job`) or unlock org-level abilities the project
17
+ * role doesn't carry. Those extras are validated by the separate
18
+ * scope-vocabulary coverage test.
19
+ *
20
+ * Why not strict equivalence: role-based and scope-based deliberately
21
+ * emit different *condition shapes* for the same action+subject (CASL
22
+ * inheritance, `userUuid` filters, etc.). Comparing rule counts or
23
+ * conditions exactly is brittle and tests architectural detail rather
24
+ * than the property we care about — "no role-granted ability is
25
+ * unreachable through scopes."
12
26
  */
13
- const normalizeRule = (rule) => ({
14
- action: rule.action,
15
- subject: rule.subject,
16
- });
17
- /**
18
- * Compare two sets of CASL rules for functional equivalence
19
- */
20
- const compareRuleSets = (roleBasedRules, scopeBasedRules, roleName) => {
21
- const normalizedRoleRules = roleBasedRules.map(normalizeRule);
22
- const normalizedScopeRules = scopeBasedRules.map(normalizeRule);
23
- const mismatches = [];
24
- // Check if rule counts match
25
- if (normalizedRoleRules.length !== normalizedScopeRules.length) {
26
- mismatches.push(`Rule count mismatch: role-based has ${normalizedRoleRules.length} rules, scope-based has ${normalizedScopeRules.length} rules`);
27
- }
28
- // Group rules by action+subject for easier comparison
29
- const roleRulesGrouped = groupBy(normalizedRoleRules, (rule) => `${rule.action}:${rule.subject}`);
30
- const scopeRulesGrouped = groupBy(normalizedScopeRules, (rule) => `${rule.action}:${rule.subject}`);
31
- // Check for missing or extra rule types
32
- const roleKeys = new Set(Object.keys(roleRulesGrouped));
33
- const scopeKeys = new Set(Object.keys(scopeRulesGrouped));
34
- const missingInScope = [...roleKeys].filter((key) => !scopeKeys.has(key));
35
- const extraInScope = [...scopeKeys].filter((key) => !roleKeys.has(key));
36
- missingInScope.forEach((key) => {
37
- mismatches.push(`Missing in scope-based: ${key}`);
38
- });
39
- extraInScope.forEach((key) => {
40
- mismatches.push(`Extra in scope-based: ${key}`);
41
- });
42
- // Compare matching rule groups
43
- const commonKeys = [...roleKeys].filter((key) => scopeKeys.has(key));
44
- commonKeys.forEach((key) => {
45
- const roleRulesForKey = roleRulesGrouped[key];
46
- const scopeRulesForKey = scopeRulesGrouped[key];
47
- // For rules with the same action+subject, we need to check if the conditions are equivalent
48
- // This is more complex because multiple rules might combine to create the same effective permissions
49
- if (roleRulesForKey.length !== scopeRulesForKey.length) {
50
- // Different number of rules for same action+subject - this might be OK if conditions are equivalent
51
- // For now, we'll flag this as a potential issue but continue checking
52
- mismatches.push(`Different rule count for ${key}: role-based has ${roleRulesForKey.length}, scope-based has ${scopeRulesForKey.length}`);
53
- }
54
- // Check if rule sets contain equivalent conditions
55
- const roleConditions = roleRulesForKey
56
- .map((r) => r.conditions)
57
- .filter(Boolean);
58
- const scopeConditions = scopeRulesForKey
59
- .map((r) => r.conditions)
60
- .filter(Boolean);
61
- if (!isEqual(roleConditions, scopeConditions)) {
62
- mismatches.push(`Condition mismatch on ${roleName} for ${key}:\nRole-based: ${JSON.stringify(roleConditions, null, 2)}\nScope-based: ${JSON.stringify(scopeConditions, null, 2)}`);
63
- }
64
- });
27
+ const checkRoleCoveredByScopes = (roleBasedRules, scopeBasedRules, roleName) => {
28
+ const roleKeys = new Set(roleBasedRules.map((r) => `${r.action}:${r.subject}`));
29
+ const scopeKeys = new Set(scopeBasedRules.map((r) => `${r.action}:${r.subject}`));
30
+ const missingInScope = [...roleKeys].filter((k) => !scopeKeys.has(k));
65
31
  return {
66
- isEqual: mismatches.length === 0,
67
- mismatches,
32
+ isEqual: missingInScope.length === 0,
33
+ mismatches: missingInScope.map((k) => `Role ${roleName} grants "${k}" but no scope in BASE_ROLE_SCOPES emits a rule for it`),
68
34
  };
69
35
  };
70
36
  /**
@@ -77,6 +43,12 @@ const ENTERPRISE_SUBJECTS = new Set([
77
43
  'AiAgentThread',
78
44
  'ContentAsCode',
79
45
  'PreAggregation',
46
+ // The matching scopes (`view:` + `manage:OrganizationWarehouseCredentials`)
47
+ // are `isEnterprise: true` in scopes.ts, so the scope-build path
48
+ // strips them in non-enterprise mode. Mirror that filter on the
49
+ // role-based side so non-enterprise parity stays clean — at runtime
50
+ // the feature is gated by license anyway.
51
+ 'OrganizationWarehouseCredentials',
80
52
  ]);
81
53
  /**
82
54
  * Filter enterprise rules from role-based abilities when testing in non-enterprise mode
@@ -88,37 +60,118 @@ const filterEnterpriseRules = (rules, isEnterprise) => {
88
60
  return rules.filter((rule) => !ENTERPRISE_SUBJECTS.has(rule.subject));
89
61
  };
90
62
  /**
91
- * Test role-to-scope parity for a specific role
63
+ * `${action}:${subject}` pairs that we expect on the **scope-built** side
64
+ * but NOT on the **project-role-built** side, when comparing project
65
+ * parity. Two reasons something lands here:
66
+ *
67
+ * 1. **Org-only subject** — the subject never appears in any project
68
+ * ability (e.g. `manage:OrganizationMemberProfile`,
69
+ * `manage:Group`, `impersonate:User`). The scope-built rule for
70
+ * these in project context is dead-on-arrival (`{ projectUuid }`
71
+ * conditions never match `{ organizationUuid }`-keyed subjects),
72
+ * but we keep the toggle in `BASE_ROLE_SCOPES` so admin custom
73
+ * roles surface it at org-level assignment. See
74
+ * `docs/authentication-and-roles.md`.
75
+ *
76
+ * 2. **Granular action of a subject covered by `manage:X` at project
77
+ * level** — e.g. project ability grants `manage:Job` (which CASL
78
+ * expands to cover `create`/`view`/`update`/`delete`), while the
79
+ * scope vocabulary lists `create:Job` and `view:Job@self` as
80
+ * separate scopes. The scope-built rules are benign extras — at
81
+ * runtime they're subsumed by the broader `manage:Job` already
82
+ * in role-based.
83
+ *
84
+ * Subjects with `*` mean "all actions on this subject," used for
85
+ * org-only subjects (case 1).
86
+ */
87
+ const PROJECT_PARITY_IGNORE = new Set([
88
+ // Case 1: org-only subjects.
89
+ '*:OrganizationMemberProfile',
90
+ '*:Organization',
91
+ '*:Group',
92
+ '*:InviteLink',
93
+ '*:GitIntegration',
94
+ '*:OrganizationWarehouseCredentials',
95
+ '*:User', // impersonate:User
96
+ // Case 2: granular actions subsumed by project's broader `manage:X`.
97
+ 'create:Job',
98
+ 'view:Job',
99
+ 'manage:SemanticViewer', // broad org-only; @space variant is project
100
+ 'create:VirtualView',
101
+ 'delete:VirtualView',
102
+ 'promote:Dashboard',
103
+ 'promote:SavedChart',
104
+ 'promote:Dashboard@space',
105
+ 'promote:SavedChart@space',
106
+ ]);
107
+ const isProjectParityIgnored = (rule) => {
108
+ const key = `${rule.action}:${rule.subject}`;
109
+ return (PROJECT_PARITY_IGNORE.has(key) ||
110
+ PROJECT_PARITY_IGNORE.has(`*:${rule.subject}`));
111
+ };
112
+ /**
113
+ * Test project-context parity for a role.
114
+ *
115
+ * Compares `projectMemberAbilities[role]` against
116
+ * `buildAbilityFromScopes(scopes, { projectUuid })`. Org-only subjects
117
+ * are filtered out of the scope-built side because their rules at
118
+ * project context are dead-on-arrival (`{ projectUuid }` conditions
119
+ * never match `{ organizationUuid }`-keyed subjects) — the role-builder
120
+ * UI still surfaces them for org-level assignment, but project parity
121
+ * shouldn't fail on them.
92
122
  */
93
- const testRoleScopeParity = (role, isEnterprise = false) => {
94
- // Get the appropriate mock member profile
95
- const memberProfiles = {
123
+ const testProjectRoleScopeParity = (role, isEnterprise = false) => {
124
+ const member = {
96
125
  [ProjectMemberRole.VIEWER]: PROJECT_VIEWER,
97
126
  [ProjectMemberRole.INTERACTIVE_VIEWER]: PROJECT_INTERACTIVE_VIEWER,
98
127
  [ProjectMemberRole.EDITOR]: PROJECT_EDITOR,
99
128
  [ProjectMemberRole.DEVELOPER]: PROJECT_DEVELOPER,
100
129
  [ProjectMemberRole.ADMIN]: PROJECT_ADMIN,
101
- };
102
- const member = memberProfiles[role];
103
- // Build abilities using role-based approach
130
+ }[role];
104
131
  const roleBuilder = new AbilityBuilder(Ability);
105
132
  projectMemberAbilities[role](member, roleBuilder);
106
- const roleAbility = roleBuilder.build();
107
- // Filter enterprise rules from role-based abilities if not enterprise
108
- const filteredRoleRules = filterEnterpriseRules(roleAbility.rules, isEnterprise);
109
- // Build abilities using scope-based approach
133
+ const filteredRoleRules = filterEnterpriseRules(roleBuilder.build().rules, isEnterprise);
110
134
  const scopeBuilder = new AbilityBuilder(Ability);
111
- const scopes = getAllScopesForRole(role);
112
135
  buildAbilityFromScopes({
113
136
  userUuid: member.userUuid,
114
137
  projectUuid: member.projectUuid,
115
- scopes,
138
+ scopes: getAllScopesForRole(role),
139
+ isEnterprise,
140
+ }, scopeBuilder);
141
+ const scopeRules = scopeBuilder.build().rules.filter((r) => !isProjectParityIgnored(r));
142
+ return checkRoleCoveredByScopes(filteredRoleRules, scopeRules, `${role} (project)`);
143
+ };
144
+ /**
145
+ * Test org-context parity for a role.
146
+ *
147
+ * Compares `applyOrganizationMemberStaticAbilities[role]` against
148
+ * `buildAbilityFromScopes(scopes, { organizationUuid })`. This is the
149
+ * second leg the project-only test never had — it catches drift on
150
+ * org-management scopes (which is what let `manage:Group`,
151
+ * `manage:InviteLink`, etc. silently fall out of the scope vocabulary
152
+ * before this PR).
153
+ */
154
+ const testOrgRoleScopeParity = (role, isEnterprise = false) => {
155
+ const member = {
156
+ [ProjectMemberRole.VIEWER]: ORGANIZATION_VIEWER,
157
+ [ProjectMemberRole.INTERACTIVE_VIEWER]: ORGANIZATION_INTERACTIVE_VIEWER,
158
+ [ProjectMemberRole.EDITOR]: ORGANIZATION_EDITOR,
159
+ [ProjectMemberRole.DEVELOPER]: ORGANIZATION_DEVELOPER,
160
+ [ProjectMemberRole.ADMIN]: ORGANIZATION_ADMIN,
161
+ }[role];
162
+ const orgRole = role;
163
+ const roleBuilder = new AbilityBuilder(Ability);
164
+ applyOrganizationMemberStaticAbilities[orgRole](member, roleBuilder);
165
+ const filteredRoleRules = filterEnterpriseRules(roleBuilder.build().rules, isEnterprise);
166
+ const scopeBuilder = new AbilityBuilder(Ability);
167
+ buildAbilityFromScopes({
168
+ userUuid: member.userUuid,
169
+ organizationUuid: member.organizationUuid,
170
+ scopes: getAllScopesForRole(role),
116
171
  isEnterprise,
117
172
  }, scopeBuilder);
118
- const scopeAbility = scopeBuilder.build();
119
- // Compare the filtered rule sets
120
- const result = compareRuleSets(filteredRoleRules, scopeAbility.rules, role);
121
- return result;
173
+ const scopeRules = scopeBuilder.build().rules;
174
+ return checkRoleCoveredByScopes(filteredRoleRules, scopeRules, `${role} (org)`);
122
175
  };
123
176
  describe('Role to Scope Parity', () => {
124
177
  const systemProjectRoles = [
@@ -128,30 +181,50 @@ describe('Role to Scope Parity', () => {
128
181
  ProjectMemberRole.DEVELOPER,
129
182
  ProjectMemberRole.ADMIN,
130
183
  ];
131
- describe('Non-Enterprise Environment', () => {
132
- it.each(systemProjectRoles)('should have equivalent permissions for %s role', (role) => {
133
- const comparison = testRoleScopeParity(role, false);
134
- if (!comparison.isEqual) {
135
- console.error(`\n=== PARITY MISMATCH FOR ${role.toUpperCase()} ROLE ===`);
136
- comparison.mismatches.forEach((mismatch) => {
137
- console.error(`❌ ${mismatch}`);
138
- });
139
- console.error('=== END MISMATCH REPORT ===\n');
140
- }
141
- expect(comparison.isEqual).toBe(true);
142
- });
184
+ const reportAndAssert = (label, comparison) => {
185
+ if (!comparison.isEqual) {
186
+ console.error(`\n=== ${label} ===`);
187
+ comparison.mismatches.forEach((m) => console.error(`❌ ${m}`));
188
+ console.error('=== END MISMATCH REPORT ===\n');
189
+ }
190
+ expect(comparison.isEqual).toBe(true);
191
+ };
192
+ describe('Project parity (Non-Enterprise)', () => {
193
+ it.each(systemProjectRoles)('project ability ≡ scope build (project context) for %s', (role) => reportAndAssert(`PROJECT PARITY MISMATCH FOR ${role.toUpperCase()}`, testProjectRoleScopeParity(role, false)));
194
+ });
195
+ describe('Project parity (Enterprise)', () => {
196
+ it.each(systemProjectRoles)('project ability ≡ scope build (project context) for %s [EE]', (role) => reportAndAssert(`ENTERPRISE PROJECT PARITY MISMATCH FOR ${role.toUpperCase()}`, testProjectRoleScopeParity(role, true)));
143
197
  });
144
- describe('Enterprise Environment', () => {
145
- it.each(systemProjectRoles)('should have equivalent permissions for %s role in enterprise', (role) => {
146
- const comparison = testRoleScopeParity(role, true);
147
- if (!comparison.isEqual) {
148
- console.error(`\n=== ENTERPRISE PARITY MISMATCH FOR ${role.toUpperCase()} ROLE ===`);
149
- comparison.mismatches.forEach((mismatch) => {
150
- console.error(`❌ ${mismatch}`);
151
- });
152
- console.error('=== END MISMATCH REPORT ===\n');
198
+ describe('Org parity (Non-Enterprise)', () => {
199
+ it.each(systemProjectRoles)('org ability scope build (org context) for %s', (role) => reportAndAssert(`ORG PARITY MISMATCH FOR ${role.toUpperCase()}`, testOrgRoleScopeParity(role, false)));
200
+ });
201
+ describe('Org parity (Enterprise)', () => {
202
+ it.each(systemProjectRoles)('org ability ≡ scope build (org context) for %s [EE]', (role) => reportAndAssert(`ENTERPRISE ORG PARITY MISMATCH FOR ${role.toUpperCase()}`, testOrgRoleScopeParity(role, true)));
203
+ });
204
+ // Coverage assertion. The parity tests above only catch drift on
205
+ // scopes that ARE in some role tier — they can't see scopes that
206
+ // exist in the vocabulary (`scopes.ts`) but appear in NO tier.
207
+ // Those would silently render as dead toggles in the role-builder
208
+ // UI. This test enforces that every scope in `scopes.ts` is in
209
+ // `BASE_ROLE_SCOPES` for at least one tier — closing the loop on
210
+ // "how did the misc orphans drift in the first place?".
211
+ describe('Scope vocabulary coverage', () => {
212
+ it('every scope in scopes.ts must appear in at least one role tier', () => {
213
+ const allScopeNames = new Set(getScopes({ isEnterprise: true }).map((s) => s.name));
214
+ const tieredScopes = new Set();
215
+ systemProjectRoles.forEach((role) => {
216
+ getAllScopesForRole(role).forEach((s) => tieredScopes.add(s));
217
+ });
218
+ const missing = [...allScopeNames].filter((s) => !tieredScopes.has(s));
219
+ if (missing.length > 0) {
220
+ console.error('\n=== SCOPES NOT WIRED TO ANY ROLE TIER ===\n' +
221
+ 'Each of these is in `scopes.ts` but in no role tier. ' +
222
+ 'Add them to `BASE_ROLE_SCOPES[<tier>]` in ' +
223
+ 'roleToScopeMapping.ts.\n');
224
+ missing.forEach((s) => console.error(`❌ ${s}`));
225
+ console.error('=== END ===\n');
153
226
  }
154
- expect(comparison.isEqual).toBe(true);
227
+ expect(missing).toEqual([]);
155
228
  });
156
229
  });
157
230
  // This is helpful for debugging, but it's not a test
@@ -1 +1 @@
1
- {"version":3,"file":"roleToScopeParity.test.js","sourceRoot":"","sources":["../../../src/authorization/roleToScopeParity.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roleToScopeParity.test.js","sourceRoot":"","sources":["../../../src/authorization/roleToScopeParity.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../../../src/authorization/scopes.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,KAAK,EAEV,KAAK,SAAS,EACjB,MAAM,iBAAiB,CAAC;AAuxBzB,eAAO,MAAM,SAAS,GAAI;;CAA6B,KAAG,KAAK,EACX,CAAC;AAErD,eAAO,MAAM,cAAc,GAAI;;CAA6B,KAAG,MAAM,CACjE,SAAS,EACT,KAAK,CAQJ,CAAC"}
1
+ {"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../../../src/authorization/scopes.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,KAAK,EAEV,KAAK,SAAS,EACjB,MAAM,iBAAiB,CAAC;AAuwBzB,eAAO,MAAM,SAAS,GAAI;;CAA6B,KAAG,KAAK,EACX,CAAC;AAErD,eAAO,MAAM,cAAc,GAAI;;CAA6B,KAAG,MAAM,CACjE,SAAS,EACT,KAAK,CAQJ,CAAC"}
@@ -450,6 +450,13 @@ const scopes = [
450
450
  group: ScopeGroup.ORGANIZATION_MANAGEMENT,
451
451
  getConditions: addDefaultUuidCondition,
452
452
  },
453
+ {
454
+ name: 'view:OrganizationWarehouseCredentials',
455
+ description: 'View organization warehouse credentials',
456
+ isEnterprise: true,
457
+ group: ScopeGroup.ORGANIZATION_MANAGEMENT,
458
+ getConditions: addDefaultUuidCondition,
459
+ },
453
460
  {
454
461
  name: 'manage:OrganizationWarehouseCredentials',
455
462
  description: 'Manage organization warehouse credentials',
@@ -595,28 +602,6 @@ const scopes = [
595
602
  group: ScopeGroup.DATA,
596
603
  getConditions: addDefaultUuidCondition,
597
604
  },
598
- // Sharing Scopes
599
- {
600
- name: 'export:DashboardCsv',
601
- description: 'Can export dashboards and charts to CSV',
602
- isEnterprise: false,
603
- group: ScopeGroup.SHARING,
604
- getConditions: () => [],
605
- },
606
- {
607
- name: 'export:DashboardImage',
608
- description: 'Can export dashboards and charts to images',
609
- isEnterprise: false,
610
- group: ScopeGroup.SHARING,
611
- getConditions: () => [],
612
- },
613
- {
614
- name: 'export:DashboardPdf',
615
- description: 'Can export dashboards and charts to PDF',
616
- isEnterprise: false,
617
- group: ScopeGroup.SHARING,
618
- getConditions: () => [],
619
- },
620
605
  // AI Agent
621
606
  {
622
607
  name: 'view:AiAgent',