mirror of
https://git.victorphan.net/basketballcantho/Teedy_custom.git
synced 2026-08-05 22:03:11 +07:00
#20: Audit log displayed on main screen
This commit is contained in:
@@ -20,17 +20,13 @@ import org.apache.log4j.Logger;
|
||||
import org.codehaus.jettison.json.JSONException;
|
||||
import org.codehaus.jettison.json.JSONObject;
|
||||
|
||||
import com.sismics.docs.core.dao.jpa.DocumentDao;
|
||||
import com.sismics.docs.core.dao.jpa.FileDao;
|
||||
import com.sismics.docs.core.dao.jpa.criteria.DocumentCriteria;
|
||||
import com.sismics.docs.core.dao.jpa.dto.DocumentDto;
|
||||
import com.sismics.docs.core.model.context.AppContext;
|
||||
import com.sismics.docs.core.model.jpa.File;
|
||||
import com.sismics.docs.core.util.ConfigUtil;
|
||||
import com.sismics.docs.core.util.DirectoryUtil;
|
||||
import com.sismics.docs.core.util.jpa.PaginatedList;
|
||||
import com.sismics.docs.core.util.jpa.PaginatedLists;
|
||||
import com.sismics.docs.core.util.jpa.SortCriteria;
|
||||
import com.sismics.docs.rest.constant.BaseFunction;
|
||||
import com.sismics.rest.exception.ForbiddenClientException;
|
||||
import com.sismics.rest.exception.ServerException;
|
||||
@@ -64,20 +60,6 @@ public class AppResource extends BaseResource {
|
||||
|
||||
JSONObject response = new JSONObject();
|
||||
|
||||
// Specific data
|
||||
DocumentDao documentDao = new DocumentDao();
|
||||
PaginatedList<DocumentDto> paginatedList = PaginatedLists.create(1, 0);
|
||||
SortCriteria sortCriteria = new SortCriteria(0, true);
|
||||
DocumentCriteria documentCriteria = new DocumentCriteria();
|
||||
documentCriteria.setUserId(principal.getId());
|
||||
try {
|
||||
documentDao.findByCriteria(paginatedList, documentCriteria, sortCriteria);
|
||||
} catch (Exception e) {
|
||||
throw new ServerException("SearchError", "Error searching in documents", e);
|
||||
}
|
||||
response.put("document_count", paginatedList.getResultCount());
|
||||
|
||||
// General data
|
||||
response.put("current_version", currentVersion.replace("-SNAPSHOT", ""));
|
||||
response.put("min_version", minVersion);
|
||||
response.put("total_memory", Runtime.getRuntime().totalMemory());
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.sismics.docs.rest.resource;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
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.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
import org.codehaus.jettison.json.JSONException;
|
||||
import org.codehaus.jettison.json.JSONObject;
|
||||
|
||||
import com.sismics.docs.core.constant.PermType;
|
||||
import com.sismics.docs.core.dao.jpa.AclDao;
|
||||
import com.sismics.docs.core.dao.jpa.AuditLogDao;
|
||||
import com.sismics.docs.core.dao.jpa.criteria.AuditLogCriteria;
|
||||
import com.sismics.docs.core.dao.jpa.dto.AuditLogDto;
|
||||
import com.sismics.docs.core.util.jpa.PaginatedList;
|
||||
import com.sismics.docs.core.util.jpa.PaginatedLists;
|
||||
import com.sismics.docs.core.util.jpa.SortCriteria;
|
||||
import com.sismics.rest.exception.ForbiddenClientException;
|
||||
import com.sismics.rest.exception.ServerException;
|
||||
|
||||
/**
|
||||
* Audit log REST resources.
|
||||
*
|
||||
* @author bgamard
|
||||
*/
|
||||
@Path("/auditlog")
|
||||
public class AuditLogResource extends BaseResource {
|
||||
/**
|
||||
* Returns the list of all logs for a document or user.
|
||||
*
|
||||
* @return Response
|
||||
* @throws JSONException
|
||||
*/
|
||||
@GET
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public Response list(@QueryParam("document") String documentId) throws JSONException {
|
||||
if (!authenticate()) {
|
||||
throw new ForbiddenClientException();
|
||||
}
|
||||
|
||||
// On a document or a user?
|
||||
PaginatedList<AuditLogDto> paginatedList = PaginatedLists.create(100, 0);
|
||||
SortCriteria sortCriteria = new SortCriteria(1, true);
|
||||
AuditLogCriteria criteria = new AuditLogCriteria();
|
||||
if (documentId == null) {
|
||||
// Search logs for a user
|
||||
criteria.setUserId(principal.getId());
|
||||
} else {
|
||||
// Check ACL on the document
|
||||
AclDao aclDao = new AclDao();
|
||||
if (!aclDao.checkPermission(documentId, PermType.READ, principal.getId())) {
|
||||
throw new ForbiddenClientException();
|
||||
}
|
||||
criteria.setDocumentId(documentId);
|
||||
}
|
||||
|
||||
// Search the logs
|
||||
try {
|
||||
AuditLogDao auditLogDao = new AuditLogDao();
|
||||
auditLogDao.findByCriteria(paginatedList, criteria, sortCriteria);
|
||||
} catch (Exception e) {
|
||||
throw new ServerException("SearchError", "Error searching in logs", e);
|
||||
}
|
||||
|
||||
// Assemble the results
|
||||
List<JSONObject> logs = new ArrayList<>();
|
||||
JSONObject response = new JSONObject();
|
||||
for (AuditLogDto auditLogDto : paginatedList.getResultList()) {
|
||||
JSONObject log = new JSONObject();
|
||||
log.put("id", auditLogDto.getId());
|
||||
log.put("target", auditLogDto.getEntityId());
|
||||
log.put("class", auditLogDto.getEntityClass());
|
||||
log.put("type", auditLogDto.getType().name());
|
||||
log.put("message", auditLogDto.getMessage());
|
||||
log.put("create_date", auditLogDto.getCreateTimestamp());
|
||||
logs.add(log);
|
||||
}
|
||||
|
||||
// Send the response
|
||||
response.put("logs", logs);
|
||||
response.put("total", paginatedList.getResultCount());
|
||||
return Response.ok().entity(response).build();
|
||||
}
|
||||
}
|
||||
@@ -447,6 +447,8 @@ public class DocumentResource extends BaseResource {
|
||||
document.setLanguage(language);
|
||||
}
|
||||
|
||||
document = documentDao.update(document);
|
||||
|
||||
// Update tags
|
||||
updateTagList(id, tagList);
|
||||
|
||||
|
||||
@@ -175,6 +175,8 @@ public class TagResource extends BaseResource {
|
||||
tag.setColor(color);
|
||||
}
|
||||
|
||||
tagDao.update(tag);
|
||||
|
||||
JSONObject response = new JSONObject();
|
||||
response.put("id", id);
|
||||
return Response.ok().entity(response).build();
|
||||
|
||||
Reference in New Issue
Block a user