keycloak-developers
Changes
Details
diff --git a/events/api/src/main/java/org/keycloak/events/Event.java b/events/api/src/main/java/org/keycloak/events/Event.java
index 34c992f..0099e83 100644
--- a/events/api/src/main/java/org/keycloak/events/Event.java
+++ b/events/api/src/main/java/org/keycloak/events/Event.java
@@ -17,10 +17,6 @@ public class Event {
private String clientId;
private String userId;
-
- private long fromDate;
-
- private long toDate;
private String sessionId;
@@ -62,22 +58,6 @@ public class Event {
this.clientId = clientId;
}
- public long getFromDate() {
- return fromDate;
- }
-
- public void setFromDate(long fromDate) {
- this.fromDate = fromDate;
- }
-
- public long getToDate() {
- return toDate;
- }
-
- public void setToDate(long toDate) {
- this.toDate = toDate;
- }
-
public String getUserId() {
return userId;
}
@@ -125,8 +105,6 @@ public class Event {
clone.realmId = realmId;
clone.clientId = clientId;
clone.userId = userId;
- clone.fromDate = fromDate;
- clone.toDate = toDate;
clone.sessionId = sessionId;
clone.ipAddress = ipAddress;
clone.error = error;
diff --git a/events/api/src/main/java/org/keycloak/events/EventQuery.java b/events/api/src/main/java/org/keycloak/events/EventQuery.java
index edc5f27..9a555ca 100644
--- a/events/api/src/main/java/org/keycloak/events/EventQuery.java
+++ b/events/api/src/main/java/org/keycloak/events/EventQuery.java
@@ -15,8 +15,6 @@ public interface EventQuery {
public EventQuery user(String userId);
- public EventQuery dateRange(String fromDate, String toDate);
-
public EventQuery fromDate(String fromDate);
public EventQuery toDate(String toDate);
diff --git a/events/jpa/src/main/java/org/keycloak/events/jpa/JpaEventQuery.java b/events/jpa/src/main/java/org/keycloak/events/jpa/JpaEventQuery.java
index 621d830..5e39d17 100644
--- a/events/jpa/src/main/java/org/keycloak/events/jpa/JpaEventQuery.java
+++ b/events/jpa/src/main/java/org/keycloak/events/jpa/JpaEventQuery.java
@@ -66,21 +66,6 @@ public class JpaEventQuery implements EventQuery {
predicates.add(cb.equal(root.get("userId"), userId));
return this;
}
-
- @Override
- public EventQuery dateRange(String fromDate, String toDate) {
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
- Long from = null, to = null;
- try {
- from = df.parse(fromDate).getTime();
- to = df.parse(toDate).getTime();
- } catch (ParseException e) {
- e.printStackTrace();
- }
- predicates.add(cb.greaterThanOrEqualTo(root.<Long>get("time"), from));
- predicates.add(cb.lessThanOrEqualTo(root.<Long>get("time"), to));
- return this;
- }
@Override
public EventQuery fromDate(String fromDate) {
diff --git a/events/mongo/src/main/java/org/keycloak/events/mongo/MongoEventQuery.java b/events/mongo/src/main/java/org/keycloak/events/mongo/MongoEventQuery.java
index 5f4ff3c..51d329b 100755
--- a/events/mongo/src/main/java/org/keycloak/events/mongo/MongoEventQuery.java
+++ b/events/mongo/src/main/java/org/keycloak/events/mongo/MongoEventQuery.java
@@ -56,21 +56,6 @@ public class MongoEventQuery implements EventQuery {
query.put("userId", userId);
return this;
}
-
-
- @Override
- public EventQuery dateRange(String fromDate, String toDate) {
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
- Long from = null, to = null;
- try {
- from = df.parse(fromDate).getTime();
- to = df.parse(toDate).getTime();
- } catch (ParseException e) {
- e.printStackTrace();
- }
- query.put("time", BasicDBObjectBuilder.start("$gte", from).add("$lte", to).get());
- return this;
- }
@Override
public EventQuery fromDate(String fromDate) {
diff --git a/examples/providers/event-store-mem/src/main/java/org/keycloak/examples/providers/events/MemEventQuery.java b/examples/providers/event-store-mem/src/main/java/org/keycloak/examples/providers/events/MemEventQuery.java
index e8fbcff..e60b055 100644
--- a/examples/providers/event-store-mem/src/main/java/org/keycloak/examples/providers/events/MemEventQuery.java
+++ b/examples/providers/event-store-mem/src/main/java/org/keycloak/examples/providers/events/MemEventQuery.java
@@ -77,26 +77,6 @@ public class MemEventQuery implements EventQuery {
}
@Override
- public EventQuery dateRange(String fromDate, String toDate) {
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
- Long from = null, to = null;
- try {
- from = df.parse(fromDate).getTime();
- to = df.parse(toDate).getTime();
- } catch (ParseException e) {
- e.printStackTrace();
- }
-
- Iterator<Event> itr = this.events.iterator();
- while (itr.hasNext()) {
- if (!(itr.next().getFromDate() >= from && itr.next().getToDate() <= to)) {
- itr.remove();
- }
- }
- return this;
- }
-
- @Override
public EventQuery fromDate(String fromDate) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Long from = null;
@@ -108,7 +88,7 @@ public class MemEventQuery implements EventQuery {
Iterator<Event> itr = this.events.iterator();
while (itr.hasNext()) {
- if (!(itr.next().getFromDate() >= from)) {
+ if (!(itr.next().getTime() >= from)) {
itr.remove();
}
}
@@ -127,7 +107,7 @@ public class MemEventQuery implements EventQuery {
Iterator<Event> itr = this.events.iterator();
while (itr.hasNext()) {
- if (!(itr.next().getToDate() <= to)) {
+ if (!(itr.next().getTime() <= to)) {
itr.remove();
}
}
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/realm.js b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/realm.js
index d530f09..e132cb4 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/realm.js
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/realm.js
@@ -1162,7 +1162,7 @@ module.controller('RealmEventsCtrl', function($scope, RealmEvents, realm) {
$scope.query = {
id : realm.realm,
- max : 10,
+ max : 5,
first : 0
}
@@ -1178,7 +1178,7 @@ module.controller('RealmEventsCtrl', function($scope, RealmEvents, realm) {
$scope.reset = function() {
$scope.query.first = 0;
- $scope.query.max = 10;
+ $scope.query.max = 5;
$scope.query.type = '';
$scope.query.client = '';
$scope.query.user = '';
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java b/services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java
index 11c6311..26b4a26 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java
@@ -1,5 +1,24 @@
package org.keycloak.services.resources.admin;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+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.Response;
+import javax.ws.rs.core.UriInfo;
+
import org.jboss.logging.Logger;
import org.jboss.resteasy.annotations.cache.NoCache;
import org.jboss.resteasy.spi.NotFoundException;
@@ -12,7 +31,6 @@ import org.keycloak.exportimport.ApplicationImporter;
import org.keycloak.models.ApplicationModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.ModelDuplicateException;
-import org.keycloak.models.ProtocolMapperModel;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserFederationProviderModel;
import org.keycloak.models.UserSessionModel;
@@ -20,12 +38,8 @@ import org.keycloak.models.cache.CacheRealmProvider;
import org.keycloak.models.cache.CacheUserProvider;
import org.keycloak.models.utils.ModelToRepresentation;
import org.keycloak.models.utils.RepresentationToModel;
-import org.keycloak.protocol.LoginProtocol;
-import org.keycloak.protocol.LoginProtocolFactory;
import org.keycloak.protocol.oidc.TokenManager;
-import org.keycloak.provider.ProviderFactory;
import org.keycloak.representations.adapters.action.GlobalRequestResult;
-import org.keycloak.representations.idm.ProtocolMapperRepresentation;
import org.keycloak.representations.idm.RealmEventsConfigRepresentation;
import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.services.managers.LDAPConnectionTestManager;
@@ -35,24 +49,6 @@ import org.keycloak.services.managers.UsersSyncManager;
import org.keycloak.services.resources.flows.Flows;
import org.keycloak.timer.TimerProvider;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-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.Response;
-import javax.ws.rs.core.UriInfo;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
/**
* Base resource class for the admin REST api of one realm
*
@@ -417,7 +413,7 @@ public class RealmAdminResource {
}
if (dateFrom != null && dateTo != null) {
- query.dateRange(dateFrom, dateTo);
+ query.fromDate(dateFrom).toDate(dateTo);
} else if(dateFrom != null) {
query.fromDate(dateFrom);
} else if(dateTo != null) {
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/events/EventStoreProviderTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/events/EventStoreProviderTest.java
index e985421..f5f81ff 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/events/EventStoreProviderTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/events/EventStoreProviderTest.java
@@ -11,6 +11,9 @@ import org.keycloak.events.EventType;
import org.keycloak.models.KeycloakSession;
import org.keycloak.testsuite.rule.KeycloakRule;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -70,8 +73,76 @@ public class EventStoreProviderTest {
Assert.assertEquals(newest, eventStore.createQuery().maxResults(1).getResultList().get(0).getTime());
Assert.assertEquals(oldest, eventStore.createQuery().firstResult(5).maxResults(1).getResultList().get(0).getTime());
+
+ eventStore.clear("realmId");
+ eventStore.clear("realmId2");
+
+ Assert.assertEquals(0, eventStore.createQuery().getResultList().size());
+
+ String d1 = new String("2015-03-04");
+ String d2 = new String("2015-03-05");
+ String d3 = new String("2015-03-06");
+ String d4 = new String("2015-03-07");
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+ Date date1 = null, date2 = null, date3 = null, date4 = null;
+
+ try {
+ date1 = formatter.parse(d1);
+ date2 = formatter.parse(d2);
+ date3 = formatter.parse(d3);
+ date4 = formatter.parse(d4);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+
+ eventStore.onEvent(create(date1, EventType.LOGIN, "realmId", "clientId", "userId", "127.0.0.1", "error"));
+ eventStore.onEvent(create(date1, EventType.LOGIN, "realmId", "clientId", "userId", "127.0.0.1", "error"));
+ eventStore.onEvent(create(date2, EventType.REGISTER, "realmId", "clientId", "userId", "127.0.0.1", "error"));
+ eventStore.onEvent(create(date2, EventType.REGISTER, "realmId", "clientId", "userId", "127.0.0.1", "error"));
+ eventStore.onEvent(create(date3, EventType.CODE_TO_TOKEN, "realmId", "clientId", "userId2", "127.0.0.1", "error"));
+ eventStore.onEvent(create(date3, EventType.LOGOUT, "realmId", "clientId", "userId2", "127.0.0.1", "error"));
+ eventStore.onEvent(create(date4, EventType.UPDATE_PROFILE, "realmId2", "clientId2", "userId2", "127.0.0.1", "error"));
+ eventStore.onEvent(create(date4, EventType.UPDATE_EMAIL, "realmId2", "clientId2", "userId2", "127.0.0.1", "error"));
+
+ resetSession();
+
+ Assert.assertEquals(6, eventStore.createQuery().client("clientId").getResultList().size());
+ Assert.assertEquals(2, eventStore.createQuery().client("clientId2").getResultList().size());
+
+ Assert.assertEquals(6, eventStore.createQuery().realm("realmId").getResultList().size());
+ Assert.assertEquals(2, eventStore.createQuery().realm("realmId2").getResultList().size());
+
+ Assert.assertEquals(4, eventStore.createQuery().user("userId").getResultList().size());
+ Assert.assertEquals(4, eventStore.createQuery().user("userId2").getResultList().size());
+
+ Assert.assertEquals(2, eventStore.createQuery().type(EventType.LOGIN).getResultList().size());
+ Assert.assertEquals(2, eventStore.createQuery().type(EventType.REGISTER).getResultList().size());
+ Assert.assertEquals(4, eventStore.createQuery().type(EventType.LOGIN, EventType.REGISTER).getResultList().size());
+ Assert.assertEquals(1, eventStore.createQuery().type(EventType.CODE_TO_TOKEN).getResultList().size());
+ Assert.assertEquals(1, eventStore.createQuery().type(EventType.LOGOUT).getResultList().size());
+ Assert.assertEquals(1, eventStore.createQuery().type(EventType.UPDATE_PROFILE).getResultList().size());
+ Assert.assertEquals(1, eventStore.createQuery().type(EventType.UPDATE_EMAIL).getResultList().size());
+
+ Assert.assertEquals(8, eventStore.createQuery().fromDate("2015-03-04").getResultList().size());
+ Assert.assertEquals(8, eventStore.createQuery().toDate("2015-03-07").getResultList().size());
+
+ Assert.assertEquals(4, eventStore.createQuery().fromDate("2015-03-06").getResultList().size());
+ Assert.assertEquals(4, eventStore.createQuery().toDate("2015-03-05").getResultList().size());
+
+ Assert.assertEquals(0, eventStore.createQuery().fromDate("2015-03-08").getResultList().size());
+ Assert.assertEquals(0, eventStore.createQuery().toDate("2015-03-03").getResultList().size());
+
+ Assert.assertEquals(8, eventStore.createQuery().fromDate("2015-03-04").toDate("2015-03-07").getResultList().size());
+ Assert.assertEquals(6, eventStore.createQuery().fromDate("2015-03-05").toDate("2015-03-07").getResultList().size());
+ Assert.assertEquals(4, eventStore.createQuery().fromDate("2015-03-04").toDate("2015-03-05").getResultList().size());
+ Assert.assertEquals(4, eventStore.createQuery().fromDate("2015-03-06").toDate("2015-03-07").getResultList().size());
+
+ Assert.assertEquals(0, eventStore.createQuery().fromDate("2015-03-01").toDate("2015-03-03").getResultList().size());
+ Assert.assertEquals(0, eventStore.createQuery().fromDate("2015-03-08").toDate("2015-03-10").getResultList().size());
+
}
-
+
@Test
public void clear() {
eventStore.onEvent(create(System.currentTimeMillis() - 30000, EventType.LOGIN, "realmId", "clientId", "userId", "127.0.0.1", "error"));
@@ -105,6 +176,10 @@ public class EventStoreProviderTest {
private Event create(EventType event, String realmId, String clientId, String userId, String ipAddress, String error) {
return create(System.currentTimeMillis(), event, realmId, clientId, userId, ipAddress, error);
}
+
+ private Event create(Date date, EventType event, String realmId, String clientId, String userId, String ipAddress, String error) {
+ return create(date.getTime(), event, realmId, clientId, userId, ipAddress, error);
+ }
private Event create(long time, EventType event, String realmId, String clientId, String userId, String ipAddress, String error) {
Event e = new Event();