This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new be31caf18 RANGER-4389: userstore to include internal attributes 
syncSource/isInternal/emailAddress
be31caf18 is described below

commit be31caf189fb0552de52b1b9b6a1ab76fe206a96
Author: Madhan Neethiraj <[email protected]>
AuthorDate: Wed Aug 30 23:32:37 2023 -0700

    RANGER-4389: userstore to include internal attributes 
syncSource/isInternal/emailAddress
---
 .../ranger/plugin/util/RangerCommonConstants.java  |  3 +++
 .../main/java/org/apache/ranger/db/XXGroupDao.java | 17 +++++++++++++
 .../main/java/org/apache/ranger/db/XXUserDao.java  | 29 +++++++++++++++++++---
 .../main/resources/META-INF/jpa_named_queries.xml  |  6 ++---
 4 files changed, 48 insertions(+), 7 deletions(-)

diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerCommonConstants.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerCommonConstants.java
index 54991deca..fa59e8d58 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerCommonConstants.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerCommonConstants.java
@@ -82,6 +82,9 @@ public class RangerCommonConstants {
        public static final String SCRIPT_FIELD_FORWARDED_ADDRESSES     = 
"forwardedAddresses";
        public static final String SCRIPT_FIELD__MATCH_TYPE             = 
"_matchType";
        public static final String SCRIPT_FIELD__NAME                   = 
"_name";
+       public static final String SCRIPT_FIELD__SYNC_SOURCE            = 
"_syncSource";
+       public static final String SCRIPT_FIELD__IS_INTERNAL            = 
"_isInternal";
+       public static final String SCRIPT_FIELD__EMAIL_ADDRESS          = 
"_emailAddress";
        public static final String SCRIPT_FIELD__OWNER_USER             = 
"_ownerUser";
        public static final String SCRIPT_FIELD_REMOTE_IP_ADDRESS       = 
"remoteIPAddress";
        public static final String SCRIPT_FIELD_REQUEST                 = 
"request";
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXGroupDao.java 
b/security-admin/src/main/java/org/apache/ranger/db/XXGroupDao.java
index 942d2514c..f910e92ee 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXGroupDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXGroupDao.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.ranger.common.RangerCommonEnums;
 import org.apache.ranger.common.db.BaseDao;
 import org.apache.ranger.entity.XXGroup;
 import org.apache.ranger.plugin.model.GroupInfo;
@@ -37,6 +38,9 @@ import org.springframework.stereotype.Service;
 
 import javax.persistence.NoResultException;
 
+import static 
org.apache.ranger.plugin.util.RangerCommonConstants.SCRIPT_FIELD__IS_INTERNAL;
+import static 
org.apache.ranger.plugin.util.RangerCommonConstants.SCRIPT_FIELD__SYNC_SOURCE;
+
 @Service
 public class XXGroupDao extends BaseDao<XXGroup> {
        private static final Logger logger = 
LoggerFactory.getLogger(XXGroupDao.class);
@@ -120,6 +124,9 @@ public class XXGroupDao extends BaseDao<XXGroup> {
                String              name        = (String) row[0];
                String              description = (String) row[1];
                String              attributes  = (String) row[2];
+               String              syncSource  = (String) row[3];
+               Number              groupSource = (Number) row[4];
+               Boolean             isInternal  = groupSource != null && 
groupSource.equals(RangerCommonEnums.GROUP_INTERNAL);
                Map<String, String> attrMap     = null;
 
                if (StringUtils.isNotBlank(attributes)) {
@@ -130,6 +137,16 @@ public class XXGroupDao extends BaseDao<XXGroup> {
                        }
                }
 
+               if (attrMap == null) {
+                       attrMap = new HashMap<>();
+               }
+
+               if (StringUtils.isNotBlank(syncSource)) {
+                       attrMap.put(SCRIPT_FIELD__SYNC_SOURCE, syncSource);
+               }
+
+               attrMap.put(SCRIPT_FIELD__IS_INTERNAL, isInternal.toString());
+
                return new GroupInfo(name, description, attrMap);
        }
 }
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXUserDao.java 
b/security-admin/src/main/java/org/apache/ranger/db/XXUserDao.java
index eb6028825..fc1968352 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXUserDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXUserDao.java
@@ -24,6 +24,7 @@ import javax.persistence.NoResultException;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.ranger.common.RangerCommonEnums;
 import org.apache.ranger.common.db.BaseDao;
 import org.apache.ranger.entity.XXUser;
 import org.apache.ranger.plugin.model.UserInfo;
@@ -38,6 +39,8 @@ import java.util.Map;
 import java.util.ArrayList;
 import java.util.HashMap;
 
+import static org.apache.ranger.plugin.util.RangerCommonConstants.*;
+
 
 @Service
 public class XXUserDao extends BaseDao<XXUser> {
@@ -152,10 +155,14 @@ public class XXUserDao extends BaseDao<XXUser> {
        }
 
        private UserInfo toUserInfo(Object[] row) {
-               String              name        = (String) row[0];
-               String              description = (String) row[1];
-               String              attributes  = (String) row[2];
-               Map<String, String> attrMap     = null;
+               String              name         = (String) row[0];
+               String              description  = (String) row[1];
+               String              attributes   = (String) row[2];
+               String              syncSource   = (String) row[3];
+               Number              userSource   = (Number) row[4];
+               String              emailAddress = (String) row[5];
+               Boolean             isInternal   = userSource != null && 
userSource.equals(RangerCommonEnums.USER_APP);
+               Map<String, String> attrMap      = null;
 
                if (StringUtils.isNotBlank(attributes)) {
                        try {
@@ -165,6 +172,20 @@ public class XXUserDao extends BaseDao<XXUser> {
                        }
                }
 
+               if (attrMap == null) {
+                       attrMap = new HashMap<>();
+               }
+
+               if (StringUtils.isNotBlank(syncSource)) {
+                       attrMap.put(SCRIPT_FIELD__SYNC_SOURCE, syncSource);
+               }
+
+               if (StringUtils.isNotBlank(emailAddress)) {
+                       attrMap.put(SCRIPT_FIELD__EMAIL_ADDRESS, emailAddress);
+               }
+
+               attrMap.put(SCRIPT_FIELD__IS_INTERNAL, isInternal.toString());
+
                return new UserInfo(name, description, attrMap);
        }
 }
diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml 
b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
index a099c4b9c..23085a273 100755
--- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
+++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
@@ -162,7 +162,7 @@
        </named-query>
 
        <named-query name="XXGroup.getAllGroupsInfo">
-               <query>SELECT group.name, group.description, 
group.otherAttributes
+               <query>SELECT group.name, group.description, 
group.otherAttributes, group.syncSource, group.groupSource
                         FROM XXGroup group
                        WHERE group.isVisible = 1
                </query>
@@ -186,8 +186,8 @@
        </named-query>
 
        <named-query name="XXUser.getAllUsersInfo">
-               <query>SELECT user.name, user.description, user.otherAttributes
-                        FROM XXUser user
+               <query>SELECT user.name, user.description, 
user.otherAttributes, user.syncSource, pUser.userSource, pUser.emailAddress
+                        FROM XXUser user LEFT OUTER JOIN XXPortalUser pUser ON 
pUser.loginId = user.name
                        WHERE user.isVisible = 1
                </query>
        </named-query>

Reply via email to