// original author: radek gruchalski // https://gruchalski.com/posts/2021-06-06-extending-keycloak-required-action-providers/ package com.gruchalski.idp.spi.actions; import org.keycloak.Config; import org.keycloak.authentication.RequiredActionFactory; import org.keycloak.authentication.RequiredActionProvider; import org.keycloak.models.KeycloakSession; import org.keycloak.models.KeycloakSessionFactory; public class UserMustBeApprovedActionFactory implements RequiredActionFactory { private static final UserMustBeApprovedAction SINGLETON = new UserMustBeApprovedAction(); @Override public RequiredActionProvider create(KeycloakSession session) { return SINGLETON; } @Override public void init(Config.Scope scope) {} @Override public void postInit(KeycloakSessionFactory keycloakSessionFactory) {} @Override public void close() {} @Override public String getId() { return UserMustBeApprovedAction.PROVIDER_ID; } @Override public String getDisplayText() { return "User must be approved by an admin."; } }