RANGER-953 : Tag Based policies menu is not appearing for 'ADMIN' role users 
after upgrade from 0.5

Signed-off-by: Gautam Borad <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/7e08cd9f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/7e08cd9f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/7e08cd9f

Branch: refs/heads/master
Commit: 7e08cd9f2ac5ab461333e57e250382545b8e547c
Parents: 847a738
Author: Pradeep Agrawal <[email protected]>
Authored: Thu Apr 28 08:43:44 2016 +0530
Committer: Gautam Borad <[email protected]>
Committed: Fri Apr 29 15:04:38 2016 +0530

----------------------------------------------------------------------
 .../java/org/apache/ranger/biz/XUserMgr.java    |   2 +-
 .../patch/PatchTagModulePersmission_J10005.java | 103 +++++++++++++++++++
 2 files changed, 104 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/7e08cd9f/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java 
b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
index 571947c..96f2ee3 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
@@ -265,7 +265,7 @@ public class XUserMgr extends XUserMgrBase {
        }
 
        // Insert or Updating Mapping permissions depending upon roles
-       private void createOrUpdateUserPermisson(VXPortalUser portalUser, Long 
moduleId, boolean isCreate) {
+       public void createOrUpdateUserPermisson(VXPortalUser portalUser, Long 
moduleId, boolean isCreate) {
                VXUserPermission vXUserPermission;
                XXUserPermission xUserPermission = 
daoManager.getXXUserPermission().findByModuleIdAndPortalUserId(portalUser.getId(),
 moduleId);
                if (xUserPermission == null) {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/7e08cd9f/security-admin/src/main/java/org/apache/ranger/patch/PatchTagModulePersmission_J10005.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/patch/PatchTagModulePersmission_J10005.java
 
b/security-admin/src/main/java/org/apache/ranger/patch/PatchTagModulePersmission_J10005.java
new file mode 100644
index 0000000..bda4b30
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/patch/PatchTagModulePersmission_J10005.java
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ranger.patch;
+
+import java.util.List;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.log4j.Logger;
+import org.apache.ranger.db.RangerDaoManager;
+import org.apache.ranger.entity.XXModuleDef;
+import org.apache.ranger.entity.XXPortalUser;
+import org.apache.ranger.service.XPortalUserService;
+import org.apache.ranger.biz.XUserMgr;
+import org.apache.ranger.common.RangerConstants;
+import org.apache.ranger.util.CLIUtil;
+import org.apache.ranger.view.VXPortalUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class PatchTagModulePersmission_J10005 extends BaseLoader {
+       private static Logger logger = Logger
+                       .getLogger(PatchTagModulePersmission_J10005.class);
+
+       @Autowired
+       XUserMgr xUserMgr;
+
+       @Autowired
+       XPortalUserService xPortalUserService;
+
+       @Autowired
+       RangerDaoManager daoManager;
+
+       public static void main(String[] args) {
+               logger.info("main()");
+               try {
+                       PatchTagModulePersmission_J10005 loader = 
(PatchTagModulePersmission_J10005) CLIUtil
+                                       
.getBean(PatchTagModulePersmission_J10005.class);
+
+                       loader.init();
+                       while (loader.isMoreToProcess()) {
+                               loader.load();
+                       }
+                       logger.info("Load complete. Exiting!!!");
+                       System.exit(0);
+               } catch (Exception e) {
+                       logger.error("Error loading", e);
+                       System.exit(1);
+               }
+       }
+
+       @Override
+       public void init() throws Exception {
+               // Do Nothing
+       }
+
+       @Override
+       public void execLoad() {
+               logger.info("==> PermissionPatch.execLoad()");
+               assignPermissionOnTagModuleToAdminUsers();
+               logger.info("<== PermissionPatch.execLoad()");
+       }
+
+       public void assignPermissionOnTagModuleToAdminUsers() {
+               int countUserPermissionUpdated = 0;
+               XXModuleDef xModDef = 
daoManager.getXXModuleDef().findByModuleName(RangerConstants.MODULE_TAG_BASED_POLICIES);
+               if(xModDef==null){
+                       return;
+               }
+               List<XXPortalUser> allAdminUsers = 
daoManager.getXXPortalUser().findByRole(RangerConstants.ROLE_SYS_ADMIN);
+               if(!CollectionUtils.isEmpty(allAdminUsers)){
+                       for (XXPortalUser xPortalUser : allAdminUsers) {
+                               VXPortalUser vPortalUser = 
xPortalUserService.populateViewBean(xPortalUser);
+                               if(vPortalUser!=null){
+                                       
vPortalUser.setUserRoleList(daoManager.getXXPortalUserRole().findXPortalUserRolebyXPortalUserId(vPortalUser.getId()));
+                                       
xUserMgr.createOrUpdateUserPermisson(vPortalUser,xModDef.getId(), false);
+                                       countUserPermissionUpdated += 1;
+                                       logger.info("Added '" + 
xModDef.getModule() + "' permission to user '" + xPortalUser.getLoginId() + 
"'");
+                               }
+                       }
+               }
+               logger.info(countUserPermissionUpdated + " permissions were 
assigned");
+       }
+
+       @Override
+       public void printStats() {
+       }
+
+}

Reply via email to