You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ni...@apache.org on 2020/09/16 07:57:01 UTC
[atlas] 01/02: ATLAS-3942: delete-type fails if the user doesn't
have permission for type-read
This is an automated email from the ASF dual-hosted git repository.
nixon pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git
commit 51ca7b6918064c22fb196a530b0eb838b2d5d112
Author: Madhan Neethiraj <ma...@apache.org>
AuthorDate: Tue Sep 15 08:51:13 2020 -0700
ATLAS-3942: delete-type fails if the user doesn't have permission for type-read
Signed-off-by: nixonrodrigues <ni...@apache.org>
(cherry picked from commit 1bfaf7add99e30130cabe20e9cedf2f90ca96e0d)
---
.../store/graph/AtlasTypeDefGraphStore.java | 26 +++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java
index 0b1317a..458ec49 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStore.java
@@ -692,7 +692,7 @@ public abstract class AtlasTypeDefGraphStore implements AtlasTypeDefStore {
}
AtlasTypesDef typesDef = new AtlasTypesDef();
- AtlasBaseTypeDef baseTypeDef = getByName(typeName);
+ AtlasBaseTypeDef baseTypeDef = getByNameNoAuthz(typeName);
if (baseTypeDef instanceof AtlasClassificationDef) {
typesDef.setClassificationDefs(Collections.singletonList((AtlasClassificationDef) baseTypeDef));
@@ -775,7 +775,27 @@ public abstract class AtlasTypeDefGraphStore implements AtlasTypeDefStore {
return getTypeDefFromType(type);
}
+ private AtlasBaseTypeDef getByNameNoAuthz(String name) throws AtlasBaseException {
+ if (StringUtils.isBlank(name)) {
+ throw new AtlasBaseException(AtlasErrorCode.TYPE_NAME_INVALID, "", name);
+ }
+
+ AtlasType type = typeRegistry.getType(name);
+
+ return getTypeDefFromTypeWithNoAuthz(type);
+ }
+
private AtlasBaseTypeDef getTypeDefFromType(AtlasType type) throws AtlasBaseException {
+ AtlasBaseTypeDef ret = getTypeDefFromTypeWithNoAuthz(type);
+
+ if (ret != null) {
+ AtlasAuthorizationUtils.verifyAccess(new AtlasTypeAccessRequest(AtlasPrivilege.TYPE_READ, ret), "read type ", ret.getName());
+ }
+
+ return ret;
+ }
+
+ private AtlasBaseTypeDef getTypeDefFromTypeWithNoAuthz(AtlasType type) throws AtlasBaseException {
AtlasBaseTypeDef ret;
switch (type.getTypeCategory()) {
case ENUM:
@@ -804,10 +824,6 @@ public abstract class AtlasTypeDefGraphStore implements AtlasTypeDefStore {
throw new AtlasBaseException(AtlasErrorCode.SYSTEM_TYPE, type.getTypeCategory().name());
}
- if (ret != null) {
- AtlasAuthorizationUtils.verifyAccess(new AtlasTypeAccessRequest(AtlasPrivilege.TYPE_READ, ret), "read type ", ret.getName());
- }
-
return ret;
}