DefaultThemeSelectorProvider.java
Home
/
services /
src /
main /
java /
org /
keycloak /
theme /
DefaultThemeSelectorProvider.java
package org.keycloak.theme;
import org.keycloak.Config;
import org.keycloak.common.Version;
import org.keycloak.models.ClientModel;
import org.keycloak.models.KeycloakSession;
public class DefaultThemeSelectorProvider implements ThemeSelectorProvider {
public static final String LOGIN_THEME_KEY = "login_theme";
private final KeycloakSession session;
public DefaultThemeSelectorProvider(KeycloakSession session) {
this.session = session;
}
@Override
public String getThemeName(Theme.Type type) {
String name = null;
switch (type) {
case WELCOME:
name = Config.scope("theme").get("welcomeTheme");
break;
case LOGIN:
ClientModel client = session.getContext().getClient();
if (client != null) {
name = client.getAttribute(LOGIN_THEME_KEY);
}
if (name == null || name.isEmpty()) {
name = session.getContext().getRealm().getLoginTheme();
}
break;
case ACCOUNT:
name = session.getContext().getRealm().getAccountTheme();
break;
case EMAIL:
name = session.getContext().getRealm().getEmailTheme();
break;
case ADMIN:
name = session.getContext().getRealm().getAdminTheme();
break;
}
if (name == null || name.isEmpty()) {
name = Config.scope("theme").get("default", Version.NAME.toLowerCase());
}
return name;
}
@Override
public void close() {
}
}