blob: 85f28469078275f05de137447829688dd9aa4866 [file] [log] [blame]
/*
* 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>();
}
}
}