Hello Tiry,
Tiry wrote:
Narcis Paslaru a écrit :
Hi all,
I've found an interesting contribution to the audit service in
authentication-audit-contrib.xml :
<extension
target="org.nuxeo.ecm.platform.audit.service.NXAuditEventsService"
point="event">
<event name="loginSuccess" />
<event name="loginFailed" />
<event name="logout" />
</extension>
Is there also a page where one can consult these logs ?
Nope, in the defaut webapp, only the logs associated to documents are
visible.
But you can use Audit API to fetch these logs and disply them in a
xhtml page.
I've developed the page, but it seems that there is a problem in the
service implementation.
There are methods for retrieving events that are bounded to documents,
and another method that only selects events, given an array of id's.
Well, at least this is what the javadoc says.
There seams to be a problem implementing the IN operator in the query
and it fails to list the needed events.
Do you plan to fix this soon, or do you know a workaround for this problem ?
Thanks a lot,
Narcis
PS : Here is the method I'm reffering to :
@SuppressWarnings("unchecked")
public List<LogEntry> *queryLogs*(String[] eventIds, String dateRange)
throws AuditException {
*// :FIXME: This is not working remotelty since the LogEntryImpl
returned
// is not within the api package.*
if (eventIds == null || eventIds.length == 0) {
throw new AuditException("You must give a not null eventId");
}
log.debug("queryLogs() whereClause=" + eventIds);
Class<LogEntry> klass = getLogEntryClass();
List<LogEntry> results = new ArrayList<LogEntry>();
Date limit = null;
try {
limit = DateRangeParser.parseDateRangeQuery(new Date(),
dateRange);
} catch (AuditQueryException aqe) {
throw new AuditException("Wrong date range query. Query was "
+ dateRange, aqe);
}
*// :FIXME: Can't append to find the damned right syntax to build a
// dynamic list for the IN statement.*
for (String eventId : eventIds) {
Query query = em.createQuery("from "
+ klass.getSimpleName()
*+ " log where log.eventId=:eventId" // :FIXME:*
+ " AND log.eventDate >= :date"
+ " ORDER BY log.eventDate DESC");
query.setParameter("eventId", eventId);
query.setParameter("date", limit);
results.addAll(query.getResultList());
}
List<LogEntry> returned = new ArrayList<LogEntry>();
for (LogEntry entry : results) {
returned.add(getLogEntryFactory().createLogEntryBase(entry));
}
return returned;
}
Cheers,
Narcis Paslaru
_______________________________________________
ECM mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm
_______________________________________________
ECM mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm