-
+
@@ -109,6 +107,16 @@
+
+ | Representation |
+
+
+ {{event.representation}}
+ |
+
diff --git a/model/file/src/main/java/org/keycloak/models/file/adapter/RealmAdapter.java b/model/file/src/main/java/org/keycloak/models/file/adapter/RealmAdapter.java
index 975bf2924f..448871b452 100755
--- a/model/file/src/main/java/org/keycloak/models/file/adapter/RealmAdapter.java
+++ b/model/file/src/main/java/org/keycloak/models/file/adapter/RealmAdapter.java
@@ -46,7 +46,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
-
import org.keycloak.connections.file.InMemoryModel;
import org.keycloak.models.ModelDuplicateException;
import org.keycloak.models.UserModel;
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
index 9a0111994f..9f6245abcf 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
@@ -23,7 +23,6 @@ import org.keycloak.models.utils.KeycloakModelUtils;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
-
import java.security.Key;
import java.security.PrivateKey;
import java.security.PublicKey;
diff --git a/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/RealmAdapter.java b/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/RealmAdapter.java
index 12f9e7724e..cff2ae58be 100755
--- a/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/RealmAdapter.java
+++ b/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/RealmAdapter.java
@@ -2,7 +2,6 @@ package org.keycloak.models.mongo.keycloak.adapters;
import com.mongodb.DBObject;
import com.mongodb.QueryBuilder;
-
import org.keycloak.connections.mongo.api.context.MongoStoreInvocationContext;
import org.keycloak.enums.SslRequired;
import org.keycloak.models.ApplicationModel;
diff --git a/services/src/main/java/org/keycloak/protocol/oidc/OIDCLoginProtocol.java b/services/src/main/java/org/keycloak/protocol/oidc/OIDCLoginProtocol.java
index 3b528e2604..581503718b 100755
--- a/services/src/main/java/org/keycloak/protocol/oidc/OIDCLoginProtocol.java
+++ b/services/src/main/java/org/keycloak/protocol/oidc/OIDCLoginProtocol.java
@@ -26,7 +26,6 @@ import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor;
import org.keycloak.OAuth2Constants;
import org.keycloak.events.Details;
import org.keycloak.events.EventBuilder;
-import org.keycloak.events.EventGroup;
import org.keycloak.events.EventType;
import org.keycloak.models.ApplicationModel;
import org.keycloak.models.ClientSessionModel;
@@ -186,7 +185,7 @@ public class OIDCLoginProtocol implements LoginProtocol {
public Response finishLogout(UserSessionModel userSession) {
String redirectUri = userSession.getNote(OIDCLoginProtocol.LOGOUT_REDIRECT_URI);
String state = userSession.getNote(OIDCLoginProtocol.LOGOUT_STATE_PARAM);
- event.eventGroup(EventGroup.USER).event(EventType.LOGOUT);
+ event.event(EventType.LOGOUT);
if (redirectUri != null) {
event.detail(Details.REDIRECT_URI, redirectUri);
}
diff --git a/services/src/main/java/org/keycloak/protocol/oidc/OIDCLoginProtocolService.java b/services/src/main/java/org/keycloak/protocol/oidc/OIDCLoginProtocolService.java
index 431d05ecec..6c327b1a67 100755
--- a/services/src/main/java/org/keycloak/protocol/oidc/OIDCLoginProtocolService.java
+++ b/services/src/main/java/org/keycloak/protocol/oidc/OIDCLoginProtocolService.java
@@ -4,7 +4,6 @@ import org.jboss.logging.Logger;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.keycloak.OAuth2Constants;
import org.keycloak.events.EventBuilder;
-import org.keycloak.events.EventGroup;
import org.keycloak.jose.jwk.JWK;
import org.keycloak.jose.jwk.JWKBuilder;
import org.keycloak.login.LoginFormsProvider;
@@ -59,7 +58,7 @@ public class OIDCLoginProtocolService {
public OIDCLoginProtocolService(RealmModel realm, EventBuilder event, AuthenticationManager authManager) {
this.realm = realm;
this.tokenManager = new TokenManager();
- this.event = event.eventGroup(EventGroup.USER);
+ this.event = event;
this.authManager = authManager;
}
diff --git a/services/src/main/java/org/keycloak/protocol/oidc/endpoints/AuthorizationEndpoint.java b/services/src/main/java/org/keycloak/protocol/oidc/endpoints/AuthorizationEndpoint.java
index 9cb6c0e278..66197b7faf 100755
--- a/services/src/main/java/org/keycloak/protocol/oidc/endpoints/AuthorizationEndpoint.java
+++ b/services/src/main/java/org/keycloak/protocol/oidc/endpoints/AuthorizationEndpoint.java
@@ -9,7 +9,6 @@ import org.keycloak.constants.AdapterConstants;
import org.keycloak.events.Details;
import org.keycloak.events.Errors;
import org.keycloak.events.EventBuilder;
-import org.keycloak.events.EventGroup;
import org.keycloak.events.EventType;
import org.keycloak.login.LoginFormsProvider;
import org.keycloak.models.ApplicationModel;
@@ -36,7 +35,6 @@ import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
-
import java.util.List;
/**
@@ -90,7 +88,7 @@ public class AuthorizationEndpoint {
this.authManager = authManager;
this.realm = realm;
this.event = event;
- event.eventGroup(EventGroup.USER).event(EventType.LOGIN);
+ event.event(EventType.LOGIN);
}
@GET
diff --git a/services/src/main/java/org/keycloak/protocol/oidc/endpoints/LogoutEndpoint.java b/services/src/main/java/org/keycloak/protocol/oidc/endpoints/LogoutEndpoint.java
index eb27a275ea..a61c8112e7 100755
--- a/services/src/main/java/org/keycloak/protocol/oidc/endpoints/LogoutEndpoint.java
+++ b/services/src/main/java/org/keycloak/protocol/oidc/endpoints/LogoutEndpoint.java
@@ -9,7 +9,6 @@ import org.keycloak.OAuthErrorException;
import org.keycloak.events.Details;
import org.keycloak.events.Errors;
import org.keycloak.events.EventBuilder;
-import org.keycloak.events.EventGroup;
import org.keycloak.events.EventType;
import org.keycloak.models.ApplicationModel;
import org.keycloak.models.ClientModel;
@@ -71,7 +70,7 @@ public class LogoutEndpoint {
this.tokenManager = tokenManager;
this.authManager = authManager;
this.realm = realm;
- this.event = event.eventGroup(EventGroup.USER);
+ this.event = event;
}
/**
diff --git a/services/src/main/java/org/keycloak/protocol/oidc/endpoints/TokenEndpoint.java b/services/src/main/java/org/keycloak/protocol/oidc/endpoints/TokenEndpoint.java
index cbeca604c3..bd211e4e95 100755
--- a/services/src/main/java/org/keycloak/protocol/oidc/endpoints/TokenEndpoint.java
+++ b/services/src/main/java/org/keycloak/protocol/oidc/endpoints/TokenEndpoint.java
@@ -9,7 +9,6 @@ import org.keycloak.constants.AdapterConstants;
import org.keycloak.events.Details;
import org.keycloak.events.Errors;
import org.keycloak.events.EventBuilder;
-import org.keycloak.events.EventGroup;
import org.keycloak.events.EventType;
import org.keycloak.models.ApplicationModel;
import org.keycloak.models.ClientModel;
@@ -41,7 +40,6 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
-
import java.util.Map;
/**
@@ -87,7 +85,7 @@ public class TokenEndpoint {
this.tokenManager = tokenManager;
this.authManager = authManager;
this.realm = realm;
- this.event = event.eventGroup(EventGroup.USER);
+ this.event = event;
}
@POST
diff --git a/services/src/main/java/org/keycloak/protocol/oidc/endpoints/UserInfoEndpoint.java b/services/src/main/java/org/keycloak/protocol/oidc/endpoints/UserInfoEndpoint.java
index bdb807b919..c600df720b 100755
--- a/services/src/main/java/org/keycloak/protocol/oidc/endpoints/UserInfoEndpoint.java
+++ b/services/src/main/java/org/keycloak/protocol/oidc/endpoints/UserInfoEndpoint.java
@@ -20,7 +20,6 @@ package org.keycloak.protocol.oidc.endpoints;
import org.jboss.resteasy.annotations.cache.NoCache;
import org.jboss.resteasy.spi.HttpRequest;
import org.jboss.resteasy.spi.HttpResponse;
-import org.jboss.resteasy.spi.UnauthorizedException;
import org.keycloak.ClientConnection;
import org.keycloak.OAuthErrorException;
import org.keycloak.RSATokenVerifier;
@@ -37,8 +36,6 @@ import org.keycloak.protocol.oidc.TokenManager;
import org.keycloak.representations.AccessToken;
import org.keycloak.services.ErrorResponseException;
import org.keycloak.services.managers.AppAuthManager;
-import org.keycloak.services.managers.AuthenticationManager;
-import org.keycloak.services.managers.EventsManager;
import org.keycloak.services.resources.Cors;
import org.keycloak.services.resources.flows.Urls;
@@ -55,7 +52,6 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriInfo;
-
import java.util.HashMap;
import java.util.Map;
@@ -115,8 +111,7 @@ public class UserInfoEndpoint {
}
private Response issueUserInfo(String tokenString) {
- EventBuilder event = new EventsManager(realm, session, clientConnection).createEventBuilder()
- .eventGroup(EventGroup.USER)
+ EventBuilder event = new EventBuilder(EventGroup.USER, realm, session, clientConnection)
.event(EventType.USER_INFO_REQUEST)
.detail(Details.AUTH_METHOD, Details.VALIDATE_ACCESS_TOKEN);
diff --git a/services/src/main/java/org/keycloak/protocol/oidc/endpoints/ValidateTokenEndpoint.java b/services/src/main/java/org/keycloak/protocol/oidc/endpoints/ValidateTokenEndpoint.java
index a3258a680f..31499d1bd1 100644
--- a/services/src/main/java/org/keycloak/protocol/oidc/endpoints/ValidateTokenEndpoint.java
+++ b/services/src/main/java/org/keycloak/protocol/oidc/endpoints/ValidateTokenEndpoint.java
@@ -9,7 +9,6 @@ import org.keycloak.RSATokenVerifier;
import org.keycloak.events.Details;
import org.keycloak.events.Errors;
import org.keycloak.events.EventBuilder;
-import org.keycloak.events.EventGroup;
import org.keycloak.events.EventType;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
@@ -23,7 +22,6 @@ import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.*;
-
import java.util.HashMap;
import java.util.Map;
@@ -53,7 +51,7 @@ public class ValidateTokenEndpoint {
public ValidateTokenEndpoint(TokenManager tokenManager, RealmModel realm, EventBuilder event) {
this.tokenManager = tokenManager;
this.realm = realm;
- this.event = event.eventGroup(EventGroup.USER);
+ this.event = event;
}
/**
diff --git a/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java b/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
index 53012e862a..023dd3d7b7 100755
--- a/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
@@ -44,7 +44,6 @@ import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.NewCookie;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
-
import java.net.URI;
import java.util.HashSet;
import java.util.LinkedList;
@@ -183,7 +182,7 @@ public class AuthenticationManager {
expireRememberMeCookie(realm, uriInfo, connection);
userSession.setState(UserSessionModel.State.LOGGED_OUT);
String method = userSession.getNote(KEYCLOAK_LOGOUT_PROTOCOL);
- EventBuilder event = new EventsManager(realm, session, connection).createEventBuilder();
+ EventBuilder event = new EventBuilder(EventGroup.USER, realm, session, connection);
LoginProtocol protocol = session.getProvider(LoginProtocol.class, method);
protocol.setRealm(realm)
.setHttpHeaders(headers)
@@ -376,7 +375,7 @@ public class AuthenticationManager {
logger.debugv("processAccessCode: go to oauth page?: {0}",
!isResource);
- event.eventGroup(EventGroup.USER).detail(Details.CODE_ID, clientSession.getId());
+ event.detail(Details.CODE_ID, clientSession.getId());
Set
requiredActions = user.getRequiredActions();
if (!requiredActions.isEmpty()) {
diff --git a/services/src/main/java/org/keycloak/services/managers/EventsManager.java b/services/src/main/java/org/keycloak/services/managers/EventsManager.java
deleted file mode 100755
index 0bd5e5a0ef..0000000000
--- a/services/src/main/java/org/keycloak/services/managers/EventsManager.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.keycloak.services.managers;
-
-import org.jboss.logging.Logger;
-import org.keycloak.ClientConnection;
-import org.keycloak.events.EventBuilder;
-import org.keycloak.events.EventListenerProvider;
-import org.keycloak.events.EventStoreProvider;
-import org.keycloak.events.EventType;
-import org.keycloak.models.KeycloakSession;
-import org.keycloak.models.RealmModel;
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author Stian Thorgersen
- */
-public class EventsManager {
-
- private Logger log = Logger.getLogger(EventsManager.class);
-
- private RealmModel realm;
- private KeycloakSession session;
- private ClientConnection clientConnection;
-
- public EventsManager(RealmModel realm, KeycloakSession session, ClientConnection clientConnection) {
- this.realm = realm;
- this.session = session;
- this.clientConnection = clientConnection;
- }
-
- public EventBuilder createEventBuilder() {
- List listeners = new LinkedList();
-
- if (realm.isEventsEnabled()) {
- EventStoreProvider eventStore = session.getProvider(EventStoreProvider.class);
- if (eventStore != null) {
- listeners.add(eventStore);
- } else {
- log.error("Events enabled, but no event store provider configured");
- }
- }
-
- if (realm.getEventsListeners() != null) {
- for (String id : realm.getEventsListeners()) {
- EventListenerProvider listener = session.getProvider(EventListenerProvider.class, id);
- if (listener != null) {
- listeners.add(listener);
- } else {
- log.error("Event listener '" + id + "' registered, but provider not found");
- }
- }
- }
-
- Set enabledEventTypes = new HashSet();
- for(String type : realm.getEnabledEventTypes()) {
- enabledEventTypes.add(EventType.valueOf(type));
- }
-
- return new EventBuilder(listeners, enabledEventTypes, realm, clientConnection.getRemoteAddr());
- }
-
-}
diff --git a/services/src/main/java/org/keycloak/services/resources/AccountService.java b/services/src/main/java/org/keycloak/services/resources/AccountService.java
index f8cc72aed4..6a0e0b5895 100755
--- a/services/src/main/java/org/keycloak/services/resources/AccountService.java
+++ b/services/src/main/java/org/keycloak/services/resources/AccountService.java
@@ -25,13 +25,11 @@ import org.jboss.logging.Logger;
import org.jboss.resteasy.spi.BadRequestException;
import org.jboss.resteasy.spi.HttpRequest;
import org.keycloak.ClientConnection;
-import org.keycloak.OAuth2Constants;
import org.keycloak.account.AccountPages;
import org.keycloak.account.AccountProvider;
import org.keycloak.events.Details;
import org.keycloak.events.Event;
import org.keycloak.events.EventBuilder;
-import org.keycloak.events.EventGroup;
import org.keycloak.events.EventStoreProvider;
import org.keycloak.events.EventType;
import org.keycloak.models.*;
@@ -47,7 +45,6 @@ import org.keycloak.services.managers.AppAuthManager;
import org.keycloak.services.managers.Auth;
import org.keycloak.services.managers.AuthenticationManager;
import org.keycloak.services.managers.ClientSessionCode;
-import org.keycloak.services.managers.ResourceAdminManager;
import org.keycloak.services.messages.Messages;
import org.keycloak.services.resources.flows.Flows;
import org.keycloak.services.resources.flows.OAuthRedirect;
@@ -72,7 +69,6 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.core.Variant;
-
import java.lang.reflect.Method;
import java.net.URI;
import java.util.HashSet;
@@ -100,7 +96,7 @@ public class AccountService {
}
private static final EventType[] LOG_EVENTS = {EventType.LOGIN, EventType.LOGOUT, EventType.REGISTER, EventType.REMOVE_FEDERATED_IDENTITY, EventType.REMOVE_TOTP, EventType.SEND_RESET_PASSWORD,
- EventType.SEND_VERIFY_EMAIL, EventType.SOCIAL_LINK, EventType.UPDATE_EMAIL, EventType.UPDATE_PASSWORD, EventType.UPDATE_PROFILE, EventType.UPDATE_TOTP, EventType.VERIFY_EMAIL};
+ EventType.SEND_VERIFY_EMAIL, EventType.FEDERATED_IDENTITY_LINK, EventType.UPDATE_EMAIL, EventType.UPDATE_PASSWORD, EventType.UPDATE_PROFILE, EventType.UPDATE_TOTP, EventType.VERIFY_EMAIL};
private static final Set LOG_DETAILS = new HashSet();
static {
@@ -143,7 +139,7 @@ public class AccountService {
public AccountService(RealmModel realm, ApplicationModel application, EventBuilder event) {
this.realm = realm;
this.application = application;
- this.event = event.eventGroup(EventGroup.USER);
+ this.event = event;
this.authManager = new AppAuthManager();
}
diff --git a/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java b/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java
index 251130d587..3f4180186e 100755
--- a/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java
+++ b/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java
@@ -46,7 +46,6 @@ import org.keycloak.services.managers.AppAuthManager;
import org.keycloak.services.managers.AuthenticationManager;
import org.keycloak.services.managers.AuthenticationManager.AuthResult;
import org.keycloak.services.managers.ClientSessionCode;
-import org.keycloak.services.managers.EventsManager;
import org.keycloak.services.messages.Messages;
import org.keycloak.services.resources.flows.Flows;
import org.keycloak.services.resources.flows.Urls;
@@ -62,7 +61,6 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.*;
import javax.ws.rs.core.Response.Status;
-
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -111,7 +109,7 @@ public class IdentityBrokerService implements IdentityProvider.AuthenticationCal
}
public void init() {
- this.event = new EventsManager(this.realmModel, this.session, this.clientConnection).createEventBuilder().event(EventType.IDENTITY_PROVIDER_LOGIN).eventGroup(EventGroup.USER);
+ this.event = new EventBuilder(EventGroup.USER, realmModel, session, clientConnection).event(EventType.IDENTITY_PROVIDER_LOGIN);
}
@GET
@@ -256,7 +254,7 @@ public class IdentityBrokerService implements IdentityProvider.AuthenticationCal
this.event.event(EventType.IDENTITY_PROVIDER_LOGIN)
.detail(Details.REDIRECT_URI, clientSession.getRedirectUri())
- .detail(Details.IDENTITY_PROVIDER_IDENTITY, federatedIdentity.getUsername());
+ .detail(Details.IDENTITY_PROVIDER_USERNAME, federatedIdentity.getUsername());
UserModel federatedUser = this.session.users().getUserByFederatedIdentity(federatedIdentityModel, this.realmModel);
@@ -516,7 +514,7 @@ public class IdentityBrokerService implements IdentityProvider.AuthenticationCal
this.event.clone().user(federatedUser).event(EventType.REGISTER)
.detail(Details.IDENTITY_PROVIDER, federatedIdentityModel.getIdentityProvider())
- .detail(Details.IDENTITY_PROVIDER_IDENTITY, updatedIdentity.getUsername())
+ .detail(Details.IDENTITY_PROVIDER_USERNAME, updatedIdentity.getUsername())
.removeDetail("auth_method")
.success();
diff --git a/services/src/main/java/org/keycloak/services/resources/LoginActionsService.java b/services/src/main/java/org/keycloak/services/resources/LoginActionsService.java
index a8021821de..186c0685b1 100755
--- a/services/src/main/java/org/keycloak/services/resources/LoginActionsService.java
+++ b/services/src/main/java/org/keycloak/services/resources/LoginActionsService.java
@@ -64,7 +64,6 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.Providers;
-
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -134,7 +133,7 @@ public class LoginActionsService {
public LoginActionsService(RealmModel realm, AuthenticationManager authManager, EventBuilder event) {
this.realm = realm;
this.authManager = authManager;
- this.event = event.eventGroup(EventGroup.USER);
+ this.event = event;
}
private boolean checkSsl() {
@@ -539,7 +538,7 @@ public class LoginActionsService {
AttributeFormDataProcessor.process(formData, realm, user);
event.user(user).success();
- event.reset();
+ event = new EventBuilder(EventGroup.USER, realm, session, clientConnection);
return processLogin(code, formData);
}
diff --git a/services/src/main/java/org/keycloak/services/resources/RealmsResource.java b/services/src/main/java/org/keycloak/services/resources/RealmsResource.java
index 22aab14900..a28839cd36 100755
--- a/services/src/main/java/org/keycloak/services/resources/RealmsResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/RealmsResource.java
@@ -16,7 +16,6 @@ import org.keycloak.protocol.oidc.OIDCLoginProtocol;
import org.keycloak.protocol.oidc.OIDCLoginProtocolService;
import org.keycloak.services.managers.AuthenticationManager;
import org.keycloak.services.managers.BruteForceProtector;
-import org.keycloak.services.managers.EventsManager;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.wellknown.WellKnownProvider;
@@ -92,7 +91,7 @@ public class RealmsResource {
// backward compatibility
RealmManager realmManager = new RealmManager(session);
RealmModel realm = locateRealm(name, realmManager);
- EventBuilder event = new EventsManager(realm, session, clientConnection).createEventBuilder();
+ EventBuilder event = new EventBuilder(EventGroup.USER, realm, session, clientConnection);
AuthenticationManager authManager = new AuthenticationManager(protector);
LoginProtocolFactory factory = (LoginProtocolFactory)session.getKeycloakSessionFactory().getProviderFactory(LoginProtocol.class, OIDCLoginProtocol.LOGIN_PROTOCOL);
@@ -108,7 +107,7 @@ public class RealmsResource {
final @PathParam("protocol") String protocol) {
RealmManager realmManager = new RealmManager(session);
RealmModel realm = locateRealm(name, realmManager);
- EventBuilder event = new EventsManager(realm, session, clientConnection).createEventBuilder();
+ EventBuilder event = new EventBuilder(EventGroup.USER, realm, session, clientConnection);
AuthenticationManager authManager = new AuthenticationManager(protector);
LoginProtocolFactory factory = (LoginProtocolFactory)session.getKeycloakSessionFactory().getProviderFactory(LoginProtocol.class, protocol);
@@ -130,8 +129,7 @@ public class RealmsResource {
public LoginActionsService getLoginActionsService(final @PathParam("realm") String name) {
RealmManager realmManager = new RealmManager(session);
RealmModel realm = locateRealm(name, realmManager);
- EventBuilder event = new EventsManager(realm, session, clientConnection).createEventBuilder();
- event.eventGroup(EventGroup.USER);
+ EventBuilder event = new EventBuilder(EventGroup.USER, realm, session, clientConnection);
AuthenticationManager authManager = new AuthenticationManager(protector);
LoginActionsService service = new LoginActionsService(realm, authManager, event);
ResteasyProviderFactory.getInstance().injectProperties(service);
@@ -144,8 +142,7 @@ public class RealmsResource {
public ClientsManagementService getClientsManagementService(final @PathParam("realm") String name) {
RealmManager realmManager = new RealmManager(session);
RealmModel realm = locateRealm(name, realmManager);
- EventBuilder event = new EventsManager(realm, session, clientConnection).createEventBuilder();
- event.eventGroup(EventGroup.USER);
+ EventBuilder event = new EventBuilder(EventGroup.USER, realm, session, clientConnection);
ClientsManagementService service = new ClientsManagementService(realm, event);
ResteasyProviderFactory.getInstance().injectProperties(service);
return service;
@@ -171,8 +168,7 @@ public class RealmsResource {
throw new NotFoundException("account management not enabled");
}
- EventBuilder event = new EventsManager(realm, session, clientConnection).createEventBuilder();
- event.eventGroup(EventGroup.USER);
+ EventBuilder event = new EventBuilder(EventGroup.USER, realm, session, clientConnection);
AccountService accountService = new AccountService(realm, application, event);
ResteasyProviderFactory.getInstance().injectProperties(accountService);
//resourceContext.initResource(accountService);
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/AdminConsole.java b/services/src/main/java/org/keycloak/services/resources/admin/AdminConsole.java
index 19c876f4c3..8ed297ad8a 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/AdminConsole.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/AdminConsole.java
@@ -6,11 +6,8 @@ import org.jboss.resteasy.annotations.cache.NoCache;
import org.jboss.resteasy.spi.HttpRequest;
import org.jboss.resteasy.spi.HttpResponse;
import org.jboss.resteasy.spi.NotFoundException;
-import org.keycloak.ClientConnection;
-import org.keycloak.Version;
-import org.keycloak.events.Details;
-import org.keycloak.events.EventBuilder;
-import org.keycloak.events.EventType;
+import org.keycloak.ClientConnection;
+import org.keycloak.Version;
import org.keycloak.freemarker.BrowserSecurityHeaderSetup;
import org.keycloak.freemarker.FreeMarkerException;
import org.keycloak.freemarker.FreeMarkerUtil;
@@ -40,7 +37,6 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.Providers;
-
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
@@ -72,11 +68,6 @@ public class AdminConsole {
@Context
protected KeycloakSession session;
- /*
- @Context
- protected ResourceContext resourceContext;
- */
-
@Context
protected Providers providers;
@@ -85,11 +76,9 @@ public class AdminConsole {
protected AppAuthManager authManager;
protected RealmModel realm;
- private EventBuilder event;
- public AdminConsole(RealmModel realm, EventBuilder event) {
+ public AdminConsole(RealmModel realm) {
this.realm = realm;
- this.event = event.detail(Details.REALM_NAME, realm.getName());
this.authManager = new AppAuthManager();
}
@@ -169,12 +158,6 @@ public class AdminConsole {
if (consoleApp == null) {
throw new NotFoundException("Could not find admin console application");
}
-
- event.event(EventType.SET_REALM_ADAPTER_CONFIGURATION)
- .client(consoleApp)
- .detail(Details.REALM_REQUIRED_SSL, realm.getSslRequired().name().toLowerCase())
- .success();
-
return new ApplicationManager().toInstallationRepresentation(realm, consoleApp, keycloak.getBaseUri(uriInfo));
}
@@ -219,8 +202,6 @@ public class AdminConsole {
logger.debug("setting up realm access for a realm user");
addRealmAccess(realm, user, realmAccess);
}
-
- event.event(EventType.SET_REALM_USER_PERMISSIONS).user(user).success();
return Response.ok(new WhoAmI(user.getId(), realm.getName(), displayName, createRealm, realmAccess)).build();
}
@@ -264,14 +245,12 @@ public class AdminConsole {
@NoCache
public Response logout() {
URI redirect = AdminRoot.adminConsoleUrl(uriInfo).build(realm.getName());
-
- event.event(EventType.LOGOUT).detail(Details.REDIRECT_URI, redirect.toString()).success();
-
+
return Response.status(302).location(
OIDCLoginProtocolService.logoutUrl(uriInfo).queryParam("redirect_uri", redirect.toString()).build(realm.getName())
).build();
}
-
+
protected RealmModel getAdminstrationRealm(RealmManager realmManager) {
return realmManager.getKeycloakAdminstrationRealm();
}
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/AdminRoot.java b/services/src/main/java/org/keycloak/services/resources/admin/AdminRoot.java
index f50bcd5915..01ad41f76f 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/AdminRoot.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/AdminRoot.java
@@ -8,7 +8,6 @@ import org.jboss.resteasy.spi.NotFoundException;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.jboss.resteasy.spi.UnauthorizedException;
import org.keycloak.ClientConnection;
-import org.keycloak.events.Details;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventGroup;
import org.keycloak.jose.jws.JWSInput;
@@ -19,7 +18,6 @@ import org.keycloak.protocol.oidc.TokenManager;
import org.keycloak.representations.AccessToken;
import org.keycloak.services.managers.AppAuthManager;
import org.keycloak.services.managers.AuthenticationManager;
-import org.keycloak.services.managers.EventsManager;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.services.resources.Cors;
@@ -126,9 +124,7 @@ public class AdminRoot {
public AdminConsole getAdminConsole(final @PathParam("realm") String name) {
RealmManager realmManager = new RealmManager(session);
RealmModel realm = locateRealm(name, realmManager);
- EventBuilder event = new EventsManager(realm, session, clientConnection).createEventBuilder();
- event.eventGroup(EventGroup.ADMIN).detail(Details.REALM_NAME, realm.getName());
- AdminConsole service = new AdminConsole(realm, event);
+ AdminConsole service = new AdminConsole(realm);
ResteasyProviderFactory.getInstance().injectProperties(service);
return service;
}
@@ -191,11 +187,11 @@ public class AdminRoot {
Cors.add(request).allowedOrigins(auth.getToken()).allowedMethods("GET", "PUT", "POST", "DELETE").auth().build(response);
- EventBuilder event = new EventsManager(auth.getRealm(), session, clientConnection).createEventBuilder();
- event.eventGroup(EventGroup.ADMIN);
+ EventBuilder event = new EventBuilder(EventGroup.ADMIN, auth.getRealm(), session, clientConnection);
+ event.user(auth.getUser()).client(auth.getClient());
+
RealmsAdminResource adminResource = new RealmsAdminResource(auth, tokenManager, event);
ResteasyProviderFactory.getInstance().injectProperties(adminResource);
- //resourceContext.initResource(adminResource);
return adminResource;
}
@@ -214,12 +210,9 @@ public class AdminRoot {
logger.debug("authenticated admin access for: " + auth.getUser().getUsername());
}
Cors.add(request).allowedOrigins(auth.getToken()).allowedMethods("GET", "PUT", "POST", "DELETE").auth().build(response);
-
- EventBuilder event = new EventsManager(auth.getRealm(), session, clientConnection).createEventBuilder();
- event.eventGroup(EventGroup.ADMIN);
- ServerInfoAdminResource adminResource = new ServerInfoAdminResource(event);
+
+ ServerInfoAdminResource adminResource = new ServerInfoAdminResource();
ResteasyProviderFactory.getInstance().injectProperties(adminResource);
- //resourceContext.initResource(adminResource);
return adminResource;
}
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ApplicationResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ApplicationResource.java
index 9ec26ee734..0c8e21fe1a 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/ApplicationResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/ApplicationResource.java
@@ -81,7 +81,7 @@ public class ApplicationResource {
this.application = applicationModel;
this.session = session;
this.event = event;
-
+
auth.init(RealmAuth.Resource.APPLICATION);
}
@@ -106,7 +106,7 @@ public class ApplicationResource {
try {
RepresentationToModel.updateApplication(rep, application);
- event.event(EventType.UPDATE_APPLICATION).client(application).success();
+ event.event(EventType.UPDATE_APPLICATION).representation(rep).success();
return Response.noContent().build();
} catch (ModelDuplicateException e) {
@@ -125,10 +125,12 @@ public class ApplicationResource {
@Produces(MediaType.APPLICATION_JSON)
public ApplicationRepresentation getApplication() {
auth.requireView();
-
- event.event(EventType.VIEW_APPLICATION).client(application).success();
- return ModelToRepresentation.toRepresentation(application);
+ ApplicationRepresentation rep = ModelToRepresentation.toRepresentation(application);
+
+ event.event(EventType.VIEW_APPLICATION).representation(rep).success();
+
+ return rep;
}
/**
@@ -187,8 +189,9 @@ public class ApplicationResource {
@NoCache
public void deleteApplication() {
auth.requireManage();
-
- event.event(EventType.DELETE_APPLICATION).client(application).success();
+
+ ApplicationRepresentation rep = getApplication();
+ event.event(EventType.DELETE_APPLICATION).representation(rep).success();
new ApplicationManager(new RealmManager(session)).removeApplication(realm, application);
}
@@ -346,7 +349,7 @@ public class ApplicationResource {
sessions.add(rep);
}
- event.event(EventType.VIEW_APPLICATION_USER_SESSIONS).client(application).success();
+ event.event(EventType.VIEW_APPLICATION_USER_SESSIONS).representation(sessions).success();
return sessions;
}
@@ -360,7 +363,7 @@ public class ApplicationResource {
public GlobalRequestResult logoutAll() {
auth.requireManage();
- event.event(EventType.INVALIDATE_APPLICATION_USER_SESSIONS).client(application).success();
+ event.event(EventType.LOGOUT_APPLICATION_USERS).success();
return new ResourceAdminManager().logoutApplication(uriInfo.getRequestUri(), realm, application);
}
@@ -378,7 +381,7 @@ public class ApplicationResource {
throw new NotFoundException("User not found");
}
- event.event(EventType.INVALIDATE_APPLICATION_USER_SESSION).client(application).user(user).success();
+ event.event(EventType.LOGOUT_USER).success();
new ResourceAdminManager().logoutUserFromApplication(uriInfo.getRequestUri(), realm, application, user, session);
}
@@ -401,7 +404,7 @@ public class ApplicationResource {
if (logger.isDebugEnabled()) logger.debug("Register node: " + node);
application.registerNode(node, Time.currentTime());
- event.event(EventType.REGISTER_APPLICATION_CLUSTER_NODE).client(application)
+ event.event(EventType.REGISTER_APPLICATION_CLUSTER_NODE)
.detail(Details.APPLICATION_CLUSTER_NODE, node)
.success();
}
@@ -425,7 +428,7 @@ public class ApplicationResource {
application.unregisterNode(node);
- event.event(EventType.UNREGISTER_APPLICATION_CLUSTER_NODE).client(application)
+ event.event(EventType.UNREGISTER_APPLICATION_CLUSTER_NODE)
.detail(Details.APPLICATION_CLUSTER_NODE, node)
.success();
}
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ApplicationsResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ApplicationsResource.java
index f907a04453..6bc6c2b249 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/ApplicationsResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/ApplicationsResource.java
@@ -4,7 +4,6 @@ import org.jboss.logging.Logger;
import org.jboss.resteasy.annotations.cache.NoCache;
import org.jboss.resteasy.spi.NotFoundException;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
-import org.keycloak.events.Details;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.models.ApplicationModel;
@@ -78,7 +77,7 @@ public class ApplicationsResource {
}
}
- event.event(EventType.VIEW_REALM_APPLICATIONS).success();
+ event.event(EventType.VIEW_APPLICATIONS).representation(rep).success();
return rep;
}
@@ -94,16 +93,16 @@ public class ApplicationsResource {
@Consumes(MediaType.APPLICATION_JSON)
public Response createApplication(final @Context UriInfo uriInfo, final ApplicationRepresentation rep) {
auth.requireManage();
-
+
try {
ApplicationModel applicationModel = RepresentationToModel.createApplication(session, realm, rep, true);
-
- event.event(EventType.CREATE_APPLICATION).client(applicationModel).success();
+
+ event.event(EventType.CREATE_APPLICATION).representation(rep).success();
+
return Response.created(uriInfo.getAbsolutePathBuilder().path(getApplicationPath(applicationModel)).build()).build();
} catch (ModelDuplicateException e) {
return Flows.errors().exists("Application " + rep.getName() + " already exists");
}
-
}
protected String getApplicationPath(ApplicationModel applicationModel) {
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ClientAttributeCertificateResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ClientAttributeCertificateResource.java
index 670f671e11..e2f01e5a36 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/ClientAttributeCertificateResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/ClientAttributeCertificateResource.java
@@ -6,7 +6,6 @@ import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput;
import org.jboss.resteasy.spi.BadRequestException;
import org.jboss.resteasy.spi.NotAcceptableException;
import org.jboss.resteasy.spi.NotFoundException;
-import org.keycloak.events.Details;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.models.ClientModel;
@@ -101,7 +100,7 @@ public class ClientAttributeCertificateResource {
info.setCertificate(client.getAttribute(certificateAttribute));
info.setPrivateKey(client.getAttribute(privateAttribute));
- event.event(EventType.VIEW_CLIENT_CERTIFICATE).client(client).success();
+ event.event(EventType.VIEW_CLIENT_CERTIFICATE).representation(info).success();
return info;
}
@@ -142,7 +141,7 @@ public class ClientAttributeCertificateResource {
info.setCertificate(client.getAttribute(certificateAttribute));
info.setPrivateKey(client.getAttribute(privateAttribute));
- event.event(EventType.GENERATE_CLIENT_CERTIFICATE).client(client).success();
+ event.event(EventType.UPDATE_CLIENT_CERTIFICATE).representation(info).success();
return info;
}
@@ -200,9 +199,9 @@ public class ClientAttributeCertificateResource {
client.setAttribute(certificateAttribute, certPem);
info.setCertificate(certPem);
}
-
- event.event(EventType.UPLOAD_CLIENT_CERTIFICATE).client(client).success();
-
+
+ event.event(EventType.UPDATE_CLIENT_CERTIFICATE).representation(info).success();
+
return info;
}
@@ -329,7 +328,7 @@ public class ClientAttributeCertificateResource {
stream.close();
byte[] rtn = stream.toByteArray();
- event.event(EventType.DOWNLOAD_CLIENT_CERTIFICATE).client(client).success();
+ event.event(EventType.VIEW_CLIENT_CERTIFICATE).representation(rtn).success();
return rtn;
} catch (Exception e) {
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/IdentityProviderResource.java b/services/src/main/java/org/keycloak/services/resources/admin/IdentityProviderResource.java
index de931b5c2b..85726126e5 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/IdentityProviderResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/IdentityProviderResource.java
@@ -4,7 +4,6 @@ import org.jboss.logging.Logger;
import org.jboss.resteasy.annotations.cache.NoCache;
import org.keycloak.broker.provider.IdentityProvider;
import org.keycloak.broker.provider.IdentityProviderFactory;
-import org.keycloak.events.Details;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.models.ClientIdentityProviderMappingModel;
@@ -61,29 +60,31 @@ public class IdentityProviderResource {
@NoCache
@Produces("application/json")
public IdentityProviderRepresentation getIdentityProvider() {
-
+ IdentityProviderRepresentation rep = ModelToRepresentation.toRepresentation(this.identityProviderModel);
+
event.event(EventType.VIEW_IDENTITY_PROVIDER)
- .detail(Details.IDENTITY_PROVIDER, identityProviderModel.getProviderId())
- .detail(Details.IDENTITY_PROVIDER_ALIAS, identityProviderModel.getAlias())
+ .representation(rep)
.success();
-
- return ModelToRepresentation.toRepresentation(this.identityProviderModel);
+
+ return rep;
}
@DELETE
@NoCache
public Response delete() {
this.auth.requireManage();
+
+ IdentityProviderRepresentation rep = getIdentityProvider();
+
removeClientIdentityProviders(this.realm.getApplications(), this.identityProviderModel);
removeClientIdentityProviders(this.realm.getOAuthClients(), this.identityProviderModel);
-
- this.realm.removeIdentityProviderByAlias(this.identityProviderModel.getAlias());
+
+ this.realm.removeIdentityProviderByAlias(this.identityProviderModel.getAlias());
event.event(EventType.DELETE_IDENTITY_PROVIDER)
- .detail(Details.IDENTITY_PROVIDER, identityProviderModel.getProviderId())
- .detail(Details.IDENTITY_PROVIDER_ALIAS, identityProviderModel.getAlias())
+ .representation(rep)
.success();
-
+
return Response.noContent().build();
}
@@ -110,8 +111,7 @@ public class IdentityProviderResource {
}
event.event(EventType.UPDATE_IDENTITY_PROVIDER)
- .detail(Details.IDENTITY_PROVIDER, identityProviderModel.getProviderId())
- .detail(Details.IDENTITY_PROVIDER_ALIAS, identityProviderModel.getAlias())
+ .representation(providerRep)
.success();
return Response.noContent().build();
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/IdentityProvidersResource.java b/services/src/main/java/org/keycloak/services/resources/admin/IdentityProvidersResource.java
index 19ec30140a..95dd7d4089 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/IdentityProvidersResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/IdentityProvidersResource.java
@@ -8,7 +8,6 @@ import org.jboss.resteasy.spi.NotFoundException;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.keycloak.broker.provider.IdentityProvider;
import org.keycloak.broker.provider.IdentityProviderFactory;
-import org.keycloak.events.Details;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.models.IdentityProviderModel;
@@ -70,8 +69,7 @@ public class IdentityProvidersResource {
if (providerFactory != null) {
event.event(EventType.VIEW_IDENTITY_PROVIDERS)
- .detail(Details.IDENTITY_PROVIDER_FACTORY, providerFactory.getId())
- .detail(Details.IDENTITY_PROVIDER_FACTORY_IDENTITY, providerFactory.getName())
+ .representation(providerFactory)
.success();
return Response.ok(providerFactory).build();
@@ -93,9 +91,8 @@ public class IdentityProvidersResource {
IdentityProviderFactory providerFactory = getProviderFactorytById(providerId);
Map config = providerFactory.parseConfig(inputStream);
- event.event(EventType.IMPORT_IDENTITY_PROVIDER_CONFIG)
- .detail(Details.IDENTITY_PROVIDER_FACTORY, providerFactory.getId())
- .detail(Details.IDENTITY_PROVIDER_FACTORY_IDENTITY, providerFactory.getName())
+ event.event(EventType.CREATE_IDENTITY_PROVIDER)
+ .representation(config)
.success();
return config;
@@ -120,9 +117,8 @@ public class IdentityProvidersResource {
IdentityProviderFactory providerFactory = getProviderFactorytById(providerId);
Map config = providerFactory.parseConfig(inputStream);
- event.event(EventType.IMPORT_IDENTITY_PROVIDER_CONFIG)
- .detail(Details.IDENTITY_PROVIDER_FACTORY, providerFactory.getId())
- .detail(Details.IDENTITY_PROVIDER_FACTORY_IDENTITY, providerFactory.getName())
+ event.event(EventType.CREATE_IDENTITY_PROVIDER)
+ .representation(config)
.success();
return config;
@@ -141,7 +137,7 @@ public class IdentityProvidersResource {
representations.add(ModelToRepresentation.toRepresentation(identityProviderModel));
}
- event.event(EventType.VIEW_IDENTITY_PROVIDERS).success();
+ event.event(EventType.VIEW_IDENTITY_PROVIDERS).representation(representations).success();
return representations;
}
@@ -156,8 +152,7 @@ public class IdentityProvidersResource {
this.realm.addIdentityProvider(RepresentationToModel.toModel(representation));
event.event(EventType.CREATE_IDENTITY_PROVIDER)
- .detail(Details.IDENTITY_PROVIDER, representation.getProviderId())
- .detail(Details.IDENTITY_PROVIDER_ALIAS, representation.getAlias())
+ .representation(representation)
.success();
return Response.created(uriInfo.getAbsolutePathBuilder().path(representation.getProviderId()).build()).build();
@@ -181,13 +176,12 @@ public class IdentityProvidersResource {
if (identityProviderModel == null) {
throw new NotFoundException("Could not find identity provider: " + alias);
}
-
+
IdentityProviderResource identityProviderResource = new IdentityProviderResource(this.auth, realm, session, identityProviderModel, event);
ResteasyProviderFactory.getInstance().injectProperties(identityProviderResource);
event.event(EventType.VIEW_IDENTITY_PROVIDER)
- .detail(Details.IDENTITY_PROVIDER, identityProviderModel.getProviderId())
- .detail(Details.IDENTITY_PROVIDER_ALIAS, identityProviderModel.getAlias())
+ .representation(identityProviderResource)
.success();
return identityProviderResource;
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/OAuthClientResource.java b/services/src/main/java/org/keycloak/services/resources/admin/OAuthClientResource.java
index ea9a69afc5..cc455c4ce1 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/OAuthClientResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/OAuthClientResource.java
@@ -4,7 +4,6 @@ import org.jboss.logging.Logger;
import org.jboss.resteasy.annotations.cache.NoCache;
import org.jboss.resteasy.spi.NotFoundException;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
-import org.keycloak.events.Details;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.models.KeycloakSession;
@@ -108,7 +107,7 @@ public class OAuthClientResource {
try {
RepresentationToModel.updateOAuthClient(session, rep, oauthClient);
- event.event(EventType.UPDATE_OAUTH_CLIENT).client(oauthClient).success();
+ event.event(EventType.UPDATE_OAUTH_CLIENT).representation(rep).success();
return Response.noContent().build();
} catch (ModelDuplicateException e) {
@@ -126,10 +125,12 @@ public class OAuthClientResource {
@Produces(MediaType.APPLICATION_JSON)
public OAuthClientRepresentation getOAuthClient() {
auth.requireView();
-
- event.event(EventType.VIEW_OAUTH_CLIENT).client(oauthClient).success();
-
- return ModelToRepresentation.toRepresentation(oauthClient);
+
+ OAuthClientRepresentation rep = ModelToRepresentation.toRepresentation(oauthClient);
+
+ event.event(EventType.VIEW_OAUTH_CLIENT).representation(rep).success();
+
+ return rep;
}
/**
@@ -160,8 +161,10 @@ public class OAuthClientResource {
@NoCache
public void deleteOAuthClient() {
auth.requireManage();
-
- event.event(EventType.DELETE_OAUTH_CLIENT).client(oauthClient).success();
+
+ OAuthClientRepresentation rep = getOAuthClient();
+
+ event.event(EventType.DELETE_OAUTH_CLIENT).representation(rep).success();
new OAuthClientManager(new RealmManager(session)).removeClient(realm, oauthClient);
}
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/OAuthClientsResource.java b/services/src/main/java/org/keycloak/services/resources/admin/OAuthClientsResource.java
index f76e002bab..4cd0ad1789 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/OAuthClientsResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/OAuthClientsResource.java
@@ -4,7 +4,6 @@ import org.jboss.logging.Logger;
import org.jboss.resteasy.annotations.cache.NoCache;
import org.jboss.resteasy.spi.NotFoundException;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
-import org.keycloak.events.Details;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.models.KeycloakSession;
@@ -52,7 +51,7 @@ public class OAuthClientsResource {
this.realm = realm;
this.session = session;
this.event = event;
-
+
auth.init(RealmAuth.Resource.CLIENT);
}
@@ -79,7 +78,7 @@ public class OAuthClientsResource {
}
}
- event.event(EventType.VIEW_OAUTH_CLIENTS).success();
+ event.event(EventType.VIEW_OAUTH_CLIENTS).representation(rep).success();
return rep;
}
@@ -98,13 +97,12 @@ public class OAuthClientsResource {
try {
OAuthClientModel oauth = RepresentationToModel.createOAuthClient(session, rep, realm);
- event.event(EventType.CREATE_OAUTH_CLIENT).client(oauth).success();
+ event.event(EventType.CREATE_OAUTH_CLIENT).representation(rep).success();
return Response.created(uriInfo.getAbsolutePathBuilder().path(getClientPath(oauth)).build()).build();
} catch (ModelDuplicateException e) {
return Flows.errors().exists("Client " + rep.getName() + " already exists");
}
-
}
protected String getClientPath(OAuthClientModel oauth) {
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 75a5416be8..59b4d0b007 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
@@ -77,13 +77,13 @@ public class RealmAdminResource {
@Context
protected HttpHeaders headers;
-
+
public RealmAdminResource(RealmAuth auth, RealmModel realm, TokenManager tokenManager, EventBuilder event) {
this.auth = auth;
this.realm = realm;
this.tokenManager = tokenManager;
this.event = event;
-
+
auth.init(RealmAuth.Resource.REALM);
}
@@ -181,7 +181,7 @@ public class RealmAdminResource {
rep.setUserCacheEnabled(cache.isEnabled());
}
- event.event(EventType.VIEW_REALM).success();
+ event.event(EventType.VIEW_REALM).representation(rep).success();
return rep;
} else {
@@ -189,9 +189,9 @@ public class RealmAdminResource {
RealmRepresentation rep = new RealmRepresentation();
rep.setRealm(realm.getName());
-
- event.event(EventType.VIEW_REALM).success();
-
+
+ event.event(EventType.VIEW_REALM).representation(rep).success();
+
return rep;
}
}
@@ -226,9 +226,9 @@ public class RealmAdminResource {
for (final UserFederationProviderModel fedProvider : federationProviders) {
usersSyncManager.refreshPeriodicSyncForProvider(session.getKeycloakSessionFactory(), session.getProvider(TimerProvider.class), fedProvider, realm.getId());
}
-
- event.event(EventType.UPDATE_REALM).success();
-
+
+ event.event(EventType.UPDATE_REALM).representation(rep).success();
+
return Response.noContent().build();
} catch (ModelDuplicateException e) {
return Flows.errors().exists("Realm " + rep.getRealm() + " already exists");
@@ -243,11 +243,13 @@ public class RealmAdminResource {
public void deleteRealm() {
auth.requireManage();
+ RealmRepresentation rep = getRealm();
+
if (!new RealmManager(session).removeRealm(realm)) {
throw new NotFoundException("Realm doesn't exist");
}
- event.event(EventType.DELETE_REALM).success();
+ event.event(EventType.DELETE_REALM).representation(rep).success();
}
/**
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/RealmsAdminResource.java b/services/src/main/java/org/keycloak/services/resources/admin/RealmsAdminResource.java
index 947e732140..5bf3120e38 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/RealmsAdminResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/RealmsAdminResource.java
@@ -8,7 +8,6 @@ import org.jboss.resteasy.spi.NotFoundException;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.keycloak.events.Details;
import org.keycloak.events.EventBuilder;
-import org.keycloak.events.EventGroup;
import org.keycloak.events.EventType;
import org.keycloak.models.AdminRoles;
import org.keycloak.models.ApplicationModel;
@@ -142,7 +141,9 @@ public class RealmsAdminResource {
URI location = AdminRoot.realmsUrl(uriInfo).path(realm.getName()).build();
logger.debugv("imported realm success, sending back: {0}", location.toString());
- event.event(EventType.IMPORT_REALM).detail(Details.REALM_NAME, realm.getName()).success();
+ event.event(EventType.CREATE_REALM)
+ .representation(rep)
+ .success();
return Response.created(location).build();
} catch (ModelDuplicateException e) {
@@ -191,9 +192,9 @@ public class RealmsAdminResource {
return Response.created(location).build();
}
- event.event(EventType.UPLOAD_REALM).detail(Details.REALM_NAME, realm.getName()).success();
+ event.event(EventType.CREATE_REALM).representation(rep).success();
}
-
+
return Response.noContent().build();
}
@@ -235,8 +236,8 @@ public class RealmsAdminResource {
} else {
realmAuth = new RealmAuth(auth, realm.getApplicationByName(realmManager.getRealmAdminApplicationName(auth.getRealm())));
}
-
- event.detail(Details.REALM_NAME, realm.getName());
+
+ event.detail(Details.REALM, realm.getName());
RealmAdminResource adminResource = new RealmAdminResource(realmAuth, realm, tokenManager, event);
ResteasyProviderFactory.getInstance().injectProperties(adminResource);
//resourceContext.initResource(adminResource);
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/RoleByIdResource.java b/services/src/main/java/org/keycloak/services/resources/admin/RoleByIdResource.java
index 07759769ae..bab2f7ef80 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/RoleByIdResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/RoleByIdResource.java
@@ -3,7 +3,6 @@ package org.keycloak.services.resources.admin;
import org.jboss.logging.Logger;
import org.jboss.resteasy.annotations.cache.NoCache;
import org.jboss.resteasy.spi.NotFoundException;
-import org.keycloak.events.Details;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.models.ApplicationModel;
@@ -63,13 +62,14 @@ public class RoleByIdResource extends RoleResource {
public RoleRepresentation getRole(final @PathParam("role-id") String id) {
RoleModel roleModel = getRoleModel(id);
auth.requireView();
-
+
+ RoleRepresentation rep = getRole(roleModel);
+
event.event(EventType.VIEW_ROLE)
- .detail(Details.ROLE_ID, roleModel.getId())
- .detail(Details.ROLE_NAME, roleModel.getName())
+ .representation(rep)
.success();
- return getRole(roleModel);
+ return rep;
}
protected RoleModel getRoleModel(String id) {
@@ -102,13 +102,13 @@ public class RoleByIdResource extends RoleResource {
@DELETE
@NoCache
public void deleteRole(final @PathParam("role-id") String id) {
+ RoleRepresentation rep = getRole(id);
RoleModel role = getRoleModel(id);
auth.requireManage();
deleteRole(role);
event.event(EventType.DELETE_ROLE)
- .detail(Details.ROLE_ID, role.getId())
- .detail(Details.ROLE_NAME, role.getName())
+ .representation(rep)
.success();
}
@@ -127,8 +127,7 @@ public class RoleByIdResource extends RoleResource {
updateRole(rep, role);
event.event(EventType.UPDATE_ROLE)
- .detail(Details.ROLE_ID, role.getId())
- .detail(Details.ROLE_NAME, role.getName())
+ .representation(rep)
.success();
}
@@ -145,10 +144,11 @@ public class RoleByIdResource extends RoleResource {
RoleModel role = getRoleModel(id);
auth.requireManage();
addComposites(roles, role);
-
- event.event(EventType.MAKE_ROLE_COMPOSITE)
- .detail(Details.ROLE_ID, role.getId())
- .detail(Details.ROLE_NAME, role.getName())
+
+ RoleRepresentation rep = getRole(id);
+
+ event.event(EventType.UPDATE_ROLE)
+ .representation(rep)
.success();
}
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/RoleContainerResource.java b/services/src/main/java/org/keycloak/services/resources/admin/RoleContainerResource.java
index f01841ddf8..9293d5c862 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/RoleContainerResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/RoleContainerResource.java
@@ -2,7 +2,6 @@ package org.keycloak.services.resources.admin;
import org.jboss.resteasy.annotations.cache.NoCache;
import org.jboss.resteasy.spi.NotFoundException;
-import org.keycloak.events.Details;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.models.ApplicationModel;
@@ -65,7 +64,7 @@ public class RoleContainerResource extends RoleResource {
roles.add(ModelToRepresentation.toRepresentation(roleModel));
}
- event.event(EventType.VIEW_ROLES).success();
+ event.event(EventType.VIEW_ROLES).representation(roles).success();
return roles;
}
@@ -87,8 +86,7 @@ public class RoleContainerResource extends RoleResource {
role.setDescription(rep.getDescription());
event.event(EventType.CREATE_ROLE)
- .detail(Details.ROLE_ID, role.getId())
- .detail(Details.ROLE_NAME, role.getName())
+ .representation(rep)
.success();
return Response.created(uriInfo.getAbsolutePathBuilder().path(role.getName()).build()).build();
@@ -114,13 +112,14 @@ public class RoleContainerResource extends RoleResource {
if (roleModel == null) {
throw new NotFoundException("Could not find role: " + roleName);
}
-
+
+ RoleRepresentation rep = getRole(roleModel);
+
event.event(EventType.VIEW_ROLE)
- .detail(Details.ROLE_ID, roleModel.getId())
- .detail(Details.ROLE_NAME, roleModel.getName())
+ .representation(rep)
.success();
-
- return getRole(roleModel);
+
+ return rep;
}
/**
@@ -134,6 +133,7 @@ public class RoleContainerResource extends RoleResource {
public void deleteRole(final @PathParam("role-name") String roleName) {
auth.requireManage();
+ RoleRepresentation rep = getRole(roleName);
RoleModel role = roleContainer.getRole(roleName);
if (role == null) {
throw new NotFoundException("Could not find role: " + roleName);
@@ -141,8 +141,7 @@ public class RoleContainerResource extends RoleResource {
deleteRole(role);
event.event(EventType.DELETE_ROLE)
- .detail(Details.ROLE_ID, role.getId())
- .detail(Details.ROLE_NAME, role.getName())
+ .representation(rep)
.success();
}
@@ -167,8 +166,7 @@ public class RoleContainerResource extends RoleResource {
updateRole(rep, role);
event.event(EventType.UPDATE_ROLE)
- .detail(Details.ROLE_ID, role.getId())
- .detail(Details.ROLE_NAME, role.getName())
+ .representation(rep)
.success();
return Response.noContent().build();
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java
index df75c51724..ec72cc146f 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java
@@ -3,8 +3,6 @@ package org.keycloak.services.resources.admin;
import org.keycloak.Version;
import org.keycloak.broker.provider.IdentityProvider;
import org.keycloak.broker.provider.IdentityProviderFactory;
-import org.keycloak.events.Details;
-import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventListenerProvider;
import org.keycloak.events.EventType;
import org.keycloak.exportimport.ApplicationImporter;
@@ -19,16 +17,13 @@ import org.keycloak.protocol.LoginProtocolFactory;
import org.keycloak.protocol.ProtocolMapper;
import org.keycloak.provider.ProviderFactory;
import org.keycloak.provider.Spi;
-import org.keycloak.representations.idm.IdentityProviderRepresentation;
import org.keycloak.representations.idm.ProtocolMapperRepresentation;
import org.keycloak.representations.idm.ProtocolMapperTypeRepresentation;
import org.keycloak.social.SocialIdentityProvider;
import javax.ws.rs.GET;
import javax.ws.rs.core.Context;
-
import java.util.Collections;
-import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
@@ -44,13 +39,7 @@ public class ServerInfoAdminResource {
@Context
private KeycloakSession session;
-
- private EventBuilder event;
-
- public ServerInfoAdminResource(EventBuilder event) {
- this.event = event;
- }
-
+
/**
* Returns a list of themes, social providers, auth providers, and event listeners available on this server
*
@@ -70,12 +59,7 @@ public class ServerInfoAdminResource {
setProviders(info);
setProtocolMapperTypes(info);
setBuiltinProtocolMappers(info);
-
- event.event(EventType.VIEW_SERVER_INFO)
- .detail(Details.SERVER_VERSION, info.version)
- .detail(Details.SERVER_TIME, info.serverTime)
- .success();
-
+ setEventTypes(info);
return info;
}
@@ -194,6 +178,15 @@ public class ServerInfoAdminResource {
}
}
+ private void setEventTypes(ServerInfoRepresentation info) {
+ List eventTypes = new LinkedList<>();
+ for (EventType t : EventType.values()) {
+ eventTypes.add(t.name());
+ }
+ Collections.sort(eventTypes);
+ info.setEventTypes(eventTypes);
+ }
+
public static class ServerInfoRepresentation {
private String version;
@@ -213,6 +206,8 @@ public class ServerInfoAdminResource {
private Map> protocolMapperTypes;
private Map> builtinProtocolMappers;
+ private List eventTypes;
+
public ServerInfoRepresentation() {
}
@@ -263,6 +258,14 @@ public class ServerInfoAdminResource {
public void setBuiltinProtocolMappers(Map> builtinProtocolMappers) {
this.builtinProtocolMappers = builtinProtocolMappers;
}
+
+ public List getEventTypes() {
+ return eventTypes;
+ }
+
+ public void setEventTypes(List eventTypes) {
+ this.eventTypes = eventTypes;
+ }
}
}
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/UserFederationResource.java b/services/src/main/java/org/keycloak/services/resources/admin/UserFederationResource.java
index 1dad039a2c..06a852316d 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/UserFederationResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/UserFederationResource.java
@@ -11,7 +11,6 @@ import org.keycloak.models.UserFederationProvider;
import org.keycloak.models.UserFederationProviderFactory;
import org.keycloak.models.UserFederationProviderModel;
import org.keycloak.constants.KerberosConstants;
-import org.keycloak.events.Details;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.models.utils.ModelToRepresentation;
@@ -49,12 +48,12 @@ public class UserFederationResource {
protected RealmModel realm;
protected RealmAuth auth;
-
+
private EventBuilder event;
-
+
@Context
protected UriInfo uriInfo;
-
+
@Context
protected KeycloakSession session;
@@ -85,13 +84,13 @@ public class UserFederationResource {
providers.add(rep);
}
- event.event(EventType.VIEW_PROVIDER_FACTORIES).success();
+ event.event(EventType.VIEW_FEDERATION_PROVIDERS).representation(providers).success();
return providers;
}
/**
- * Get a provider
+ * Get List of available provider factories
*
* @return
*/
@@ -109,7 +108,7 @@ public class UserFederationResource {
rep.setId(factory.getId());
rep.setOptions(((UserFederationProviderFactory)factory).getConfigurationOptions());
- event.event(EventType.VIEW_PROVIDER).detail(Details.PROVIDER_ID, rep.getId()).success();
+ event.event(EventType.VIEW_FEDERATION_PROVIDER).representation(rep).success();
return rep;
}
@@ -135,12 +134,11 @@ public class UserFederationResource {
rep.getFullSyncPeriod(), rep.getChangedSyncPeriod(), rep.getLastSync());
new UsersSyncManager().refreshPeriodicSyncForProvider(session.getKeycloakSessionFactory(), session.getProvider(TimerProvider.class), model, realm.getId());
checkKerberosCredential(model);
-
- event.event(EventType.CREATE_PROVIDER)
- .detail(Details.PROVIDER_ID, model.getId())
- .detail(Details.PROVIDER_NAME, model.getProviderName())
+
+ event.event(EventType.CREATE_FEDERATION_PROVIDER)
+ .representation(rep)
.success();
-
+
return Response.created(uriInfo.getAbsolutePathBuilder().path(model.getId()).build()).build();
}
@@ -164,10 +162,9 @@ public class UserFederationResource {
realm.updateUserFederationProvider(model);
new UsersSyncManager().refreshPeriodicSyncForProvider(session.getKeycloakSessionFactory(), session.getProvider(TimerProvider.class), model, realm.getId());
checkKerberosCredential(model);
-
- event.event(EventType.UPDATE_PROVIDER)
- .detail(Details.PROVIDER_ID, model.getId())
- .detail(Details.PROVIDER_NAME, model.getProviderName())
+
+ event.event(EventType.UPDATE_FEDERATION_PROVIDER)
+ .representation(rep)
.success();
}
@@ -184,13 +181,13 @@ public class UserFederationResource {
auth.requireView();
for (UserFederationProviderModel model : realm.getUserFederationProviders()) {
if (model.getId().equals(id)) {
-
- event.event(EventType.VIEW_PROVIDER)
- .detail(Details.PROVIDER_ID, model.getId())
- .detail(Details.PROVIDER_NAME, model.getProviderName())
+ UserFederationProviderRepresentation rep = ModelToRepresentation.toRepresentation(model);
+
+ event.event(EventType.VIEW_FEDERATION_PROVIDER)
+ .representation(rep)
.success();
- return ModelToRepresentation.toRepresentation(model);
+ return rep;
}
}
@@ -206,13 +203,14 @@ public class UserFederationResource {
@Path("instances/{id}")
public void deleteProviderInstance(@PathParam("id") String id) {
auth.requireManage();
+
+ UserFederationProviderRepresentation rep = getProviderInstance(id);
UserFederationProviderModel model = new UserFederationProviderModel(id, null, null, -1, null, -1, -1, 0);
realm.removeUserFederationProvider(model);
new UsersSyncManager().removePeriodicSyncForProvider(session.getProvider(TimerProvider.class), model);
- event.event(EventType.DELETE_PROVIDER)
- .detail(Details.PROVIDER_ID, model.getId())
- .detail(Details.PROVIDER_NAME, model.getProviderName())
+ event.event(EventType.DELETE_FEDERATION_PROVIDER)
+ .representation(rep)
.success();
}
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java b/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java
index f66ec2e21c..3cc0895eed 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java
@@ -39,7 +39,6 @@ import org.keycloak.representations.idm.UserSessionRepresentation;
import org.keycloak.services.managers.AuthenticationManager;
import org.keycloak.services.managers.ClientSessionCode;
import org.keycloak.services.managers.RealmManager;
-import org.keycloak.services.managers.ResourceAdminManager;
import org.keycloak.services.managers.UserManager;
import org.keycloak.services.resources.flows.Flows;
import org.keycloak.services.resources.flows.Urls;
@@ -96,7 +95,7 @@ public class UsersResource {
@Context
protected HttpHeaders headers;
-
+
public UsersResource(RealmModel realm, RealmAuth auth, TokenManager tokenManager, EventBuilder event) {
this.auth = auth;
this.realm = realm;
@@ -127,14 +126,13 @@ public class UsersResource {
updateUserFromRep(user, rep);
event.event(EventType.UPDATE_USER)
- .user(user)
- .detail(Details.USERNAME, user.getUsername())
+ .representation(rep)
.success();
if (session.getTransaction().isActive()) {
session.getTransaction().commit();
}
-
+
return Response.noContent().build();
} catch (ModelDuplicateException e) {
return Flows.errors().exists("User exists with same username or email");
@@ -166,16 +164,15 @@ public class UsersResource {
try {
UserModel user = session.users().addUser(realm, rep.getUsername());
updateUserFromRep(user, rep);
-
+
event.event(EventType.CREATE_USER)
- .user(user)
- .detail(Details.USERNAME, user.getUsername())
+ .representation(rep)
.success();
-
+
if (session.getTransaction().isActive()) {
session.getTransaction().commit();
}
-
+
return Response.created(uriInfo.getAbsolutePathBuilder().path(user.getUsername()).build()).build();
} catch (ModelDuplicateException e) {
if (session.getTransaction().isActive()) {
@@ -236,13 +233,14 @@ public class UsersResource {
if (user == null) {
throw new NotFoundException("User not found");
}
-
+
+ UserRepresentation rep = ModelToRepresentation.toRepresentation(user);
+
event.event(EventType.VIEW_USER)
- .user(user)
- .detail(Details.USERNAME, user.getUsername())
+ .representation(rep)
.success();
-
- return ModelToRepresentation.toRepresentation(user);
+
+ return rep;
}
/**
@@ -269,8 +267,7 @@ public class UsersResource {
}
event.event(EventType.VIEW_USER_SESSIONS)
- .user(user)
- .detail(Details.USERNAME, user.getUsername())
+ .representation(reps)
.success();
return reps;
@@ -305,9 +302,8 @@ public class UsersResource {
}
}
- event.event(EventType.VIEW_USER_SOCIAL_LOGINS)
- .user(user)
- .detail(Details.USERNAME, user.getUsername())
+ event.event(EventType.VIEW_USER)
+ .representation(result)
.success();
return result;
@@ -366,9 +362,7 @@ public class UsersResource {
AuthenticationManager.backchannelLogout(session, realm, userSession, uriInfo, clientConnection, headers);
}
- event.event(EventType.INVALIDATE_USER_SESSIONS)
- .user(user)
- .detail(Details.USERNAME, user.getUsername())
+ event.event(EventType.LOGOUT_USER_SESSIONS)
.success();
}
@@ -383,6 +377,7 @@ public class UsersResource {
public Response deleteUser(final @PathParam("username") String username) {
auth.requireManage();
+ UserRepresentation rep = getUser(username);
UserModel user = session.users().getUserByUsername(username, realm);
if (user == null) {
throw new NotFoundException("User not found");
@@ -392,8 +387,7 @@ public class UsersResource {
if (removed) {
event.event(EventType.DELETE_USER)
- .user(user)
- .detail(Details.USERNAME, user.getUsername())
+ .representation(rep)
.success();
return Response.noContent().build();
diff --git a/social/twitter/src/main/java/org/keycloak/social/twitter/TwitterIdentityProvider.java b/social/twitter/src/main/java/org/keycloak/social/twitter/TwitterIdentityProvider.java
index e9ced5f4cd..2e908541ec 100755
--- a/social/twitter/src/main/java/org/keycloak/social/twitter/TwitterIdentityProvider.java
+++ b/social/twitter/src/main/java/org/keycloak/social/twitter/TwitterIdentityProvider.java
@@ -29,6 +29,7 @@ import org.keycloak.broker.provider.AuthenticationRequest;
import org.keycloak.broker.provider.FederatedIdentity;
import org.keycloak.broker.provider.IdentityBrokerException;
import org.keycloak.events.EventBuilder;
+import org.keycloak.events.EventGroup;
import org.keycloak.events.EventType;
import org.keycloak.models.ClientModel;
import org.keycloak.models.ClientSessionModel;
@@ -36,7 +37,6 @@ import org.keycloak.models.FederatedIdentityModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.services.managers.ClientSessionCode;
-import org.keycloak.services.managers.EventsManager;
import org.keycloak.services.messages.Messages;
import org.keycloak.services.resources.flows.Flows;
import org.keycloak.social.SocialIdentityProvider;
@@ -156,7 +156,7 @@ public class TwitterIdentityProvider extends AbstractIdentityProvider