blob: 3542da2f2180eb797ca439fb55fa7c4240a9fd65 [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.biz;
import javax.servlet.http.HttpServletResponse;
import org.apache.ranger.common.ContextUtil;
import org.apache.ranger.common.SearchCriteria;
import org.apache.ranger.common.UserSessionBase;
import org.apache.ranger.solr.SolrAccessAuditsService;
import org.apache.ranger.view.VXAccessAudit;
import org.apache.ranger.view.VXAccessAuditList;
import org.apache.ranger.view.VXLong;
import org.apache.ranger.view.VXResponse;
import org.apache.ranger.view.VXTrxLog;
import org.apache.ranger.view.VXTrxLogList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class XAuditMgr extends XAuditMgrBase {
@Autowired
SolrAccessAuditsService solrAccessAuditsService;
@Autowired
RangerBizUtil rangerBizUtil;
public VXTrxLog getXTrxLog(Long id) {
checkAdminAccess();
return super.getXTrxLog(id);
}
public VXTrxLog createXTrxLog(VXTrxLog vXTrxLog) {
checkAdminAccess();
return super.createXTrxLog(vXTrxLog);
}
public VXTrxLog updateXTrxLog(VXTrxLog vXTrxLog) {
checkAdminAccess();
return super.updateXTrxLog(vXTrxLog);
}
public void deleteXTrxLog(Long id, boolean force) {
checkAdminAccess();
super.deleteXTrxLog(id, force);
}
public VXTrxLogList searchXTrxLogs(SearchCriteria searchCriteria) {
checkAdminAccess();
return super.searchXTrxLogs(searchCriteria);
}
public VXLong getXTrxLogSearchCount(SearchCriteria searchCriteria) {
checkAdminAccess();
return super.getXTrxLogSearchCount(searchCriteria);
}
public VXAccessAudit createXAccessAudit(VXAccessAudit vXAccessAudit) {
checkAdminAccess();
return super.createXAccessAudit(vXAccessAudit);
}
public VXAccessAudit updateXAccessAudit(VXAccessAudit vXAccessAudit) {
checkAdminAccess();
return super.updateXAccessAudit(vXAccessAudit);
}
public void deleteXAccessAudit(Long id, boolean force) {
checkAdminAccess();
super.deleteXAccessAudit(id, force);
}
public void checkAdminAccess() {
UserSessionBase session = ContextUtil.getCurrentUserSession();
if (session != null) {
if (!session.isUserAdmin()) {
throw restErrorUtil.create403RESTException("Operation" + " denied. LoggedInUser=" + (session != null ? session.getXXPortalUser().getId() : "Not Logged In")
+ " ,isn't permitted to perform the action.");
}
} else {
VXResponse vXResponse = new VXResponse();
vXResponse.setStatusCode(HttpServletResponse.SC_UNAUTHORIZED);
vXResponse.setMsgDesc("Bad Credentials");
throw restErrorUtil.generateRESTException(vXResponse);
}
}
@Override
public VXAccessAuditList searchXAccessAudits(SearchCriteria searchCriteria) {
if (rangerBizUtil.getAuditDBType().equalsIgnoreCase("solr")) {
return solrAccessAuditsService.searchXAccessAudits(searchCriteria);
} else {
return super.searchXAccessAudits(searchCriteria);
}
}
@Override
public VXLong getXAccessAuditSearchCount(SearchCriteria searchCriteria) {
if (rangerBizUtil.getAuditDBType().equalsIgnoreCase("solr")) {
return solrAccessAuditsService.getXAccessAuditSearchCount(searchCriteria);
} else {
return super.getXAccessAuditSearchCount(searchCriteria);
}
}
}