WIP Audit views
This commit is contained in:
@@ -9,10 +9,13 @@ import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.mifosplatform.infrastructure.core.api.ApiParameterHelper;
|
||||
import org.mifosplatform.infrastructure.core.api.ApiRequestParameterHelper;
|
||||
import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
|
||||
import org.mifosplatform.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
||||
@@ -26,39 +29,71 @@ import org.springframework.stereotype.Component;
|
||||
@Scope("singleton")
|
||||
public class AuditApiResource {
|
||||
|
||||
private final Set<String> RESPONSE_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("id", "apiOperation", "resource", "resourceId",
|
||||
"maker", "madeOnDate", "checker", "checkedOnDate", "commandAsJson"));
|
||||
private final String resourceNameForPermissions = "AUDIT";
|
||||
private final Set<String> RESPONSE_DATA_PARAMETERS = new HashSet<String>(
|
||||
Arrays.asList("id", "apiOperation", "resource", "resourceId",
|
||||
"maker", "madeOnDate", "checker", "checkedOnDate",
|
||||
"commandAsJson"));
|
||||
private final String resourceNameForPermissions = "AUDIT";
|
||||
|
||||
private final PlatformSecurityContext context;
|
||||
private final AuditReadPlatformService auditReadPlatformService;
|
||||
private final ApiRequestParameterHelper apiRequestParameterHelper;
|
||||
private final DefaultToApiJsonSerializer<AuditData> toApiJsonSerializer;
|
||||
private final PlatformSecurityContext context;
|
||||
private final AuditReadPlatformService auditReadPlatformService;
|
||||
private final ApiRequestParameterHelper apiRequestParameterHelper;
|
||||
private final DefaultToApiJsonSerializer<AuditData> toApiJsonSerializer;
|
||||
|
||||
@Autowired
|
||||
public AuditApiResource(final PlatformSecurityContext context, final AuditReadPlatformService auditReadPlatformService,
|
||||
final ApiRequestParameterHelper apiRequestParameterHelper, final DefaultToApiJsonSerializer<AuditData> toApiJsonSerializer) {
|
||||
this.context = context;
|
||||
this.auditReadPlatformService = auditReadPlatformService;
|
||||
this.apiRequestParameterHelper = apiRequestParameterHelper;
|
||||
this.toApiJsonSerializer = toApiJsonSerializer;
|
||||
}
|
||||
@Autowired
|
||||
public AuditApiResource(final PlatformSecurityContext context,
|
||||
final AuditReadPlatformService auditReadPlatformService,
|
||||
final ApiRequestParameterHelper apiRequestParameterHelper,
|
||||
final DefaultToApiJsonSerializer<AuditData> toApiJsonSerializer) {
|
||||
this.context = context;
|
||||
this.auditReadPlatformService = auditReadPlatformService;
|
||||
this.apiRequestParameterHelper = apiRequestParameterHelper;
|
||||
this.toApiJsonSerializer = toApiJsonSerializer;
|
||||
}
|
||||
|
||||
@GET
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String retrieveAuditEntries(@Context final UriInfo uriInfo) {
|
||||
@GET
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String retrieveAuditEntries(@Context final UriInfo uriInfo,
|
||||
@QueryParam("apiOperation") final String apiOperation,
|
||||
@QueryParam("resource") final String resource,
|
||||
@QueryParam("resourceId") final Long resourceId) {
|
||||
|
||||
context.authenticatedUser().validateHasReadPermission(resourceNameForPermissions);
|
||||
context.authenticatedUser().validateHasReadPermission(
|
||||
resourceNameForPermissions);
|
||||
|
||||
// final String extraCriteria = getCriteria(sqlSearch, officeId,
|
||||
// externalId, displayName, firstName, lastName, hierarchy);
|
||||
final String extraCriteria = getExtraCriteria(apiOperation, resource, resourceId);
|
||||
|
||||
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
||||
|
||||
final Collection<AuditData> auditEntries = this.auditReadPlatformService.retrieveAuditEntries(settings.isIncludeJson());
|
||||
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper
|
||||
.process(uriInfo.getQueryParameters());
|
||||
|
||||
return this.toApiJsonSerializer.serialize(settings, auditEntries, RESPONSE_DATA_PARAMETERS);
|
||||
final Collection<AuditData> auditEntries = this.auditReadPlatformService
|
||||
.retrieveAuditEntries(extraCriteria, settings.isIncludeJson());
|
||||
|
||||
return this.toApiJsonSerializer.serialize(settings, auditEntries,
|
||||
RESPONSE_DATA_PARAMETERS);
|
||||
}
|
||||
|
||||
private String getExtraCriteria(String apiOperation, String resource, Long resourceId) {
|
||||
|
||||
String extraCriteria = "";
|
||||
|
||||
if (apiOperation != null) {
|
||||
extraCriteria += " and api_operation like " + ApiParameterHelper.sqlEncodeString(apiOperation);
|
||||
}
|
||||
if (resource != null) {
|
||||
extraCriteria += " and api_resource like " + ApiParameterHelper.sqlEncodeString(resource);
|
||||
}
|
||||
if (resourceId != null) {
|
||||
extraCriteria += " and resource_id = " + resourceId;
|
||||
}
|
||||
|
||||
|
||||
if (StringUtils.isNotBlank(extraCriteria)) {
|
||||
extraCriteria = extraCriteria.substring(4);
|
||||
}
|
||||
|
||||
return extraCriteria;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -4,6 +4,6 @@ import java.util.Collection;
|
||||
|
||||
public interface AuditReadPlatformService {
|
||||
|
||||
Collection<AuditData> retrieveAuditEntries(boolean includeJson);
|
||||
Collection<AuditData> retrieveAuditEntries(String extraCriteria, boolean includeJson);
|
||||
|
||||
}
|
||||
+10
-3
@@ -4,6 +4,7 @@ import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.mifosplatform.infrastructure.core.domain.JdbcSupport;
|
||||
import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSource;
|
||||
@@ -62,13 +63,19 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<AuditData> retrieveAuditEntries(boolean includeJson) {
|
||||
public Collection<AuditData> retrieveAuditEntries(String extraCriteria, boolean includeJson) {
|
||||
context.authenticatedUser();
|
||||
|
||||
final AuditMapper rm = new AuditMapper();
|
||||
final String sql = "select " + rm.schema(includeJson)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
String sql = "select " + rm.schema(includeJson);
|
||||
if (StringUtils.isNotBlank(extraCriteria)) sql += " where (" + extraCriteria + ")";
|
||||
// + " where mc.checker_id is null order by mc.made_on_date DESC, mc.api_resource ASC, mc.api_operation ASC";
|
||||
+ " order by id DESC";
|
||||
sql += " order by id DESC";
|
||||
|
||||
return this.jdbcTemplate.query(sql, rm, new Object[] {});
|
||||
}
|
||||
|
||||
+2
-2
@@ -74,7 +74,7 @@ public class StaffApiResource {
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String retrieveStaff(@Context final UriInfo uriInfo, @QueryParam("sqlSearch") final String sqlSearch,
|
||||
@QueryParam("officeId") final Integer officeId) {
|
||||
@QueryParam("officeId") final Long officeId) {
|
||||
|
||||
context.authenticatedUser().validateHasReadPermission(resourceNameForPermissions);
|
||||
|
||||
@@ -137,7 +137,7 @@ public class StaffApiResource {
|
||||
return this.toApiJsonSerializer.serialize(result);
|
||||
}
|
||||
|
||||
private String getStaffCriteria(final String sqlSearch, final Integer officeId) {
|
||||
private String getStaffCriteria(final String sqlSearch, final Long officeId) {
|
||||
|
||||
String extraCriteria = "";
|
||||
|
||||
|
||||
+2
-2
@@ -81,7 +81,7 @@ public class ClientsApiResource {
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String retrieveAllIndividualClients(@Context final UriInfo uriInfo, @QueryParam("sqlSearch") final String sqlSearch,
|
||||
@QueryParam("officeId") final Integer officeId, @QueryParam("externalId") final String externalId,
|
||||
@QueryParam("officeId") final Long officeId, @QueryParam("externalId") final String externalId,
|
||||
@QueryParam("displayName") final String displayName, @QueryParam("firstName") final String firstName,
|
||||
@QueryParam("lastName") final String lastName, @QueryParam("underHierarchy") final String hierarchy) {
|
||||
|
||||
@@ -95,7 +95,7 @@ public class ClientsApiResource {
|
||||
return this.toApiJsonSerializer.serialize(settings, clients, CLIENT_DATA_PARAMETERS);
|
||||
}
|
||||
|
||||
private String getClientCriteria(String sqlSearch, Integer officeId, String externalId, String displayName, String firstName,
|
||||
private String getClientCriteria(String sqlSearch, Long officeId, String externalId, String displayName, String firstName,
|
||||
String lastName, String hierarchy) {
|
||||
|
||||
String extraCriteria = "";
|
||||
|
||||
Reference in New Issue
Block a user