@Override public void postInit(KeycloakSessionFactory factory) { factory.register(event -> { }); }
@Override public void postInit(KeycloakSessionFactory factory) { factory.register(new ProviderEventListener() { @Override public void onEvent(ProviderEvent event) { if (event instanceof PostMigrationEvent) { KeycloakModelUtils.runJobInTransaction(factory, (KeycloakSession session) -> { registerClusterListeners(session); }); } } }); }
@Override public void postInit(KeycloakSessionFactory factory) { factory.register(new ProviderEventListener() { @Override public void onEvent(ProviderEvent event) { if (keysCache == null) { return; } SessionAndKeyHolder cacheKey = getCacheKeyToInvalidate(event); if (cacheKey != null) { log.debugf("Invalidating %s from keysCache", cacheKey); InfinispanPublicKeyStorageProvider provider = (InfinispanPublicKeyStorageProvider) cacheKey.session.getProvider(PublicKeyStorageProvider.class, getId()); provider.addInvalidation(cacheKey.cacheKey); } } }); }
@Override public void postInit(KeycloakSessionFactory factory) { factory.register(new ProviderEventListener() { @Override public void onEvent(ProviderEvent event) { if (event instanceof RealmModel.UserFederationProviderCreationEvent) { RealmModel.UserFederationProviderCreationEvent fedCreationEvent = (RealmModel.UserFederationProviderCreationEvent)event; UserFederationProviderModel providerModel = fedCreationEvent.getCreatedFederationProvider(); if (providerModel.getProviderName().equals(getId())) { onProviderModelCreated(fedCreationEvent.getRealm(), providerModel); } } } }); }
@Override public void postInit(final KeycloakSessionFactory factory) { factory.register(new ProviderEventListener() { @Override public void onEvent(ProviderEvent event) { if (event instanceof PostMigrationEvent) { int preloadTransactionTimeout = getTimeoutForPreloadingSessionsSeconds(); log.debugf("Will preload sessions with transaction timeout %d seconds", preloadTransactionTimeout); KeycloakModelUtils.runJobInTransactionWithTimeout(factory, (KeycloakSession session) -> { keyGenerator = new InfinispanKeyGenerator(); checkRemoteCaches(session); loadPersistentSessions(factory, getMaxErrors(), getSessionsPerSegment()); registerClusterListeners(session); loadSessionsFromRemoteCaches(session); }, preloadTransactionTimeout); } else if (event instanceof UserModel.UserRemovedEvent) { UserModel.UserRemovedEvent userRemovedEvent = (UserModel.UserRemovedEvent) event; InfinispanUserSessionProvider provider = (InfinispanUserSessionProvider) userRemovedEvent.getKeycloakSession().getProvider(UserSessionProvider.class, getId()); provider.onUserRemoved(userRemovedEvent.getRealm(), userRemovedEvent.getUser()); } } }); }
@Override public void postInit(KeycloakSessionFactory factory) { factory.register((event) -> { if (event instanceof RealmModel.RealmRemovedEvent) realmRemoved((RealmModel.RealmRemovedEvent) event); }); }
@Override public void postInit(KeycloakSessionFactory factory) { LOG.debug("BeerResourceProviderFactory::postInit"); /* Depending on how we are deployed, we need to access data model differently. When cold deployed (i.e. provider is either present at "deployments" subdirectory or deployed as a JBoss module), postInit is invoked too early, specifically before initial realm population/migration. In this case we should wait for PostMigrationEvent first. When hot deployed, PostMigrationEvent won't arrive, so we can do stuff right away. NB: hot deployment is NOT yet supported for EntityProviders! Thus, hot deploying BeerCloak will result in exceptions and non-working code. This code is here only to demonstrate correct postInit implementation for all deployment modes. See https://issues.jboss.org/browse/KEYCLOAK-5782 for more. */ if (isHotDeploying()) { LOG.debug("Hot (re)deploy, using current thread"); KeycloakModelUtils.runJobInTransaction(factory, this::initRoles); } else { LOG.debug("Server startup, waiting for PostMigrationEvent"); } factory.register((ProviderEvent event) -> { if (event instanceof RealmModel.RealmPostCreateEvent) realmPostCreate((RealmModel.RealmPostCreateEvent) event); else if (event instanceof PostMigrationEvent) KeycloakModelUtils.runJobInTransaction(factory, this::initRoles); }); }
@Override public void postInit(final KeycloakSessionFactory factory) { KeycloakModelUtils.runJobInTransaction(factory, new KeycloakSessionTask() { @Override public void run(KeycloakSession session) { compatMode = isCompatMode(session); if (compatMode) { compatProviderFactory = new MemUserSessionProviderFactory(); } } }); // Max count of worker errors. Initialization will end with exception when this number is reached final int maxErrors = config.getInt("maxErrors", 20); // Count of sessions to be computed in each segment final int sessionsPerSegment = config.getInt("sessionsPerSegment", 100); factory.register(new ProviderEventListener() { @Override public void onEvent(ProviderEvent event) { if (event instanceof PostMigrationEvent) { loadPersistentSessions(factory, maxErrors, sessionsPerSegment); } } }); }
@Override public void postInit(KeycloakSessionFactory factory) { factory.register(event -> { if (event instanceof ClientRemovedEvent) { KeycloakSession keycloakSession = ((ClientRemovedEvent) event).getKeycloakSession();
@Override public void postInit(KeycloakSessionFactory factory) { factory.register(event -> { if (event instanceof UserRemovedEvent) { KeycloakSession keycloakSession = ((UserRemovedEvent) event).getKeycloakSession();
@Override public void postInit(KeycloakSessionFactory factory) { factory.register(event -> { if (event instanceof RoleRemovedEvent) { KeycloakSession keycloakSession = ((RoleRemovedEvent) event).getKeycloakSession(); AuthorizationProvider provider = keycloakSession.getProvider(AuthorizationProvider.class); StoreFactory storeFactory = provider.getStoreFactory(); PolicyStore policyStore = storeFactory.getPolicyStore(); RoleModel removedRole = ((RoleRemovedEvent) event).getRole(); RoleContainerModel container = removedRole.getContainer(); ResourceServerStore resourceServerStore = storeFactory.getResourceServerStore(); if (container instanceof RealmModel) { RealmModel realm = (RealmModel) container; realm.getClients().forEach(clientModel -> updateResourceServer(clientModel, removedRole, resourceServerStore, policyStore)); } else { ClientModel clientModel = (ClientModel) container; updateResourceServer(clientModel, removedRole, resourceServerStore, policyStore); } } }); }