/* * 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.db; import java.util.ArrayList; import java.util.List; import javax.persistence.NoResultException; import org.apache.commons.collections.CollectionUtils; import org.apache.ranger.common.RangerCommonEnums; import org.apache.ranger.common.db.BaseDao; import org.apache.ranger.entity.XXModuleDef; public class XXModuleDefDao extends BaseDao<XXModuleDef>{ public XXModuleDefDao(RangerDaoManagerBase daoManager) { super(daoManager); } public XXModuleDef findByModuleName(String moduleName){ if (moduleName == null) { return null; } try { return (XXModuleDef) getEntityManager() .createNamedQuery("XXModuleDef.findByModuleName") .setParameter("moduleName", moduleName) .getSingleResult(); } catch (Exception e) { } return null; } public XXModuleDef findByModuleId(Long id) { if(id == null) { return new XXModuleDef(); } try { List<XXModuleDef> xxModuelDefs=getEntityManager() .createNamedQuery("XXModuleDef.findByModuleId", tClass) .setParameter("id", id).getResultList(); return xxModuelDefs.get(0); } catch (NoResultException e) { return new XXModuleDef(); } } @SuppressWarnings("unchecked") public List<String> findModuleURLOfPemittedModules(Long userId) { try { String query="select"; query+=" url"; query+=" FROM"; query+=" x_modules_master"; query+=" WHERE"; query+=" url NOT IN (SELECT "; query+=" moduleMaster.url"; query+=" FROM"; query+=" x_modules_master moduleMaster,"; query+=" x_user_module_perm userModulePermission"; query+=" WHERE"; query+=" moduleMaster.id = userModulePermission.module_id"; query+=" AND userModulePermission.user_id = "+userId+")"; query+=" AND "; query+=" id NOT IN (SELECT DISTINCT"; query+=" gmp.module_id"; query+=" FROM"; query+=" x_group_users xgu,"; query+=" x_user xu,"; query+=" x_group_module_perm gmp,"; query+=" x_portal_user xpu"; query+=" WHERE"; query+=" xu.user_name = xpu.login_id"; query+=" AND xu.id = xgu.user_id"; query+=" AND xgu.p_group_id = gmp.group_id"; query+=" AND xpu.id = "+userId+")"; return getEntityManager() .createNativeQuery(query) .getResultList(); } catch (Exception e) { e.printStackTrace(); return null; } } @SuppressWarnings("unchecked") public List<String> findAccessibleModulesByGroupIdList(List<Long> grpIdList) { if (CollectionUtils.isEmpty(grpIdList)) { return new ArrayList<String>(); } try { return getEntityManager().createNamedQuery("XXModuleDef.findAccessibleModulesByGroupId").setParameter("grpIdList", grpIdList) .setParameter("isAllowed", RangerCommonEnums.ACCESS_RESULT_ALLOWED).getResultList(); } catch (NoResultException e) { return new ArrayList<String>(); } } /** * @param portalUserId * @param xUserId * @return This function will return all the modules accessible for particular user, considering all the groups as well in which that user belongs */ @SuppressWarnings("unchecked") public List<String> findAccessibleModulesByUserId(Long portalUserId, Long xUserId) { if (portalUserId == null || xUserId == null) { return new ArrayList<String>(); } try { List<String> userPermList = getEntityManager().createNamedQuery("XXModuleDef.findAllAccessibleModulesByUserId").setParameter("portalUserId", portalUserId) .setParameter("xUserId", xUserId).setParameter("isAllowed", RangerCommonEnums.ACCESS_RESULT_ALLOWED).getResultList(); return userPermList; } catch (NoResultException e) { return new ArrayList<String>(); } } }