Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
b5a2cf9
feat(search): Add canViewEntityPage permission flag field to search r…
Nov 3, 2025
40636a0
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 3, 2025
84796a0
linter happy
Nov 3, 2025
ee88f39
add canViewEntityPage value to mocks
Nov 3, 2025
fc59572
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 3, 2025
a3d3b79
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 3, 2025
2c60dbc
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 4, 2025
5d7acba
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 4, 2025
1417701
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 4, 2025
4a3a60c
boost test coverage for MapperUtils
Nov 4, 2025
4271055
linter green for MapperUtilsTest
Nov 4, 2025
74877af
address PR feeback to remove canViewEntityPage into extraProperties
Nov 10, 2025
8f85c9c
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 10, 2025
cb15a10
update Mocks.tsx and clean up MapperUtilsText
Nov 10, 2025
005d1dd
linter happy
Nov 10, 2025
8a70373
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 10, 2025
f73ba0c
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 11, 2025
0b4d995
add canViewEntityPage to EntityPrivileges
Nov 12, 2025
540d505
cleanup
Nov 12, 2025
d04ba64
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 12, 2025
3f10e02
test cases for EntityPrivilegesResolver
Nov 12, 2025
a45ca27
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 13, 2025
fedbe6e
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 20, 2025
79341e2
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 21, 2025
85d5e6f
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 22, 2025
eab03ba
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 25, 2025
b187bc4
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 25, 2025
0f60ac1
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 25, 2025
c6048c7
Merge branch 'master' into esimplicity-copilot/search-entity-page-vie…
yorubaphenom Nov 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,14 @@ public static boolean isViewDatasetOperationsAuthorized(
new EntitySpec(resourceUrn.getEntityType(), resourceUrn.toString()));
}

public static boolean isViewEntityPageAuthorized(
final QueryContext context, final Urn resourceUrn) {
return AuthUtil.isAuthorized(
context.getOperationContext(),
PoliciesConfig.VIEW_ENTITY_PAGE_PRIVILEGE,
new EntitySpec(resourceUrn.getEntityType(), resourceUrn.toString()));
}

public static boolean canManageAssetSummary(@Nonnull QueryContext context, @Nonnull Urn urn) {
final DisjunctivePrivilegeGroup orPrivilegeGroups =
new DisjunctivePrivilegeGroup(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,5 +192,6 @@ private void addCommonPrivileges(
result.setCanEditDescription(DescriptionUtils.isAuthorizedToUpdateDescription(context, urn));
result.setCanEditLinks(LinkUtils.isAuthorizedToUpdateLinks(context, urn));
result.setCanManageAssetSummary(AuthorizationUtils.canManageAssetSummary(context, urn));
result.setCanViewEntityPage(AuthorizationUtils.isViewEntityPageAuthorized(context, urn));
}
}
5 changes: 5 additions & 0 deletions datahub-graphql-core/src/main/resources/auth.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,11 @@ type EntityPrivileges {
Whether the user can manage asset summary
"""
canManageAssetSummary: Boolean

"""
Whether the user can view the entity page
"""
canViewEntityPage: Boolean
}

"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -238,4 +238,60 @@ public void testGetDataJobSuccessWithoutPermissions() throws Exception {

assertFalse(result.getCanEditLineage());
}

@Test
public void testCanViewEntityPageWithPermissions() throws Exception {
final Dataset dataset = new Dataset();
dataset.setUrn(datasetUrn);

EntityClient mockClient = Mockito.mock(EntityClient.class);
DataFetchingEnvironment mockEnv = setUpTestWithPermissions(dataset);

EntityPrivilegesResolver resolver = new EntityPrivilegesResolver(mockClient);
EntityPrivileges result = resolver.get(mockEnv).get();

assertTrue(result.getCanViewEntityPage());
}

@Test
public void testCanViewEntityPageWithoutPermissions() throws Exception {
final Dataset dataset = new Dataset();
dataset.setUrn(datasetUrn);

EntityClient mockClient = Mockito.mock(EntityClient.class);
DataFetchingEnvironment mockEnv = setUpTestWithoutPermissions(dataset);

EntityPrivilegesResolver resolver = new EntityPrivilegesResolver(mockClient);
EntityPrivileges result = resolver.get(mockEnv).get();

assertFalse(result.getCanViewEntityPage());
}

@Test
public void testCanViewEntityPageForChartWithPermissions() throws Exception {
final Chart chart = new Chart();
chart.setUrn(chartUrn);

EntityClient mockClient = Mockito.mock(EntityClient.class);
DataFetchingEnvironment mockEnv = setUpTestWithPermissions(chart);

EntityPrivilegesResolver resolver = new EntityPrivilegesResolver(mockClient);
EntityPrivileges result = resolver.get(mockEnv).get();

assertTrue(result.getCanViewEntityPage());
}

@Test
public void testCanViewEntityPageForChartWithoutPermissions() throws Exception {
final Chart chart = new Chart();
chart.setUrn(chartUrn);

EntityClient mockClient = Mockito.mock(EntityClient.class);
DataFetchingEnvironment mockEnv = setUpTestWithoutPermissions(chart);

EntityPrivilegesResolver resolver = new EntityPrivilegesResolver(mockClient);
EntityPrivileges result = resolver.get(mockEnv).get();

assertFalse(result.getCanViewEntityPage());
}
}
Loading