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() { + } + +}
