Skip to content

Commit

Permalink
Merge pull request #4203 from atlanhq/mesh-370-asset-creation-bug
Browse files Browse the repository at this point in the history
MESH-370 | Asset Creation Bug
  • Loading branch information
ankitpatnaik-atlan authored Feb 24, 2025
2 parents 1d4605b + e821419 commit c7ebc09
Showing 1 changed file with 18 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,36 +56,36 @@ public void processAttributes(AtlasStruct entityStruct, EntityMutationContext co

switch (operation) {
case CREATE:
processCreateAsset(entity, vertex);
processCreateAsset(entity, vertex, operation);
break;
case UPDATE:
processUpdateAsset(entity, vertex);
processUpdateAsset(entity, vertex, operation);
break;
}
}

private void processCreateAsset(AtlasEntity entity, AtlasVertex vertex) throws AtlasBaseException {
private void processCreateAsset(AtlasEntity entity, AtlasVertex vertex, EntityMutations.EntityOperation operation) throws AtlasBaseException {
AtlasPerfMetrics.MetricRecorder metricRecorder = RequestContext.get().startMetricRecord("processCreateAsset");

processDomainLinkAttribute(entity, vertex);
processDomainLinkAttribute(entity, vertex, operation);

RequestContext.get().endMetricRecord(metricRecorder);
}


private void processUpdateAsset(AtlasEntity entity, AtlasVertex vertex) throws AtlasBaseException {
private void processUpdateAsset(AtlasEntity entity, AtlasVertex vertex, EntityMutations.EntityOperation operation) throws AtlasBaseException {
AtlasPerfMetrics.MetricRecorder metricRecorder = RequestContext.get().startMetricRecord("processUpdateAsset");

processDomainLinkAttribute(entity, vertex);
processDomainLinkAttribute(entity, vertex, operation);

RequestContext.get().endMetricRecord(metricRecorder);

}

private void processDomainLinkAttribute(AtlasEntity entity, AtlasVertex vertex) throws AtlasBaseException {
private void processDomainLinkAttribute(AtlasEntity entity, AtlasVertex vertex, EntityMutations.EntityOperation operation) throws AtlasBaseException {
if(entity.hasAttribute(DOMAIN_GUIDS)){
validateDomainAssetLinks(entity);
isAuthorized(vertex);
isAuthorized(vertex, operation, entity);
}
}

Expand Down Expand Up @@ -116,16 +116,22 @@ private void validateDomainAssetLinks(AtlasEntity entity) throws AtlasBaseExcept
}
}

private void isAuthorized(AtlasVertex vertex) throws AtlasBaseException {
AtlasEntityHeader sourceEntity = retrieverNoRelation.toAtlasEntityHeaderWithClassifications(vertex);
private void isAuthorized(AtlasVertex vertex, EntityMutations.EntityOperation operation, AtlasEntity entity) throws AtlasBaseException {
AtlasEntityHeader sourceEntity;

if (operation == EntityMutations.EntityOperation.CREATE) {
sourceEntity = new AtlasEntityHeader(entity);
} else {
sourceEntity = retrieverNoRelation.toAtlasEntityHeaderWithClassifications(vertex);
}

// source -> UPDATE + READ
AtlasAuthorizationUtils.verifyAccess(new AtlasEntityAccessRequest(typeRegistry, AtlasPrivilege.ENTITY_UPDATE, sourceEntity),
"update on source Entity, link/unlink operation denied: ", sourceEntity.getAttribute(NAME));

AtlasAuthorizationUtils.verifyAccess(new AtlasEntityAccessRequest(typeRegistry, AtlasPrivilege.ENTITY_READ, sourceEntity),
"read on source Entity, link/unlink operation denied: ", sourceEntity.getAttribute(NAME));

}

}


0 comments on commit c7ebc09

Please sign in to comment.