Remove Red Hat Single Sign-On product profile from upstream (#14697)
* Remove Red Hat Single Sign-On product profile from upstream Closes #14916 * review suggestions: Remove Red Hat Single Sign-On product profile from upstream Closes #14916 Co-authored-by: Peter Skopek <pskopek@redhat.com>
|
@ -33,24 +33,11 @@
|
||||||
<modules>
|
<modules>
|
||||||
<module>core-public</module>
|
<module>core-public</module>
|
||||||
<module>core</module>
|
<module>core</module>
|
||||||
|
<module>jetty</module>
|
||||||
<module>undertow</module>
|
<module>undertow</module>
|
||||||
<module>tomcat</module>
|
<module>tomcat</module>
|
||||||
<module>wildfly</module>
|
<module>wildfly</module>
|
||||||
<module>servlet-filter</module>
|
<module>servlet-filter</module>
|
||||||
<module>wildfly-elytron</module>
|
<module>wildfly-elytron</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>community</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>!product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<modules>
|
|
||||||
<module>jetty</module>
|
|
||||||
</modules>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -34,12 +34,9 @@ import org.jboss.logging.Logger;
|
||||||
*/
|
*/
|
||||||
public class Profile {
|
public class Profile {
|
||||||
|
|
||||||
public static final String PRODUCT_NAME = ProductValue.RHSSO.getName();
|
|
||||||
public static final String PROJECT_NAME = ProductValue.KEYCLOAK.getName();
|
|
||||||
private static final Logger logger = Logger.getLogger(Profile.class);
|
private static final Logger logger = Logger.getLogger(Profile.class);
|
||||||
|
|
||||||
private static Profile CURRENT;
|
private static Profile CURRENT;
|
||||||
private final ProductValue product;
|
|
||||||
private final ProfileValue profile;
|
private final ProfileValue profile;
|
||||||
private final Set<Feature> disabledFeatures = new HashSet<>();
|
private final Set<Feature> disabledFeatures = new HashSet<>();
|
||||||
private final Set<Feature> previewFeatures = new HashSet<>();
|
private final Set<Feature> previewFeatures = new HashSet<>();
|
||||||
|
@ -50,12 +47,11 @@ public class Profile {
|
||||||
this.propertyResolver = resolver;
|
this.propertyResolver = resolver;
|
||||||
Config config = new Config();
|
Config config = new Config();
|
||||||
|
|
||||||
product = PRODUCT_NAME.toLowerCase().equals(Version.NAME) ? ProductValue.RHSSO : ProductValue.KEYCLOAK;
|
|
||||||
profile = ProfileValue.valueOf(config.getProfile().toUpperCase());
|
profile = ProfileValue.valueOf(config.getProfile().toUpperCase());
|
||||||
|
|
||||||
for (Feature f : Feature.values()) {
|
for (Feature f : Feature.values()) {
|
||||||
Boolean enabled = config.getConfig(f);
|
Boolean enabled = config.getConfig(f);
|
||||||
Type type = product.equals(ProductValue.RHSSO) ? f.getTypeProduct() : f.getTypeProject();
|
Type type = f.getType();
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case DEFAULT:
|
case DEFAULT:
|
||||||
|
@ -142,10 +138,6 @@ public class Profile {
|
||||||
return !getInstance().disabledFeatures.contains(feature);
|
return !getInstance().disabledFeatures.contains(feature);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isProduct() {
|
|
||||||
return getInstance().profile.equals(ProfileValue.PRODUCT);
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum Type {
|
public enum Type {
|
||||||
DEFAULT,
|
DEFAULT,
|
||||||
DISABLED_BY_DEFAULT,
|
DISABLED_BY_DEFAULT,
|
||||||
|
@ -195,55 +187,25 @@ public class Profile {
|
||||||
JS_ADAPTER("Host keycloak.js and keycloak-authz.js through the Keycloak sever", Type.DEFAULT);
|
JS_ADAPTER("Host keycloak.js and keycloak-authz.js through the Keycloak sever", Type.DEFAULT);
|
||||||
|
|
||||||
|
|
||||||
private final Type typeProject;
|
private final Type type;
|
||||||
private final Type typeProduct;
|
|
||||||
private String label;
|
private String label;
|
||||||
|
|
||||||
Feature(String label, Type type) {
|
Feature(String label, Type type) {
|
||||||
this(label, type, type);
|
|
||||||
}
|
|
||||||
|
|
||||||
Feature(String label, Type typeProject, Type typeProduct) {
|
|
||||||
this.label = label;
|
this.label = label;
|
||||||
this.typeProject = typeProject;
|
this.type = type;
|
||||||
this.typeProduct = typeProduct;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLabel() {
|
public String getLabel() {
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Type getTypeProject() {
|
public Type getType() {
|
||||||
return typeProject;
|
return type;
|
||||||
}
|
|
||||||
|
|
||||||
public Type getTypeProduct() {
|
|
||||||
return typeProduct;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasDifferentProductType() {
|
|
||||||
return typeProject != typeProduct;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private enum ProductValue {
|
|
||||||
KEYCLOAK("Keycloak"),
|
|
||||||
RHSSO("RH-SSO");
|
|
||||||
|
|
||||||
private final String name;
|
|
||||||
|
|
||||||
ProductValue(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum ProfileValue {
|
private enum ProfileValue {
|
||||||
COMMUNITY,
|
DEFAULT,
|
||||||
PRODUCT,
|
|
||||||
PREVIEW
|
PREVIEW
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,10 +243,14 @@ public class Profile {
|
||||||
|
|
||||||
profile = properties.getProperty("profile");
|
profile = properties.getProperty("profile");
|
||||||
if (profile != null) {
|
if (profile != null) {
|
||||||
|
if (profile.equals("community")) {
|
||||||
|
profile = "default";
|
||||||
|
}
|
||||||
|
|
||||||
return profile;
|
return profile;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Version.DEFAULT_PROFILE;
|
return ProfileValue.DEFAULT.name();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean getConfig(Feature feature) {
|
public Boolean getConfig(Feature feature) {
|
||||||
|
|
|
@ -27,25 +27,17 @@ import java.util.Properties;
|
||||||
*/
|
*/
|
||||||
public class Version {
|
public class Version {
|
||||||
public static final String UNKNOWN = "UNKNOWN";
|
public static final String UNKNOWN = "UNKNOWN";
|
||||||
public static String NAME;
|
public static final String NAME = "Keycloak";
|
||||||
public static String NAME_FULL;
|
public static final String NAME_HTML = "<div class=\"kc-logo-text\"><span>Keycloak</span></div>";
|
||||||
public static String NAME_HTML;
|
|
||||||
public static String VERSION;
|
public static String VERSION;
|
||||||
public static String VERSION_KEYCLOAK;
|
|
||||||
public static String RESOURCES_VERSION;
|
public static String RESOURCES_VERSION;
|
||||||
public static String BUILD_TIME;
|
public static String BUILD_TIME;
|
||||||
public static String DEFAULT_PROFILE;
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
try (InputStream is = Version.class.getResourceAsStream("/keycloak-version.properties")) {
|
try (InputStream is = Version.class.getResourceAsStream("/keycloak-version.properties")) {
|
||||||
Properties props = new Properties();
|
Properties props = new Properties();
|
||||||
props.load(is);
|
props.load(is);
|
||||||
Version.NAME = props.getProperty("name");
|
|
||||||
Version.NAME_FULL = props.getProperty("name-full");
|
|
||||||
Version.NAME_HTML = props.getProperty("name-html");
|
|
||||||
Version.DEFAULT_PROFILE = props.getProperty("default-profile");
|
|
||||||
Version.VERSION = props.getProperty("version");
|
Version.VERSION = props.getProperty("version");
|
||||||
Version.VERSION_KEYCLOAK = props.getProperty("version-keycloak");
|
|
||||||
Version.BUILD_TIME = props.getProperty("build-time");
|
Version.BUILD_TIME = props.getProperty("build-time");
|
||||||
Version.RESOURCES_VERSION = Version.VERSION.toLowerCase();
|
Version.RESOURCES_VERSION = Version.VERSION.toLowerCase();
|
||||||
|
|
||||||
|
|
|
@ -14,11 +14,5 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
version=${project.version}
|
||||||
name=${product.name}
|
build-time=${project.build-time}
|
||||||
name-full=${product.name.full}
|
|
||||||
name-html=${product.name-html}
|
|
||||||
version=${product.version}
|
|
||||||
version-keycloak=${project.version}
|
|
||||||
build-time=${product.build-time}
|
|
||||||
default-profile=${product.default-profile}
|
|
|
@ -1,20 +1,16 @@
|
||||||
package org.keycloak.common;
|
package org.keycloak.common;
|
||||||
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.rules.TemporaryFolder;
|
import org.junit.rules.TemporaryFolder;
|
||||||
|
import org.keycloak.common.Profile.Feature;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.PrintWriter;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import org.keycloak.common.Profile.Feature;
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
public class ProfileTest {
|
public class ProfileTest {
|
||||||
|
|
||||||
|
@ -22,31 +18,15 @@ public class ProfileTest {
|
||||||
public TemporaryFolder temporaryFolder = new TemporaryFolder();
|
public TemporaryFolder temporaryFolder = new TemporaryFolder();
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void checkDefaultsKeycloak() {
|
public void checkDefaults() {
|
||||||
Assert.assertEquals("community", Profile.getName());
|
Assert.assertEquals("default", Profile.getName());
|
||||||
assertEquals(Profile.getDisabledFeatures(), Profile.Feature.ADMIN, Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.DYNAMIC_SCOPES, Profile.Feature.DOCKER, Profile.Feature.RECOVERY_CODES, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.MAP_STORAGE, Profile.Feature.DECLARATIVE_USER_PROFILE, Feature.CLIENT_SECRET_ROTATION, Feature.UPDATE_EMAIL);
|
assertEquals(Profile.getDisabledFeatures(), Profile.Feature.ADMIN, Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.DYNAMIC_SCOPES, Profile.Feature.DOCKER, Profile.Feature.RECOVERY_CODES, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.MAP_STORAGE, Profile.Feature.DECLARATIVE_USER_PROFILE, Feature.CLIENT_SECRET_ROTATION, Feature.UPDATE_EMAIL);
|
||||||
assertEquals(Profile.getPreviewFeatures(), Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.RECOVERY_CODES, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.DECLARATIVE_USER_PROFILE, Feature.CLIENT_SECRET_ROTATION, Feature.UPDATE_EMAIL);
|
assertEquals(Profile.getPreviewFeatures(), Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.RECOVERY_CODES, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.DECLARATIVE_USER_PROFILE, Feature.CLIENT_SECRET_ROTATION, Feature.UPDATE_EMAIL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void checkDefaultsRH_SSO() {
|
|
||||||
System.setProperty("keycloak.profile", "product");
|
|
||||||
String backUpName = Version.NAME;
|
|
||||||
Version.NAME = Profile.PRODUCT_NAME.toLowerCase();
|
|
||||||
Profile.init();
|
|
||||||
|
|
||||||
Assert.assertEquals("product", Profile.getName());
|
|
||||||
assertEquals(Profile.getDisabledFeatures(), Profile.Feature.ADMIN, Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.DYNAMIC_SCOPES, Profile.Feature.DOCKER, Profile.Feature.RECOVERY_CODES, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.MAP_STORAGE, Profile.Feature.DECLARATIVE_USER_PROFILE, Feature.CLIENT_SECRET_ROTATION, Feature.UPDATE_EMAIL);
|
|
||||||
assertEquals(Profile.getPreviewFeatures(), Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.RECOVERY_CODES, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.DECLARATIVE_USER_PROFILE, Feature.CLIENT_SECRET_ROTATION, Feature.UPDATE_EMAIL);
|
|
||||||
|
|
||||||
System.setProperty("keycloak.profile", "community");
|
|
||||||
Version.NAME = backUpName;
|
|
||||||
Profile.init();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void configWithSystemProperties() {
|
public void configWithSystemProperties() {
|
||||||
Assert.assertEquals("community", Profile.getName());
|
Assert.assertEquals("default", Profile.getName());
|
||||||
Assert.assertFalse(Profile.isFeatureEnabled(Profile.Feature.DOCKER));
|
Assert.assertFalse(Profile.isFeatureEnabled(Profile.Feature.DOCKER));
|
||||||
Assert.assertFalse(Profile.isFeatureEnabled(Profile.Feature.OPENSHIFT_INTEGRATION));
|
Assert.assertFalse(Profile.isFeatureEnabled(Profile.Feature.OPENSHIFT_INTEGRATION));
|
||||||
assertTrue(Profile.isFeatureEnabled(Profile.Feature.IMPERSONATION));
|
assertTrue(Profile.isFeatureEnabled(Profile.Feature.IMPERSONATION));
|
||||||
|
@ -71,38 +51,6 @@ public class ProfileTest {
|
||||||
Profile.init();
|
Profile.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void configWithPropertiesFile() throws IOException {
|
|
||||||
Assert.assertEquals("community", Profile.getName());
|
|
||||||
Assert.assertFalse(Profile.isFeatureEnabled(Profile.Feature.DOCKER));
|
|
||||||
assertTrue(Profile.isFeatureEnabled(Profile.Feature.IMPERSONATION));
|
|
||||||
|
|
||||||
File d = temporaryFolder.newFolder();
|
|
||||||
File f = new File(d, "profile.properties");
|
|
||||||
|
|
||||||
Properties p = new Properties();
|
|
||||||
p.setProperty("profile", "preview");
|
|
||||||
p.setProperty("feature.docker", "enabled");
|
|
||||||
p.setProperty("feature.impersonation", "disabled");
|
|
||||||
p.setProperty("feature.upload_scripts", "enabled");
|
|
||||||
PrintWriter pw = new PrintWriter(f);
|
|
||||||
p.list(pw);
|
|
||||||
pw.close();
|
|
||||||
|
|
||||||
System.setProperty("jboss.server.config.dir", d.getAbsolutePath());
|
|
||||||
|
|
||||||
Profile.init();
|
|
||||||
|
|
||||||
Assert.assertEquals("preview", Profile.getName());
|
|
||||||
assertTrue(Profile.isFeatureEnabled(Profile.Feature.DOCKER));
|
|
||||||
assertTrue(Profile.isFeatureEnabled(Profile.Feature.OPENSHIFT_INTEGRATION));
|
|
||||||
Assert.assertFalse(Profile.isFeatureEnabled(Profile.Feature.IMPERSONATION));
|
|
||||||
|
|
||||||
System.getProperties().remove("jboss.server.config.dir");
|
|
||||||
|
|
||||||
Profile.init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void assertEquals(Set<Profile.Feature> actual, Profile.Feature... expected) {
|
public static void assertEquals(Set<Profile.Feature> actual, Profile.Feature... expected) {
|
||||||
Profile.Feature[] a = actual.toArray(new Profile.Feature[actual.size()]);
|
Profile.Feature[] a = actual.toArray(new Profile.Feature[actual.size()]);
|
||||||
Arrays.sort(a, new FeatureComparator());
|
Arrays.sort(a, new FeatureComparator());
|
||||||
|
|
|
@ -85,19 +85,4 @@
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>product</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<finalName>${product.name}-${product.filename.version}-js-adapter</finalName>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -38,15 +38,15 @@
|
||||||
</fileSet>
|
</fileSet>
|
||||||
<!-- License Data -->
|
<!-- License Data -->
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>src/main/resources/licenses/${product.slot}</directory>
|
<directory>src/main/resources/licenses/keycloak</directory>
|
||||||
<outputDirectory>docs/licenses-${product.slot}-adapter</outputDirectory>
|
<outputDirectory>docs/licenses-keycloak-adapter</outputDirectory>
|
||||||
<excludes>
|
<excludes>
|
||||||
<exclude>licenses.xml</exclude>
|
<exclude>licenses.xml</exclude>
|
||||||
</excludes>
|
</excludes>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>target/licenses</directory>
|
<directory>target/licenses</directory>
|
||||||
<outputDirectory>docs/licenses-${product.slot}-adapter</outputDirectory>
|
<outputDirectory>docs/licenses-keycloak-adapter</outputDirectory>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
</fileSets>
|
</fileSets>
|
||||||
</assembly>
|
</assembly>
|
||||||
|
|
|
@ -89,19 +89,4 @@
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>product</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<finalName>${product.name}-${product.filename.version}-js-adapter</finalName>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -33,21 +33,8 @@
|
||||||
<modules>
|
<modules>
|
||||||
<module>js-adapter-zip</module>
|
<module>js-adapter-zip</module>
|
||||||
<module>wildfly-adapter</module>
|
<module>wildfly-adapter</module>
|
||||||
</modules>
|
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>community</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>!product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<modules>
|
|
||||||
<module>tomcat-adapter-zip</module>
|
<module>tomcat-adapter-zip</module>
|
||||||
<module>jetty94-adapter-zip</module>
|
<module>jetty94-adapter-zip</module>
|
||||||
<module>js-adapter-npm-zip</module>
|
<module>js-adapter-npm-zip</module>
|
||||||
</modules>
|
</modules>
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
<wildfly.build-tools.version>1.2.13.Final</wildfly.build-tools.version>
|
<wildfly.build-tools.version>1.2.13.Final</wildfly.build-tools.version>
|
||||||
<wildfly.core.version>15.0.1.Final</wildfly.core.version>
|
<wildfly.core.version>15.0.1.Final</wildfly.core.version>
|
||||||
<org.wildfly.galleon-plugins.version>5.1.3.Final</org.wildfly.galleon-plugins.version>
|
<org.wildfly.galleon-plugins.version>5.1.3.Final</org.wildfly.galleon-plugins.version>
|
||||||
|
<assemblyFile>assembly.xml</assemblyFile>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<artifactId>keycloak-wildfly-adapter-dist</artifactId>
|
<artifactId>keycloak-wildfly-adapter-dist</artifactId>
|
||||||
|
@ -89,36 +90,4 @@
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>community</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>!product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<properties>
|
|
||||||
<build-tools.version>${wildfly.build-tools.version}</build-tools.version>
|
|
||||||
<assemblyFile>assembly.xml</assemblyFile>
|
|
||||||
</properties>
|
|
||||||
</profile>
|
|
||||||
|
|
||||||
<profile>
|
|
||||||
<id>product</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<properties>
|
|
||||||
<assemblyFile>assembly.xml</assemblyFile>
|
|
||||||
<profileExcludes>%regex[(docs/contrib.*)|(docs/examples.*)|(docs/schema.*)]</profileExcludes>
|
|
||||||
</properties>
|
|
||||||
<build>
|
|
||||||
<finalName>${product.name}-${product.filename.version}-eap7-adapter</finalName>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -30,9 +30,51 @@
|
||||||
<description/>
|
<description/>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<javadoc.branding>${product.name.full} ${product.version}</javadoc.branding>
|
<javadoc.branding>Keycloak ${project.version}</javadoc.branding>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.keycloak</groupId>
|
||||||
|
<artifactId>keycloak-dependencies-server-all</artifactId>
|
||||||
|
<type>pom</type>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.keycloak</groupId>
|
||||||
|
<artifactId>keycloak-admin-client</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.keycloak</groupId>
|
||||||
|
<artifactId>keycloak-authz-client</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!-- Include all classes that are marked "provided" and therefore not included in the dependencies above.
|
||||||
|
This avoids warnings when generating the JavaDoc -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.keycloak</groupId>
|
||||||
|
<artifactId>keycloak-model-build-processor</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jboss.logging</groupId>
|
||||||
|
<artifactId>jboss-logging-annotations</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.java.dev.jna</groupId>
|
||||||
|
<artifactId>jna</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<!-- Included here as it provides Nonnull from com.google.code.findbugs:jsr305.
|
||||||
|
That is used in annotations in FilesPlainTextVaultProvider -->
|
||||||
|
<groupId>com.googlecode.owasp-java-html-sanitizer</groupId>
|
||||||
|
<artifactId>owasp-java-html-sanitizer</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.infinispan.protostream</groupId>
|
||||||
|
<artifactId>protostream-processor</artifactId>
|
||||||
|
<version>${infinispan.protostream.processor.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<finalName>keycloak-api-docs-${project.version}</finalName>
|
<finalName>keycloak-api-docs-${project.version}</finalName>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
@ -75,60 +117,6 @@
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>community</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>!product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-dependencies-server-all</artifactId>
|
|
||||||
<type>pom</type>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-admin-client</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-authz-client</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<!-- Include all classes that are marked "provided" and therefore not included in the dependencies above.
|
|
||||||
This avoids warnings when generating the JavaDoc -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-model-build-processor</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.logging</groupId>
|
|
||||||
<artifactId>jboss-logging-annotations</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.java.dev.jna</groupId>
|
|
||||||
<artifactId>jna</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<!-- Included here as it provides Nonnull from com.google.code.findbugs:jsr305.
|
|
||||||
That is used in annotations in FilesPlainTextVaultProvider -->
|
|
||||||
<groupId>com.googlecode.owasp-java-html-sanitizer</groupId>
|
|
||||||
<artifactId>owasp-java-html-sanitizer</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.infinispan.protostream</groupId>
|
|
||||||
<artifactId>protostream-processor</artifactId>
|
|
||||||
<version>${infinispan.protostream.processor.version}</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-javadoc-plugin</artifactId>
|
<artifactId>maven-javadoc-plugin</artifactId>
|
||||||
|
@ -153,87 +141,4 @@
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</profile>
|
|
||||||
|
|
||||||
<profile>
|
|
||||||
<id>product</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<!-- Make sure to keep this list in sync with <dependencySourceIncludes> -->
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-server-spi</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-common</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-core</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-saml-core-public</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-adapter-spi</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-adapter-core</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-saml-adapter-api-public</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-admin-client</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-authz-client</artifactId>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-javadoc-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>aggregate-javadoc</id>
|
|
||||||
<configuration>
|
|
||||||
<windowtitle>${javadoc.branding} public API</windowtitle>
|
|
||||||
<doctitle>${javadoc.branding} public API</doctitle>
|
|
||||||
<header>${javadoc.branding}</header>
|
|
||||||
<footer>${javadoc.branding}</footer>
|
|
||||||
<includeTransitiveDependencySources>false</includeTransitiveDependencySources>
|
|
||||||
<!-- Make sure to keep this list in sync with <dependencies> -->
|
|
||||||
<dependencySourceIncludes>
|
|
||||||
<include>org.keycloak:keycloak-server-spi</include>
|
|
||||||
<include>org.keycloak:keycloak-common</include>
|
|
||||||
<include>org.keycloak:keycloak-core</include>
|
|
||||||
<include>org.keycloak:keycloak-saml-core-public</include>
|
|
||||||
<include>org.keycloak:keycloak-adapter-spi</include>
|
|
||||||
<include>org.keycloak:keycloak-adapter-core</include>
|
|
||||||
<include>org.keycloak:keycloak-saml-adapter-api-public</include>
|
|
||||||
<include>org.keycloak:keycloak-admin-client</include>
|
|
||||||
<include>org.keycloak:keycloak-authz-client</include>
|
|
||||||
</dependencySourceIncludes>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -29,14 +29,6 @@
|
||||||
<name>Keycloak Release Downloads</name>
|
<name>Keycloak Release Downloads</name>
|
||||||
<description/>
|
<description/>
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>community</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>!product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
|
@ -69,6 +61,4 @@
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -31,15 +31,15 @@
|
||||||
|
|
||||||
<!-- License Data -->
|
<!-- License Data -->
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>src/main/resources/licenses/${product.slot}</directory>
|
<directory>src/main/resources/licenses/keycloak</directory>
|
||||||
<outputDirectory>content/docs/licenses-${product.slot}</outputDirectory>
|
<outputDirectory>content/docs/licenses-keycloak</outputDirectory>
|
||||||
<excludes>
|
<excludes>
|
||||||
<exclude>licenses.xml</exclude>
|
<exclude>licenses.xml</exclude>
|
||||||
</excludes>
|
</excludes>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>target/licenses</directory>
|
<directory>target/licenses</directory>
|
||||||
<outputDirectory>content/docs/licenses-${product.slot}</outputDirectory>
|
<outputDirectory>content/docs/licenses-keycloak</outputDirectory>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
</fileSets>
|
</fileSets>
|
||||||
</assembly>
|
</assembly>
|
||||||
|
|
|
@ -27,6 +27,10 @@
|
||||||
<wildfly.build-tools.version>1.2.13.Final</wildfly.build-tools.version>
|
<wildfly.build-tools.version>1.2.13.Final</wildfly.build-tools.version>
|
||||||
<wildfly.core.version>15.0.1.Final</wildfly.core.version>
|
<wildfly.core.version>15.0.1.Final</wildfly.core.version>
|
||||||
<org.wildfly.galleon-plugins.version>5.1.3.Final</org.wildfly.galleon-plugins.version>
|
<org.wildfly.galleon-plugins.version>5.1.3.Final</org.wildfly.galleon-plugins.version>
|
||||||
|
<feature.parent>org.wildfly:wildfly-feature-pack</feature.parent>
|
||||||
|
<!-- EAP feature.parent
|
||||||
|
<feature.parent>org.jboss.eap:wildfly-feature-pack</feature.parent>
|
||||||
|
-->
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -150,6 +154,13 @@
|
||||||
</exclusion>
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wildfly</groupId>
|
||||||
|
<artifactId>wildfly-feature-pack</artifactId>
|
||||||
|
<version>${wildfly.version}</version>
|
||||||
|
<type>zip</type>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
@ -205,53 +216,4 @@
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>community</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>!product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
|
|
||||||
<properties>
|
|
||||||
<build-tools.version>${wildfly.build-tools.version}</build-tools.version>
|
|
||||||
<feature.parent>org.wildfly:wildfly-feature-pack</feature.parent>
|
|
||||||
</properties>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.wildfly</groupId>
|
|
||||||
<artifactId>wildfly-feature-pack</artifactId>
|
|
||||||
<version>${wildfly.version}</version>
|
|
||||||
<type>zip</type>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
</profile>
|
|
||||||
|
|
||||||
<profile>
|
|
||||||
<id>product</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
|
|
||||||
<properties>
|
|
||||||
<feature.parent>org.jboss.eap:wildfly-feature-pack</feature.parent>
|
|
||||||
</properties>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.jboss.eap</groupId>
|
|
||||||
<artifactId>wildfly-feature-pack</artifactId>
|
|
||||||
<version>${eap.version}</version>
|
|
||||||
<type>zip</type>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -27,7 +27,7 @@ class LicenseProcessMojo extends AbstractMojo {
|
||||||
|
|
||||||
// Property configuration with defaults
|
// Property configuration with defaults
|
||||||
def outputDirectoryRaw = project.properties['outputDirectory'] ?: "${project.build.directory}/licenses"
|
def outputDirectoryRaw = project.properties['outputDirectory'] ?: "${project.build.directory}/licenses"
|
||||||
def xmlFileSource = project.properties['xmlFileSource'] ?: "${project.basedir}/src/main/resources/licenses/${project.properties['product.slot']}/licenses.xml"
|
def xmlFileSource = project.properties['xmlFileSource'] ?: "${project.basedir}/src/main/resources/licenses/keycloak/licenses.xml"
|
||||||
def licenseName = project.properties['licenseName'] ?: "Apache Software License 2.0"
|
def licenseName = project.properties['licenseName'] ?: "Apache Software License 2.0"
|
||||||
def licenseUrl = project.properties['licenseUrl'] ?: "https://raw.githubusercontent.com/keycloak/keycloak/${project.version}/LICENSE.txt"
|
def licenseUrl = project.properties['licenseUrl'] ?: "https://raw.githubusercontent.com/keycloak/keycloak/${project.version}/LICENSE.txt"
|
||||||
def groupId = project.properties['groupId'] ?: "org.keycloak"
|
def groupId = project.properties['groupId'] ?: "org.keycloak"
|
||||||
|
@ -91,7 +91,7 @@ class LicenseProcessMojo extends AbstractMojo {
|
||||||
InputStream input = this.class.getResourceAsStream("keycloak-licenses-common/licenses.xsl")
|
InputStream input = this.class.getResourceAsStream("keycloak-licenses-common/licenses.xsl")
|
||||||
transformer = TransformerFactory.newInstance().newTemplates(new StreamSource(input)).newTransformer()
|
transformer = TransformerFactory.newInstance().newTemplates(new StreamSource(input)).newTransformer()
|
||||||
}
|
}
|
||||||
transformer.setParameter("productname", project.properties['product.name.full'])
|
transformer.setParameter("productname", "Keycloak")
|
||||||
transformer.setParameter("version", project.version)
|
transformer.setParameter("version", project.version)
|
||||||
outputLicensesXmlFile.withInputStream() { inStream ->
|
outputLicensesXmlFile.withInputStream() { inStream ->
|
||||||
def input = new StreamSource(inStream)
|
def input = new StreamSource(inStream)
|
||||||
|
|
|
@ -32,21 +32,8 @@
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>wildfly-adapter</module>
|
<module>wildfly-adapter</module>
|
||||||
</modules>
|
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>community</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>!product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<modules>
|
|
||||||
<module>jetty94-adapter-zip</module>
|
<module>jetty94-adapter-zip</module>
|
||||||
<module>tomcat-adapter-zip</module>
|
<module>tomcat-adapter-zip</module>
|
||||||
</modules>
|
</modules>
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
</fileSet>
|
</fileSet>
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>${project.build.directory}/unpacked/licenses</directory>
|
<directory>${project.build.directory}/unpacked/licenses</directory>
|
||||||
<outputDirectory>docs/licenses-${product.slot}</outputDirectory>
|
<outputDirectory>docs/licenses-keycloak</outputDirectory>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
</fileSets>
|
</fileSets>
|
||||||
<files>
|
<files>
|
||||||
|
|
|
@ -89,19 +89,4 @@
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>product</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<finalName>${product.name}-${product.filename.version}-saml-eap7-adapter</finalName>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
<fileSets>
|
<fileSets>
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>src/main/resources/licenses/${product.slot}</directory>
|
<directory>src/main/resources/licenses/keycloak</directory>
|
||||||
<outputDirectory>licenses</outputDirectory>
|
<outputDirectory>licenses</outputDirectory>
|
||||||
<excludes>
|
<excludes>
|
||||||
<exclude>licenses.xml</exclude>
|
<exclude>licenses.xml</exclude>
|
||||||
|
|
|
@ -13,7 +13,7 @@ public class Features {
|
||||||
|
|
||||||
public Features() {
|
public Features() {
|
||||||
this.features = Arrays.stream(Profile.Feature.values())
|
this.features = Arrays.stream(Profile.Feature.values())
|
||||||
.filter(f -> !f.getTypeProject().equals(Profile.Type.EXPERIMENTAL))
|
.filter(f -> !f.getType().equals(Profile.Type.EXPERIMENTAL))
|
||||||
.map(f -> new Feature(f))
|
.map(f -> new Feature(f))
|
||||||
.sorted(Comparator.comparing(Feature::getName))
|
.sorted(Comparator.comparing(Feature::getName))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
@ -52,7 +52,7 @@ public class Features {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Profile.Type getType() {
|
private Profile.Type getType() {
|
||||||
return profileFeature.getTypeProject();
|
return profileFeature.getType();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
11
docs/pom.xml
|
@ -29,19 +29,8 @@
|
||||||
<artifactId>keycloak-docs-parent</artifactId>
|
<artifactId>keycloak-docs-parent</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>quarkus</id>
|
|
||||||
<activation>
|
|
||||||
<jdk>[11,)</jdk>
|
|
||||||
<property>
|
|
||||||
<name>!product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>maven-plugin</module>
|
<module>maven-plugin</module>
|
||||||
<module>guides</module>
|
<module>guides</module>
|
||||||
</modules>
|
</modules>
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
# fabric8-analytics-version-comparator/f8a\_version\_comparator
|
|
||||||
|
|
||||||
Python module/library implementing generic Maven version comparison:
|
|
||||||
|
|
||||||
https://github.com/apache/maven/blob/master/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
|
|
||||||
|
|
||||||
The "f8a\_version\_comparator" Python module implementation was taken
|
|
||||||
from "fabric8-analytics/fabric8-analytics-version-comparator" repository:
|
|
||||||
|
|
||||||
https://github.com/fabric8-analytics/fabric8-analytics-version-comparator
|
|
|
@ -1,28 +0,0 @@
|
||||||
# Copyright © 2018 Red Hat Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# Author: Geetika Batra <gbatra@redhat.com>
|
|
||||||
#
|
|
||||||
|
|
||||||
"""Initialize Module."""
|
|
||||||
|
|
||||||
__all__ = [
|
|
||||||
"base",
|
|
||||||
"comparable_version",
|
|
||||||
"item_object",
|
|
||||||
]
|
|
||||||
|
|
||||||
from . import base
|
|
||||||
from . import comparable_version
|
|
||||||
from . import item_object
|
|
|
@ -1,28 +0,0 @@
|
||||||
# Copyright © 2018 Red Hat Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# Author: Geetika Batra <gbatra@redhat.com>
|
|
||||||
#
|
|
||||||
|
|
||||||
"""Item class acting as base class for various item types."""
|
|
||||||
|
|
||||||
from abc import ABCMeta, abstractmethod
|
|
||||||
|
|
||||||
|
|
||||||
class Item(metaclass=ABCMeta):
|
|
||||||
"""Base class for maven version comparator tasks."""
|
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def compare_to(self, _item):
|
|
||||||
"""Compare two maven versions."""
|
|
|
@ -1,213 +0,0 @@
|
||||||
# Copyright © 2018 Red Hat Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# Author: Geetika Batra <gbatra@redhat.com>
|
|
||||||
#
|
|
||||||
|
|
||||||
"""Module to implement Comparable Version class."""
|
|
||||||
|
|
||||||
import typing
|
|
||||||
|
|
||||||
from .item_object import IntegerItem
|
|
||||||
from .item_object import StringItem
|
|
||||||
from .item_object import ListItem
|
|
||||||
|
|
||||||
|
|
||||||
class ComparableVersion:
|
|
||||||
"""Class for Comparable Version."""
|
|
||||||
|
|
||||||
def __init__(self, version: str):
|
|
||||||
"""Initialize comparable version class.
|
|
||||||
|
|
||||||
:version: Version supplied as a string
|
|
||||||
"""
|
|
||||||
if not isinstance(version, str):
|
|
||||||
raise TypeError(
|
|
||||||
"Invalid type {got!r} of argument `version`, expected {expected!r}".format(
|
|
||||||
got=type(version),
|
|
||||||
expected=str
|
|
||||||
))
|
|
||||||
|
|
||||||
self.version = version
|
|
||||||
self.items = self.parse_version()
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
"""Return representation of ComparableVersion object."""
|
|
||||||
return "{cls!s}(version={version!r})".format(
|
|
||||||
cls=self.__class__.__name__,
|
|
||||||
version=self.version
|
|
||||||
)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
"""Return version string held by ComparableVersion object."""
|
|
||||||
return "{version!s}".format(
|
|
||||||
version=self.version
|
|
||||||
)
|
|
||||||
|
|
||||||
def __eq__(self, other):
|
|
||||||
"""Compare ComparableVersion objects for equality.
|
|
||||||
|
|
||||||
This rich comparison implies whether self == other
|
|
||||||
"""
|
|
||||||
# don't call compare_to(None)
|
|
||||||
if other is None:
|
|
||||||
return False
|
|
||||||
|
|
||||||
return self.compare_to(other) == 0
|
|
||||||
|
|
||||||
def __ne__(self, other):
|
|
||||||
"""Compare ComparableVersion objects for equality.
|
|
||||||
|
|
||||||
This rich comparison implies whether self != other
|
|
||||||
"""
|
|
||||||
# don't call compare_to(None)
|
|
||||||
if other is None:
|
|
||||||
return True
|
|
||||||
|
|
||||||
return self.compare_to(other) != 0
|
|
||||||
|
|
||||||
def __lt__(self, other):
|
|
||||||
"""Compare ComparableVersion objects.
|
|
||||||
|
|
||||||
This rich comparison implies whether self < other
|
|
||||||
"""
|
|
||||||
# don't call compare_to(None)
|
|
||||||
if other is None:
|
|
||||||
return False
|
|
||||||
|
|
||||||
return self.compare_to(other) == -1
|
|
||||||
|
|
||||||
def __le__(self, other):
|
|
||||||
"""Compare ComparableVersion objects.
|
|
||||||
|
|
||||||
This rich comparison implies whether self <= other
|
|
||||||
"""
|
|
||||||
# don't call compare_to(None)
|
|
||||||
if other is None:
|
|
||||||
return False
|
|
||||||
|
|
||||||
return self.compare_to(other) <= 0
|
|
||||||
|
|
||||||
def __gt__(self, other):
|
|
||||||
"""Compare ComparableVersion objects.
|
|
||||||
|
|
||||||
This rich comparison implies whether self > other
|
|
||||||
"""
|
|
||||||
# don't call compare_to(None)
|
|
||||||
if other is None:
|
|
||||||
return True
|
|
||||||
|
|
||||||
return self.compare_to(other) == 1
|
|
||||||
|
|
||||||
def __ge__(self, other):
|
|
||||||
"""Compare ComparableVersion objects.
|
|
||||||
|
|
||||||
This rich comparison implies whether self >= other
|
|
||||||
"""
|
|
||||||
# don't call compare_to(None)
|
|
||||||
if other is None:
|
|
||||||
return True
|
|
||||||
|
|
||||||
return self.compare_to(other) >= 0
|
|
||||||
|
|
||||||
def parse_version(self):
|
|
||||||
"""Parse version."""
|
|
||||||
# TODO: reduce cyclomatic complexity
|
|
||||||
ref_list = ListItem()
|
|
||||||
items = ref_list
|
|
||||||
parse_stack = list()
|
|
||||||
version = self.version.lower()
|
|
||||||
parse_stack.append(ref_list)
|
|
||||||
_is_digit = False
|
|
||||||
|
|
||||||
_start_index = 0
|
|
||||||
|
|
||||||
for _ch in range(0, len(version)):
|
|
||||||
|
|
||||||
ver_char = version[_ch]
|
|
||||||
|
|
||||||
if ver_char == ".":
|
|
||||||
|
|
||||||
if _ch == _start_index:
|
|
||||||
ref_list.add_item(IntegerItem(0))
|
|
||||||
else:
|
|
||||||
ref_list.add_item(self.parse_item(_is_digit, version[_start_index: _ch]))
|
|
||||||
|
|
||||||
_start_index = _ch + 1
|
|
||||||
|
|
||||||
elif ver_char == "-":
|
|
||||||
if _ch == _start_index:
|
|
||||||
ref_list.add_item(IntegerItem(0))
|
|
||||||
else:
|
|
||||||
ref_list.add_item(self.parse_item(_is_digit, version[_start_index: _ch]))
|
|
||||||
_start_index = _ch + 1
|
|
||||||
|
|
||||||
temp = ListItem()
|
|
||||||
ref_list.add_item(temp)
|
|
||||||
ref_list = temp
|
|
||||||
parse_stack.append(ref_list)
|
|
||||||
elif ver_char.isdigit():
|
|
||||||
if not _is_digit and _ch > _start_index:
|
|
||||||
ref_list.add_item(StringItem(version[_start_index: _ch], True))
|
|
||||||
_start_index = _ch
|
|
||||||
|
|
||||||
temp = ListItem()
|
|
||||||
ref_list.add_item(temp)
|
|
||||||
ref_list = temp
|
|
||||||
parse_stack.append(ref_list)
|
|
||||||
_is_digit = True
|
|
||||||
else:
|
|
||||||
if _is_digit and _ch > _start_index:
|
|
||||||
ref_list.add_item(self.parse_item(True, version[_start_index:_ch]))
|
|
||||||
_start_index = _ch
|
|
||||||
temp = ListItem()
|
|
||||||
ref_list.add_item(temp)
|
|
||||||
ref_list = temp
|
|
||||||
parse_stack.append(ref_list)
|
|
||||||
_is_digit = False
|
|
||||||
|
|
||||||
if len(version) > _start_index:
|
|
||||||
ref_list.add_item(self.parse_item(_is_digit, version[_start_index:]))
|
|
||||||
|
|
||||||
while parse_stack:
|
|
||||||
ref_list = parse_stack.pop()
|
|
||||||
ref_list.normalize()
|
|
||||||
|
|
||||||
return items
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def parse_item(_is_digit, buf):
|
|
||||||
"""Wrap items in version in respective object class."""
|
|
||||||
# TODO: make this function static (it does not need 'self')
|
|
||||||
if _is_digit:
|
|
||||||
return IntegerItem(buf)
|
|
||||||
|
|
||||||
return StringItem(buf, False)
|
|
||||||
|
|
||||||
def compare_to(self, obj: typing.Union["ComparableVersion", str]):
|
|
||||||
"""Compare two ComparableVersion objects."""
|
|
||||||
if isinstance(obj, ComparableVersion):
|
|
||||||
# compare two objects of the same type
|
|
||||||
cmp_result = self.items.compare_to(obj.items)
|
|
||||||
elif isinstance(obj, str):
|
|
||||||
# compare against string
|
|
||||||
cmp_result = self.items.compare_to(ComparableVersion(obj).items)
|
|
||||||
else:
|
|
||||||
raise TypeError(
|
|
||||||
"Invalid type {got!r} of argument `obj`, expected <{expected}>".format(
|
|
||||||
got=type(obj),
|
|
||||||
expected=typing.Union["ComparableVersion", str]
|
|
||||||
))
|
|
||||||
|
|
||||||
return cmp_result
|
|
|
@ -1,204 +0,0 @@
|
||||||
# Copyright © 2018 Red Hat Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# Author: Geetika Batra <gbatra@redhat.com>
|
|
||||||
#
|
|
||||||
|
|
||||||
"""Module to implement methods item types."""
|
|
||||||
|
|
||||||
from .base import Item
|
|
||||||
# TODO: setup logging
|
|
||||||
|
|
||||||
|
|
||||||
class IntegerItem(Item):
|
|
||||||
"""Integer Item class for maven version comparator tasks."""
|
|
||||||
|
|
||||||
def __init__(self, str_version):
|
|
||||||
"""Initialize integer from string value of version.
|
|
||||||
|
|
||||||
:str_version: part of version supplied as string
|
|
||||||
"""
|
|
||||||
self.value = int(str_version)
|
|
||||||
|
|
||||||
def int_cmp(self, cmp_value):
|
|
||||||
"""Compare two integers."""
|
|
||||||
if self.value.__lt__(cmp_value):
|
|
||||||
return -1
|
|
||||||
if self.value.__gt__(cmp_value):
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def compare_to(self, item):
|
|
||||||
"""Compare two maven versions."""
|
|
||||||
if item is None:
|
|
||||||
return 0 if self.value == 0 else 1
|
|
||||||
|
|
||||||
if isinstance(item, IntegerItem):
|
|
||||||
return self.int_cmp(item.value) # check if this value thing works
|
|
||||||
if isinstance(item, StringItem):
|
|
||||||
return 1
|
|
||||||
if isinstance(item, ListItem):
|
|
||||||
return 1
|
|
||||||
else:
|
|
||||||
raise ValueError("invalid item" + str(type(item)))
|
|
||||||
|
|
||||||
def to_string(self):
|
|
||||||
"""Return string value of version."""
|
|
||||||
return str(self.value)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
"""Return string value of version - Pythonish variant."""
|
|
||||||
return str(self.value)
|
|
||||||
|
|
||||||
|
|
||||||
class StringItem(Item):
|
|
||||||
"""String Item class for maven version comparator tasks."""
|
|
||||||
|
|
||||||
def __init__(self, str_version, followed_by_digit):
|
|
||||||
"""Initialize string value of version.
|
|
||||||
|
|
||||||
:str_value: part of version supplied as string
|
|
||||||
:followed_by_digit: True if str_version is followed by digit
|
|
||||||
"""
|
|
||||||
self.qualifiers = ["alpha", "beta", "milestone", "rc", "snapshot", "", "sp"]
|
|
||||||
|
|
||||||
self.aliases = {
|
|
||||||
"ga": "",
|
|
||||||
"final": "",
|
|
||||||
"cr": "rc"
|
|
||||||
}
|
|
||||||
|
|
||||||
self.release_version_index = str(self.qualifiers.index(""))
|
|
||||||
self._decode_char_versions(str_version, followed_by_digit)
|
|
||||||
|
|
||||||
def _decode_char_versions(self, value, followed_by_digit):
|
|
||||||
"""Decode short forms of versions."""
|
|
||||||
if followed_by_digit and len(value) == 1:
|
|
||||||
if value.startswith("a"):
|
|
||||||
value = "alpha"
|
|
||||||
elif value.startswith("b"):
|
|
||||||
value = "beta"
|
|
||||||
elif value.startswith("m"):
|
|
||||||
value = "milestone"
|
|
||||||
|
|
||||||
self.value = self.aliases.get(value, value)
|
|
||||||
|
|
||||||
def comparable_qualifier(self, qualifier):
|
|
||||||
"""Get qualifier that is comparable."""
|
|
||||||
q_index = None
|
|
||||||
if qualifier in self.qualifiers:
|
|
||||||
q_index = self.qualifiers.index(qualifier)
|
|
||||||
q_index_not_found = str(len(self.qualifiers)) + "-" + qualifier
|
|
||||||
|
|
||||||
return str(q_index) if q_index is not None else q_index_not_found
|
|
||||||
|
|
||||||
def str_cmp(self, val1, val2):
|
|
||||||
"""Compare two strings."""
|
|
||||||
if val1.__lt__(val2):
|
|
||||||
return -1
|
|
||||||
if val1.__gt__(val2):
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def compare_to(self, item):
|
|
||||||
"""Compare two maven versions."""
|
|
||||||
if item is None:
|
|
||||||
temp = self.str_cmp(self.comparable_qualifier(self.value), self.release_version_index)
|
|
||||||
return temp
|
|
||||||
if isinstance(item, IntegerItem):
|
|
||||||
return -1
|
|
||||||
if isinstance(item, StringItem):
|
|
||||||
return self.str_cmp(
|
|
||||||
self.comparable_qualifier(
|
|
||||||
self.value), self.comparable_qualifier(
|
|
||||||
item.value))
|
|
||||||
if isinstance(item, ListItem):
|
|
||||||
return -1
|
|
||||||
else:
|
|
||||||
raise ValueError("invalid item" + str(type(item)))
|
|
||||||
|
|
||||||
def to_string(self):
|
|
||||||
"""Return value in string form."""
|
|
||||||
return str(self.value)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
"""Return string value of version - Pythonish variant."""
|
|
||||||
return str(self.value)
|
|
||||||
|
|
||||||
|
|
||||||
class ListItem(Item):
|
|
||||||
"""List Item class for maven version comparator tasks."""
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
"""Initialize string value of version."""
|
|
||||||
self.array_list = list()
|
|
||||||
|
|
||||||
def add_item(self, item):
|
|
||||||
"""Add item to array list."""
|
|
||||||
self.array_list.append(item)
|
|
||||||
|
|
||||||
def get_list(self):
|
|
||||||
"""Get object list items."""
|
|
||||||
return self.array_list
|
|
||||||
|
|
||||||
def normalize(self):
|
|
||||||
"""Remove trailing items: 0, "", empty list."""
|
|
||||||
red_list = [0, None, ""]
|
|
||||||
i = len(self.array_list) - 1
|
|
||||||
while i >= 0:
|
|
||||||
last_item = self.array_list[i]
|
|
||||||
|
|
||||||
if not isinstance(last_item, ListItem):
|
|
||||||
|
|
||||||
if last_item.value in red_list:
|
|
||||||
self.array_list.pop(i)
|
|
||||||
else:
|
|
||||||
break
|
|
||||||
|
|
||||||
i = i - 1
|
|
||||||
|
|
||||||
def compare_to(self, item):
|
|
||||||
"""Compare two maven versions."""
|
|
||||||
# TODO: reduce cyclomatic complexity
|
|
||||||
if item is None:
|
|
||||||
if len(self.array_list) == 0:
|
|
||||||
return 0
|
|
||||||
first = self.array_list[0]
|
|
||||||
return first.compare_to(None)
|
|
||||||
|
|
||||||
if isinstance(item, IntegerItem):
|
|
||||||
return -1
|
|
||||||
if isinstance(item, StringItem):
|
|
||||||
return 1
|
|
||||||
if isinstance(item, ListItem):
|
|
||||||
left_iter = iter(self.array_list)
|
|
||||||
right_iter = iter(item.get_list())
|
|
||||||
|
|
||||||
while True:
|
|
||||||
l_obj = next(left_iter, None)
|
|
||||||
r_obj = next(right_iter, None)
|
|
||||||
if l_obj is None and r_obj is None:
|
|
||||||
break
|
|
||||||
result = 0
|
|
||||||
if l_obj is None:
|
|
||||||
if r_obj is not None:
|
|
||||||
result = -1 * r_obj.compare_to(l_obj)
|
|
||||||
else:
|
|
||||||
result = l_obj.compare_to(r_obj)
|
|
||||||
if result != 0:
|
|
||||||
return result
|
|
||||||
|
|
||||||
return 0
|
|
||||||
else:
|
|
||||||
raise ValueError("invalid item" + str(type(item)))
|
|
|
@ -1,139 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
# *
|
|
||||||
# * Copyright 2020 Red Hat, Inc. and/or its affiliates
|
|
||||||
# * and other contributors as indicated by the @author tags.
|
|
||||||
# *
|
|
||||||
# * Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# * you may not use this file except in compliance with the License.
|
|
||||||
# * You may obtain a copy of the License at
|
|
||||||
# *
|
|
||||||
# * http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
# *
|
|
||||||
# * Unless required by applicable law or agreed to in writing, software
|
|
||||||
# * distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# * See the License for the specific language governing permissions and
|
|
||||||
# * limitations under the License.
|
|
||||||
# *
|
|
||||||
# *
|
|
||||||
|
|
||||||
import click, logging, os, sys
|
|
||||||
|
|
||||||
import lib.wildfly.upgrade as wu
|
|
||||||
|
|
||||||
CONTEXT_SETTINGS = dict(help_option_names = ['-h', '--help'])
|
|
||||||
FORCE_OPTION_HELP = """
|
|
||||||
Force elements / files updates.
|
|
||||||
|
|
||||||
In common mode of operation (without the "-f" or "--force" options) the
|
|
||||||
script upgrades the version of the Keycloak characteristic in question
|
|
||||||
(POM property, dependency, or some other XML element shared with Wildfly
|
|
||||||
application server) ONLY if the new version is HIGHER than the version of
|
|
||||||
the corresponding element currently present in the local copy of the
|
|
||||||
Keycloak repository, the script is operating on.
|
|
||||||
|
|
||||||
The -f, --force options instruct the script to allow an upgrade to replace
|
|
||||||
newer version of a particular Keycloak characteristic with an older one.
|
|
||||||
Useful to perform e.g. Keycloak downgrades to previous Wildfly versions.
|
|
||||||
"""
|
|
||||||
|
|
||||||
RHSSO_ADAPTERS_OPTION_HELP = """
|
|
||||||
Update artifacts versions of selected dependencies utilized by various
|
|
||||||
RH-SSO adapter license XML files. Also update the location of the
|
|
||||||
corresponding license text files within the repository so their names
|
|
||||||
reflect the updated artifacts versions.
|
|
||||||
"""
|
|
||||||
|
|
||||||
@click.command(context_settings=CONTEXT_SETTINGS)
|
|
||||||
@click.argument('tag', required = True, type=click.STRING)
|
|
||||||
@click.option('-f', '--force', help=FORCE_OPTION_HELP, is_flag=True)
|
|
||||||
@click.option('-r', '--update-rh-sso-adapters', help=RHSSO_ADAPTERS_OPTION_HELP, is_flag=True)
|
|
||||||
@click.option('-v', '--verbose', help='Enable verbose output.', is_flag=True)
|
|
||||||
@click.version_option(prog_name=sys.argv[0], version=wu.__version__)
|
|
||||||
def processParameters(tag, verbose, force, update_rh_sso_adapters):
|
|
||||||
"""
|
|
||||||
NAME
|
|
||||||
|
|
||||||
upgrade-keycloak-to-wildfly-tag.py - Rebase Keycloak on top of the
|
|
||||||
specified Wildfly tag (release)
|
|
||||||
|
|
||||||
DESCRIPTION
|
|
||||||
|
|
||||||
Update the versions of various Keycloak characteristics (versions of
|
|
||||||
POM properties, adapter dependencies, and other attributes actually
|
|
||||||
binding the Keycloak POM build configuration to the particular Wildfly
|
|
||||||
tag) to their corresponding values as used by the Wildfly application
|
|
||||||
server of version matching the tag / release, passed to the script as
|
|
||||||
argument.
|
|
||||||
|
|
||||||
EXAMPLES
|
|
||||||
|
|
||||||
Upgrade Keycloak to Wildfly 20 (using "20.0.1.Final" Wildfly tag):
|
|
||||||
|
|
||||||
$ python upgrade-keycloak-to-wildfly-tag.py 20.0.1.Final
|
|
||||||
|
|
||||||
Downgrade Keycloak to Wildfly 16 (using "16.0.0.Final" Wildfly tag,
|
|
||||||
script verbose mode to display the details about elements being
|
|
||||||
updated, and force option to perform the actual downgrade):
|
|
||||||
|
|
||||||
$ python upgrade-keycloak-to-wildfly-tag.py -v -f 16.0.0.Final
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Set loglevel to debug if '-v' or '--verbose' option was specified
|
|
||||||
wu.__loglevel__ = logging.DEBUG if verbose else logging.INFO
|
|
||||||
|
|
||||||
upgradeKeycloakToWildflyTag(tag, forceUpdates = force, ssoAdapters = update_rh_sso_adapters)
|
|
||||||
|
|
||||||
def upgradeKeycloakToWildflyTag(tag, forceUpdates = False, ssoAdapters = False):
|
|
||||||
wildflyTag = wu.isWellFormedWildflyTag(tag)
|
|
||||||
wildflyPomBaseUrl = "https://github.com/wildfly/wildfly/raw/%s/pom.xml" % wildflyTag
|
|
||||||
|
|
||||||
taskLogger = wu.getTaskLogger("Rebase Keycloak on top of Wildfly '%s'" % wildflyTag)
|
|
||||||
taskLogger.info("Retrieving Wildfly's pom.xml for tag: %s" % wildflyTag)
|
|
||||||
wildflyPomFile = wu.saveUrlToNamedTemporaryFile(wildflyPomBaseUrl)
|
|
||||||
wildflyPomXmlRoot = wu.getXmlRoot(wildflyPomFile)
|
|
||||||
|
|
||||||
wildflyCoreTag = wu.isWellFormedWildflyTag( wu.getPomProperty(wildflyPomXmlRoot, "version.org.wildfly.core")[0].text )
|
|
||||||
wildflyCorePomBaseUrl = "https://github.com/wildfly/wildfly-core/raw/%s/pom.xml" % wildflyCoreTag
|
|
||||||
taskLogger.info("Retrieving Wildfly-Core pom.xml for tag: %s" % wildflyCoreTag)
|
|
||||||
wildflyCorePomFile = wu.saveUrlToNamedTemporaryFile(wildflyCorePomBaseUrl)
|
|
||||||
|
|
||||||
if wildflyPomFile != None and wildflyCorePomFile != None:
|
|
||||||
|
|
||||||
# Subtask - Update main Keycloak pom.xml file
|
|
||||||
wu.performMainKeycloakPomFileUpdateTask(wildflyPomFile, wildflyCorePomFile, forceUpdates)
|
|
||||||
# Subtask - Update adapter-galleon-pack pom.xml file if necessary
|
|
||||||
wu.performAdapterGalleonPackPomFileUpdateTask(wildflyCorePomFile, forceUpdates)
|
|
||||||
# Subtask - Update Keycloak adapters
|
|
||||||
wu.performKeycloakAdapterLicenseFilesUpdateTask(wildflyPomFile, wildflyCorePomFile, forceUpdates)
|
|
||||||
|
|
||||||
if ssoAdapters:
|
|
||||||
# Subtask - Update RH-SSO adapters
|
|
||||||
wu.performRhssoAdapterLicenseFilesUpdateTask(wildflyPomFile, wildflyCorePomFile, forceUpdates)
|
|
||||||
else:
|
|
||||||
skipRhSsoAdapterUpdatesMessage = (
|
|
||||||
"Skipping RH-SSO adapters updates since their changes weren't requested!",
|
|
||||||
"\n\tRerun the script with '-r' or '--update-rh-sso-adapters' option to request them."
|
|
||||||
)
|
|
||||||
taskLogger.warning(wu._empty_string.join(skipRhSsoAdapterUpdatesMessage))
|
|
||||||
|
|
||||||
# Subtask - Update properties of the deprecated Wildfly testing module if necessary
|
|
||||||
wu.performDeprecatedWildflyTestingModuleUpdateTask(forceUpdates)
|
|
||||||
# Subtask - Update version of jboss-parent if necessary
|
|
||||||
wu.performJbossParentVersionUpdateTask(wildflyTag, wildflyPomFile, wildflyCorePomFile, forceUpdates)
|
|
||||||
# Subtask - Synchronize the XML namespace of the 'subsystem' element of the Keycloak
|
|
||||||
# Infinispan subsystem template with its current value as used by Wildfly
|
|
||||||
wu.synchronizeInfinispanSubsystemXmlNamespaceWithWildfly(wildflyTag)
|
|
||||||
|
|
||||||
for filename in [wildflyPomFile, wildflyCorePomFile]:
|
|
||||||
os.remove(filename)
|
|
||||||
|
|
||||||
rebaseDoneMessage = (
|
|
||||||
"Done rebasing Keycloak to Wildfly '%s' release!" % wildflyTag,
|
|
||||||
"\n\tRun 'git status' to list the changed files and 'git diff <path>' to inspect changes done to a specific file."
|
|
||||||
)
|
|
||||||
taskLogger.info(wu._empty_string.join(rebaseDoneMessage))
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
processParameters()
|
|
|
@ -79,7 +79,7 @@ public class ExportUtils {
|
||||||
ModelToRepresentation.exportRequiredActions(realm, rep);
|
ModelToRepresentation.exportRequiredActions(realm, rep);
|
||||||
|
|
||||||
// Project/product version
|
// Project/product version
|
||||||
rep.setKeycloakVersion(Version.VERSION_KEYCLOAK);
|
rep.setKeycloakVersion(Version.VERSION);
|
||||||
|
|
||||||
// Client Scopes
|
// Client Scopes
|
||||||
rep.setClientScopes(realm.getClientScopesStream().map(ModelToRepresentation::toRepresentation).collect(Collectors.toList()));
|
rep.setClientScopes(realm.getClientScopesStream().map(ModelToRepresentation::toRepresentation).collect(Collectors.toList()));
|
||||||
|
|
|
@ -120,7 +120,7 @@ public class LegacyMigrationManager implements MigrationManager {
|
||||||
session.setAttribute(Constants.STORAGE_BATCH_SIZE, Integer.getInteger("keycloak.migration.batch-size"));
|
session.setAttribute(Constants.STORAGE_BATCH_SIZE, Integer.getInteger("keycloak.migration.batch-size"));
|
||||||
MigrationModel model = session.getProvider(DeploymentStateProvider.class).getMigrationModel();
|
MigrationModel model = session.getProvider(DeploymentStateProvider.class).getMigrationModel();
|
||||||
|
|
||||||
ModelVersion currentVersion = new ModelVersion(Version.VERSION_KEYCLOAK);
|
ModelVersion currentVersion = new ModelVersion(Version.VERSION);
|
||||||
ModelVersion latestUpdate = migrations[migrations.length-1].getVersion();
|
ModelVersion latestUpdate = migrations[migrations.length-1].getVersion();
|
||||||
ModelVersion databaseVersion = model.getStoredVersion() != null ? new ModelVersion(model.getStoredVersion()) : null;
|
ModelVersion databaseVersion = model.getStoredVersion() != null ? new ModelVersion(model.getStoredVersion()) : null;
|
||||||
|
|
||||||
|
|
95
pom.xml
|
@ -43,26 +43,15 @@
|
||||||
|
|
||||||
<quarkus.version>2.13.2.Final</quarkus.version>
|
<quarkus.version>2.13.2.Final</quarkus.version>
|
||||||
|
|
||||||
<!--
|
<project.build-time>${timestamp}</project.build-time>
|
||||||
Performing a Wildfly upgrade? Run the:
|
|
||||||
|
|
||||||
"./misc/scripts/upgrade-wildfly/upgrade-keycloak-to-wildfly-tag.py"
|
|
||||||
|
|
||||||
script with the corresponding Wildfly tag, e.g. '20.0.0.Final' to get necessary Keycloak bits
|
|
||||||
updated automatically based on corresponding artifact versions used in Wildfly and Wildfly Core
|
|
||||||
|
|
||||||
IMPORTANT: If you add new dependency name / version property below, be sure to update the
|
|
||||||
"./misc/scripts/upgrade-wildfly/upgrade-keycloak-to-wildfly-tag.py" script too to ensure
|
|
||||||
the script continues to work
|
|
||||||
-->
|
|
||||||
|
|
||||||
<product.rhsso.version>7.5.0.GA</product.rhsso.version>
|
|
||||||
|
|
||||||
<product.build-time>${timestamp}</product.build-time>
|
|
||||||
<wildfly.version>26.1.1.Final</wildfly.version>
|
<wildfly.version>26.1.1.Final</wildfly.version>
|
||||||
<wildfly.build-tools.version>1.2.13.Final</wildfly.build-tools.version>
|
<wildfly.build-tools.version>1.2.13.Final</wildfly.build-tools.version>
|
||||||
<eap.version>7.4.0.GA-redhat-00005</eap.version>
|
|
||||||
<wildfly.core.version>18.1.1.Final</wildfly.core.version>
|
<wildfly.core.version>18.1.1.Final</wildfly.core.version>
|
||||||
|
<apache.httpcomponents.fuse.version>4.5.2</apache.httpcomponents.fuse.version>
|
||||||
|
<apache.httpcomponents.httpcore.fuse.version>4.4.4</apache.httpcomponents.httpcore.fuse.version>
|
||||||
|
<ee.maven.groupId>org.wildfly</ee.maven.groupId>
|
||||||
|
<ee.maven.version>${wildfly.version}</ee.maven.version>
|
||||||
|
|
||||||
<jboss.as.version>7.2.0.Final</jboss.as.version>
|
<jboss.as.version>7.2.0.Final</jboss.as.version>
|
||||||
<jboss.as.subsystem.test.version>7.5.22.Final-redhat-1</jboss.as.subsystem.test.version>
|
<jboss.as.subsystem.test.version>7.5.22.Final-redhat-1</jboss.as.subsystem.test.version>
|
||||||
|
@ -1907,29 +1896,6 @@
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
<profiles>
|
<profiles>
|
||||||
<profile>
|
|
||||||
<id>community</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>!product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<properties>
|
|
||||||
<product.name>Keycloak</product.name>
|
|
||||||
<product.name.full>Keycloak</product.name.full>
|
|
||||||
<product.slot>keycloak</product.slot>
|
|
||||||
<product.wildfly.console.slot>main</product.wildfly.console.slot>
|
|
||||||
<product.name-html>\u003Cdiv class="kc-logo-text"\u003E\u003Cspan\u003EKeycloak\u003C\u002Fspan\u003E\u003C\u002Fdiv\u003E</product.name-html>
|
|
||||||
<product.version>${project.version}</product.version>
|
|
||||||
<product.default-profile>community</product.default-profile>
|
|
||||||
<apache.httpcomponents.fuse.version>4.5.2</apache.httpcomponents.fuse.version>
|
|
||||||
<apache.httpcomponents.httpcore.fuse.version>4.4.4</apache.httpcomponents.httpcore.fuse.version>
|
|
||||||
<ee.maven.groupId>org.wildfly</ee.maven.groupId>
|
|
||||||
<ee.maven.version>${wildfly.version}</ee.maven.version>
|
|
||||||
<product.filename.version>${project.version}</product.filename.version>
|
|
||||||
</properties>
|
|
||||||
</profile>
|
|
||||||
|
|
||||||
<profile>
|
<profile>
|
||||||
<id>jdk9</id>
|
<id>jdk9</id>
|
||||||
<activation>
|
<activation>
|
||||||
|
@ -1942,57 +1908,6 @@
|
||||||
</properties>
|
</properties>
|
||||||
</profile>
|
</profile>
|
||||||
|
|
||||||
<profile>
|
|
||||||
<id>product</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<properties>
|
|
||||||
<product.name.full>Red Hat Single Sign-On</product.name.full>
|
|
||||||
<product.name>rh-sso</product.name>
|
|
||||||
<product.slot>rh-sso</product.slot>
|
|
||||||
<product.wildfly.console.slot>eap</product.wildfly.console.slot>
|
|
||||||
<product.name-html>\u003Cstrong\u003ERed Hat\u003C\u002Fstrong\u003E\u003Csup\u003E\u00AE\u003C\u002Fsup\u003E Single Sign On</product.name-html>
|
|
||||||
<product.version>${product.rhsso.version}</product.version>
|
|
||||||
<apache.httpcomponents.fuse.version>4.5.2.redhat-2</apache.httpcomponents.fuse.version>
|
|
||||||
<apache.httpcomponents.httpcore.fuse.version>4.4.4.redhat-2</apache.httpcomponents.httpcore.fuse.version>
|
|
||||||
<product.default-profile>product</product.default-profile>
|
|
||||||
<ee.maven.groupId>org.jboss.eap</ee.maven.groupId>
|
|
||||||
<ee.maven.version>${eap.version}</ee.maven.version>
|
|
||||||
<!-- Properties that drive the names of various directories produced by and used in the build -->
|
|
||||||
<server.output.dir.prefix>${product.name}</server.output.dir.prefix>
|
|
||||||
<!-- Version suffix that is appended to directories. Default is the maven GAV version but this can be edited to use a short form version -->
|
|
||||||
<server.output.dir.version>${product.filename.version}</server.output.dir.version>
|
|
||||||
</properties>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.codehaus.mojo</groupId>
|
|
||||||
<artifactId>build-helper-maven-plugin</artifactId>
|
|
||||||
<version>1.7</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>set-product-filename-version</id>
|
|
||||||
<goals>
|
|
||||||
<goal>regex-property</goal>
|
|
||||||
</goals>
|
|
||||||
<phase>initialize</phase>
|
|
||||||
<configuration>
|
|
||||||
<name>product.filename.version</name>
|
|
||||||
<value>${product.rhsso.version}</value>
|
|
||||||
<regex>^(\d+(\.\d+)?).*?$</regex>
|
|
||||||
<replacement>$1</replacement>
|
|
||||||
<failIfNoMatch>true</failIfNoMatch>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
|
|
||||||
<profile>
|
<profile>
|
||||||
<id>testsuite</id>
|
<id>testsuite</id>
|
||||||
<activation>
|
<activation>
|
||||||
|
|
2
quarkus/dist/src/main/version.txt
vendored
|
@ -1 +1 @@
|
||||||
Keycloak - Version ${product.version}
|
Keycloak - Version ${project.version}
|
||||||
|
|
|
@ -63,7 +63,7 @@ public class KeycloakMain implements QuarkusApplication {
|
||||||
private static final String KEYCLOAK_ADMIN_PASSWORD_ENV_VAR = "KEYCLOAK_ADMIN_PASSWORD";
|
private static final String KEYCLOAK_ADMIN_PASSWORD_ENV_VAR = "KEYCLOAK_ADMIN_PASSWORD";
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.setProperty("kc.version", Version.VERSION_KEYCLOAK);
|
System.setProperty("kc.version", Version.VERSION);
|
||||||
List<String> cliArgs = Picocli.parseArgs(args);
|
List<String> cliArgs = Picocli.parseArgs(args);
|
||||||
|
|
||||||
if (cliArgs.isEmpty()) {
|
if (cliArgs.isEmpty()) {
|
||||||
|
|
|
@ -176,7 +176,6 @@ public class QuarkusWelcomeResource {
|
||||||
|
|
||||||
map.put("adminConsoleEnabled", isAdminConsoleEnabled());
|
map.put("adminConsoleEnabled", isAdminConsoleEnabled());
|
||||||
map.put("productName", Version.NAME);
|
map.put("productName", Version.NAME);
|
||||||
map.put("productNameFull", Version.NAME_FULL);
|
|
||||||
|
|
||||||
map.put("properties", theme.getProperties());
|
map.put("properties", theme.getProperties());
|
||||||
map.put("adminUrl", session.getContext().getUri(UrlType.ADMIN).getBaseUriBuilder().path("/admin/").build());
|
map.put("adminUrl", session.getContext().getUri(UrlType.ADMIN).getBaseUriBuilder().path("/admin/").build());
|
||||||
|
|
|
@ -252,7 +252,7 @@ public class LegacyJpaConnectionProviderFactory extends AbstractJpaConnectionPro
|
||||||
|
|
||||||
JpaUpdaterProvider updater = session.getProvider(JpaUpdaterProvider.class);
|
JpaUpdaterProvider updater = session.getProvider(JpaUpdaterProvider.class);
|
||||||
|
|
||||||
boolean requiresMigration = version == null || !version.equals(new ModelVersion(Version.VERSION_KEYCLOAK).toString());
|
boolean requiresMigration = version == null || !version.equals(new ModelVersion(Version.VERSION).toString());
|
||||||
session.setAttribute(VERIFY_AND_RUN_MASTER_CHANGELOG, requiresMigration);
|
session.setAttribute(VERIFY_AND_RUN_MASTER_CHANGELOG, requiresMigration);
|
||||||
|
|
||||||
JpaUpdaterProvider.Status status = updater.validate(connection, schema);
|
JpaUpdaterProvider.Status status = updater.validate(connection, schema);
|
||||||
|
|
|
@ -28,7 +28,7 @@ public final class DockerKeycloakDistribution implements KeycloakDistribution {
|
||||||
private String stderr = "";
|
private String stderr = "";
|
||||||
private ToStringConsumer backupConsumer = new ToStringConsumer();
|
private ToStringConsumer backupConsumer = new ToStringConsumer();
|
||||||
|
|
||||||
private File distributionFile = new File("../../dist/target/keycloak-" + Version.VERSION_KEYCLOAK + ".tar.gz");
|
private File distributionFile = new File("../../dist/target/keycloak-" + Version.VERSION + ".tar.gz");
|
||||||
private File dockerFile = new File("../../container/Dockerfile");
|
private File dockerFile = new File("../../container/Dockerfile");
|
||||||
|
|
||||||
private GenericContainer<?> keycloakContainer = null;
|
private GenericContainer<?> keycloakContainer = null;
|
||||||
|
|
|
@ -343,7 +343,7 @@ public final class RawKeycloakDistribution implements KeycloakDistribution {
|
||||||
Path distRootPath = Paths.get(System.getProperty("java.io.tmpdir")).resolve("kc-tests");
|
Path distRootPath = Paths.get(System.getProperty("java.io.tmpdir")).resolve("kc-tests");
|
||||||
distRootPath.toFile().mkdirs();
|
distRootPath.toFile().mkdirs();
|
||||||
|
|
||||||
File distFile = new File("../../dist/" + File.separator + "target" + File.separator + "keycloak-" + Version.VERSION_KEYCLOAK + ".zip");
|
File distFile = new File("../../dist/" + File.separator + "target" + File.separator + "keycloak-" + Version.VERSION + ".zip");
|
||||||
if (!distFile.exists()) {
|
if (!distFile.exists()) {
|
||||||
throw new RuntimeException("Distribution archive " + distFile.getAbsolutePath() +" doesn't exist");
|
throw new RuntimeException("Distribution archive " + distFile.getAbsolutePath() +" doesn't exist");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{
|
{
|
||||||
"title": "${product.name.full} Admin REST API",
|
"title": "Keycloak Admin REST API",
|
||||||
"description": "This is a REST API reference for the ${product.name.full} Admin"
|
"description": "This is a REST API reference for the Keycloak Admin"
|
||||||
}
|
}
|
|
@ -179,7 +179,6 @@ public class WelcomeResource {
|
||||||
|
|
||||||
map.put("adminConsoleEnabled", isAdminConsoleEnabled());
|
map.put("adminConsoleEnabled", isAdminConsoleEnabled());
|
||||||
map.put("productName", Version.NAME);
|
map.put("productName", Version.NAME);
|
||||||
map.put("productNameFull", Version.NAME_FULL);
|
|
||||||
|
|
||||||
map.put("properties", theme.getProperties());
|
map.put("properties", theme.getProperties());
|
||||||
map.put("adminUrl", session.getContext().getUri(UrlType.ADMIN).getBaseUriBuilder().path("/admin/").build());
|
map.put("adminUrl", session.getContext().getUri(UrlType.ADMIN).getBaseUriBuilder().path("/admin/").build());
|
||||||
|
|
|
@ -966,7 +966,7 @@ public class TestingResourceProvider implements RealmResourceProvider {
|
||||||
* KEYCLOAK-12958
|
* KEYCLOAK-12958
|
||||||
*/
|
*/
|
||||||
private void disableFeatureProperties(Profile.Feature feature) {
|
private void disableFeatureProperties(Profile.Feature feature) {
|
||||||
Profile.Type type = Profile.getName().equals("product") ? feature.getTypeProduct() : feature.getTypeProject();
|
Profile.Type type = feature.getType();
|
||||||
if (type.equals(Profile.Type.DEFAULT)) {
|
if (type.equals(Profile.Type.DEFAULT)) {
|
||||||
System.setProperty("keycloak.profile.feature." + feature.toString().toLowerCase(), "disabled");
|
System.setProperty("keycloak.profile.feature." + feature.toString().toLowerCase(), "disabled");
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -152,39 +152,4 @@
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>community</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>!product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-deploy-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<skip>true</skip>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
|
|
||||||
<profile>
|
|
||||||
<id>productized-server</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>previous.product.unpacked.folder.name</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<properties>
|
|
||||||
<auth.server.home>${project.build.directory}/unpacked/${previous.product.unpacked.folder.name}
|
|
||||||
</auth.server.home>
|
|
||||||
</properties>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
</project>
|
</project>
|
|
@ -33,6 +33,7 @@
|
||||||
<script.suffix>sh</script.suffix>
|
<script.suffix>sh</script.suffix>
|
||||||
|
|
||||||
<!--app container versions-->
|
<!--app container versions-->
|
||||||
|
<eap.version>7.4.0.GA-redhat-00005</eap.version>
|
||||||
<eap71.version>7.1.5.GA-redhat-00002</eap71.version>
|
<eap71.version>7.1.5.GA-redhat-00002</eap71.version>
|
||||||
<jboss.as.version>7.1.1.Final</jboss.as.version>
|
<jboss.as.version>7.1.1.Final</jboss.as.version>
|
||||||
|
|
||||||
|
|
|
@ -405,25 +405,6 @@
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</profile>
|
</profile>
|
||||||
<profile>
|
|
||||||
<id>product</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>com.igormaznitsa</groupId>
|
|
||||||
<artifactId>mvn-golang-wrapper</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<skip>true</skip>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
|
|
||||||
<profile>
|
<profile>
|
||||||
<id>app-server-jetty94</id>
|
<id>app-server-jetty94</id>
|
||||||
|
|
|
@ -729,16 +729,6 @@ public abstract class AbstractKeycloakTest {
|
||||||
return in;
|
return in;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get product/project name
|
|
||||||
*
|
|
||||||
* @return f.e. 'RH-SSO' or 'Keycloak'
|
|
||||||
*/
|
|
||||||
protected String getProjectName() {
|
|
||||||
final boolean isProduct = adminClient.serverInfo().getInfo().getProfileInfo().getName().equals("product");
|
|
||||||
return isProduct ? Profile.PRODUCT_NAME : Profile.PROJECT_NAME;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MapRealmProvider uses session.invalidate() instead of calling e.g.
|
* MapRealmProvider uses session.invalidate() instead of calling e.g.
|
||||||
* session.clients().removeClients(realm); for clients (where clients are being removed one by one)
|
* session.clients().removeClients(realm); for clients (where clients are being removed one by one)
|
||||||
|
|
|
@ -417,7 +417,7 @@ public abstract class AbstractBaseBrokerTest extends AbstractKeycloakTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void waitForAccountManagementTitle() {
|
protected void waitForAccountManagementTitle() {
|
||||||
final String title = getProjectName().toLowerCase() + " account management";
|
final String title = "Keycloak account management";
|
||||||
waitForPage(driver, title, true);
|
waitForPage(driver, title, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1137,7 +1137,7 @@ public class ResetPasswordTest extends AbstractTestRealmKeycloakTest {
|
||||||
final String REQUIRED_URI = OAuthClient.AUTH_SERVER_ROOT + "/realms/test/account/applications";
|
final String REQUIRED_URI = OAuthClient.AUTH_SERVER_ROOT + "/realms/test/account/applications";
|
||||||
final String REDIRECT_URI = getAccountRedirectUrl() + "?path=applications";
|
final String REDIRECT_URI = getAccountRedirectUrl() + "?path=applications";
|
||||||
final String CLIENT_ID = "account";
|
final String CLIENT_ID = "account";
|
||||||
final String ACCOUNT_MANAGEMENT_TITLE = getProjectName() + " Account Management";
|
final String ACCOUNT_MANAGEMENT_TITLE = "Keycloak Account Management";
|
||||||
|
|
||||||
try (BrowserTabUtil tabUtil = BrowserTabUtil.getInstanceAndSetEnv(driver)) {
|
try (BrowserTabUtil tabUtil = BrowserTabUtil.getInstanceAndSetEnv(driver)) {
|
||||||
assertThat(tabUtil.getCountOfTabs(), Matchers.is(1));
|
assertThat(tabUtil.getCountOfTabs(), Matchers.is(1));
|
||||||
|
|
|
@ -58,7 +58,7 @@ public class MigrationModelTest extends KeycloakModelTest {
|
||||||
public void test() {
|
public void test() {
|
||||||
inComittedTransaction(1, (session , i) -> {
|
inComittedTransaction(1, (session , i) -> {
|
||||||
|
|
||||||
String currentVersion = new ModelVersion(Version.VERSION_KEYCLOAK).toString();
|
String currentVersion = new ModelVersion(Version.VERSION).toString();
|
||||||
|
|
||||||
JpaConnectionProvider p = session.getProvider(JpaConnectionProvider.class);
|
JpaConnectionProvider p = session.getProvider(JpaConnectionProvider.class);
|
||||||
EntityManager em = p.getEntityManager();
|
EntityManager em = p.getEntityManager();
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<server.version>${product.version}</server.version>
|
<server.version>${project.version}</server.version>
|
||||||
<management.user/>
|
<management.user/>
|
||||||
<management.user.password/>
|
<management.user.password/>
|
||||||
<jstat>false</jstat>
|
<jstat>false</jstat>
|
||||||
|
|
|
@ -46,6 +46,13 @@
|
||||||
<skip>true</skip>
|
<skip>true</skip>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-deploy-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<skip>true</skip>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
<modules>
|
<modules>
|
||||||
|
|
|
@ -69,6 +69,9 @@
|
||||||
<exclude>**/keycloak.v2/account/src/**</exclude>
|
<exclude>**/keycloak.v2/account/src/**</exclude>
|
||||||
</excludes>
|
</excludes>
|
||||||
</resource>
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources-community</directory>
|
||||||
|
</resource>
|
||||||
</resources>
|
</resources>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
@ -190,43 +193,6 @@
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</profile>
|
</profile>
|
||||||
|
|
||||||
<profile>
|
|
||||||
<id>community</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>!product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<resources>
|
|
||||||
<resource>
|
|
||||||
<directory>src/main/resources-community</directory>
|
|
||||||
</resource>
|
|
||||||
</resources>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
<profile>
|
|
||||||
<id>product</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>product</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<resources>
|
|
||||||
<resource>
|
|
||||||
<directory>src/main/resources-product</directory>
|
|
||||||
</resource>
|
|
||||||
<resource>
|
|
||||||
<directory>src/main/resources</directory>
|
|
||||||
<includes>
|
|
||||||
<include>**/node_modules/rcue/**</include>
|
|
||||||
</includes>
|
|
||||||
</resource>
|
|
||||||
</resources>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
</profiles>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
"themes": [{
|
|
||||||
"name" : "base",
|
|
||||||
"types": [ "admin", "account", "login", "email" ]
|
|
||||||
}, {
|
|
||||||
"name" : "keycloak",
|
|
||||||
"types": [ "admin", "account", "login", "common", "email", "welcome" ]
|
|
||||||
}, {
|
|
||||||
"name" : "rh-sso",
|
|
||||||
"types": [ "admin", "account", "login", "common", "email", "welcome" ]
|
|
||||||
}, {
|
|
||||||
"name" : "keycloak.v2",
|
|
||||||
"types": [ "account" ]
|
|
||||||
}, {
|
|
||||||
"name" : "rh-sso.v2",
|
|
||||||
"types": [ "account" ]
|
|
||||||
}]
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
locales=en
|
|
|
@ -1,2 +0,0 @@
|
||||||
import=common/keycloak
|
|
||||||
locales=en
|
|
|
@ -1 +0,0 @@
|
||||||
locales=en
|
|
|
@ -1 +0,0 @@
|
||||||
locales=en
|
|
|
@ -1,4 +0,0 @@
|
||||||
# Put new messages for Account Console Here
|
|
||||||
# Feel free to use any existing messages from the base theme
|
|
||||||
accountManagementWelcomeMessage=Welcome to RH-SSO Account Management
|
|
||||||
accountManagementTitle=RH-SSO Account Management
|
|
Before Width: | Height: | Size: 4.3 KiB |
|
@ -1,3 +0,0 @@
|
||||||
.brand {
|
|
||||||
height: 16px;
|
|
||||||
}
|
|
|
@ -1,101 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 223.4 12.5" style="enable-background:new 0 0 223.4 12.5;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#FFFFFF;}
|
|
||||||
</style>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M6.5,12.3l-2-4H3.2v4H0V0.3h5.3c0.7,0,1.3,0.1,1.9,0.2c0.6,0.1,1.1,0.4,1.5,0.7c0.4,0.3,0.7,0.7,0.9,1.2
|
|
||||||
C9.9,2.9,10,3.5,10,4.2c0,0.9-0.2,1.6-0.6,2.2C9,7,8.5,7.4,7.8,7.7l2.4,4.6H6.5z M6.4,3.4C6.1,3.1,5.8,3,5.2,3h-2v2.6h2
|
|
||||||
c0.5,0,0.9-0.1,1.2-0.3c0.2-0.2,0.3-0.6,0.3-1C6.7,3.9,6.6,3.6,6.4,3.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M12.2,12.3V0.3h9.1v2.8h-5.9v1.6H19v2.7h-3.5v2h6v2.8H12.2z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M33.5,9.1c-0.3,0.8-0.7,1.4-1.2,1.9c-0.5,0.5-1.2,0.8-2,1c-0.8,0.2-1.7,0.3-2.8,0.3h-3.9V0.3h4.2
|
|
||||||
c0.9,0,1.8,0.1,2.5,0.3c0.8,0.2,1.4,0.5,1.9,1c0.5,0.5,0.9,1.1,1.2,1.8c0.3,0.7,0.4,1.7,0.4,2.8C33.9,7.3,33.8,8.3,33.5,9.1z
|
|
||||||
M30.4,4.9c-0.1-0.4-0.3-0.7-0.5-1c-0.2-0.2-0.5-0.4-0.9-0.6c-0.4-0.1-0.8-0.2-1.3-0.2h-0.8v6.3h0.7c0.5,0,1-0.1,1.3-0.2
|
|
||||||
c0.4-0.1,0.7-0.3,0.9-0.5c0.2-0.2,0.4-0.6,0.5-1c0.1-0.4,0.2-0.9,0.2-1.5C30.5,5.7,30.5,5.3,30.4,4.9z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M48,12.3V7.6h-3.7v4.7h-3.4V0.3h3.4v4.4H48V0.3h3.4v11.9H48z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M61.5,12.3l-0.6-2.1h-3.6l-0.6,2.1h-3.5l4.3-11.9h3.3l4.3,11.9H61.5z M59.8,6.7c-0.1-0.4-0.2-0.7-0.3-1
|
|
||||||
c-0.1-0.3-0.2-0.5-0.2-0.8c-0.1-0.2-0.1-0.4-0.2-0.6c0-0.2-0.1-0.4-0.1-0.6C59,4,59,4.2,58.9,4.4c0,0.2-0.1,0.4-0.2,0.6
|
|
||||||
c-0.1,0.2-0.1,0.5-0.2,0.8c-0.1,0.3-0.2,0.6-0.3,1l-0.2,0.8h2L59.8,6.7z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M71.3,3.2v9.1H68V3.2h-3.3V0.3h10v2.9H71.3z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M78.6,2c-0.1,0.1-0.1,0.3-0.3,0.4c-0.1,0.1-0.2,0.2-0.4,0.3c-0.1,0.1-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.5-0.1
|
|
||||||
c-0.1-0.1-0.3-0.1-0.4-0.3c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5c0-0.2,0-0.3,0.1-0.5c0.1-0.1,0.1-0.3,0.3-0.4
|
|
||||||
c0.1-0.1,0.2-0.2,0.4-0.3c0.1-0.1,0.3-0.1,0.5-0.1c0.2,0,0.3,0,0.5,0.1c0.1,0.1,0.3,0.1,0.4,0.3c0.1,0.1,0.2,0.2,0.3,0.4
|
|
||||||
c0.1,0.1,0.1,0.3,0.1,0.5C78.7,1.7,78.6,1.8,78.6,2z M78.4,1.1c-0.1-0.1-0.1-0.2-0.2-0.3c-0.1-0.1-0.2-0.2-0.3-0.2
|
|
||||||
c-0.1-0.1-0.3-0.1-0.4-0.1c-0.1,0-0.3,0-0.4,0.1c-0.1,0.1-0.2,0.1-0.3,0.2c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.1,0.4
|
|
||||||
c0,0.1,0,0.3,0.1,0.4s0.1,0.2,0.2,0.3c0.1,0.1,0.2,0.2,0.3,0.2c0.1,0,0.3,0.1,0.4,0.1c0.1,0,0.3,0,0.4-0.1
|
|
||||||
c0.1-0.1,0.2-0.1,0.3-0.2c0.1-0.1,0.2-0.2,0.2-0.3c0.1-0.1,0.1-0.3,0.1-0.4C78.5,1.4,78.4,1.2,78.4,1.1z M77.9,1.5
|
|
||||||
c-0.1,0.1-0.1,0.1-0.2,0.1L78,2.1h-0.3l-0.3-0.5h-0.3v0.5H77V0.8h0.6c0.1,0,0.1,0,0.2,0c0.1,0,0.1,0,0.1,0.1C77.9,1,77.9,1,78,1
|
|
||||||
c0,0,0,0.1,0,0.2C78,1.3,78,1.4,77.9,1.5z M77.7,1.1c0,0-0.1,0-0.1,0h-0.3v0.4h0.3c0.1,0,0.1,0,0.1,0c0,0,0.1-0.1,0.1-0.1
|
|
||||||
C77.8,1.2,77.8,1.1,77.7,1.1z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M91.4,10.2c-0.2,0.5-0.5,0.9-0.9,1.2S89.6,12,89,12.2c-0.6,0.2-1.3,0.3-2.1,0.3c-1,0-1.9-0.2-2.8-0.6
|
|
||||||
c-0.8-0.4-1.5-0.9-1.9-1.6l1.7-1.6c0.4,0.5,0.9,0.8,1.4,1.1s1.1,0.3,1.7,0.3c0.7,0,1.3-0.1,1.6-0.3s0.5-0.5,0.5-1
|
|
||||||
c0-0.2,0-0.4-0.1-0.5C89,8.1,88.8,8,88.6,7.9c-0.2-0.1-0.5-0.2-0.8-0.4c-0.4-0.1-0.8-0.2-1.4-0.4c-0.6-0.1-1.1-0.3-1.5-0.4
|
|
||||||
C84.4,6.5,84,6.3,83.7,6c-0.3-0.3-0.6-0.6-0.8-1c-0.2-0.4-0.3-0.9-0.3-1.5c0-0.6,0.1-1,0.3-1.5c0.2-0.4,0.5-0.8,0.9-1.1
|
|
||||||
c0.4-0.3,0.8-0.5,1.4-0.7C85.8,0.1,86.4,0,87,0c0.9,0,1.8,0.2,2.5,0.5c0.7,0.3,1.3,0.8,1.9,1.4l-1.7,1.7c-0.4-0.4-0.8-0.7-1.3-0.9
|
|
||||||
s-0.9-0.3-1.5-0.3c-0.3,0-0.6,0-0.8,0.1c-0.2,0.1-0.4,0.1-0.5,0.2s-0.2,0.2-0.3,0.3c-0.1,0.1-0.1,0.3-0.1,0.4c0,0.2,0,0.4,0.1,0.5
|
|
||||||
c0.1,0.1,0.2,0.2,0.4,0.4c0.2,0.1,0.4,0.2,0.7,0.3c0.3,0.1,0.7,0.2,1.2,0.3c0.5,0.1,1,0.2,1.4,0.4c0.5,0.2,0.9,0.4,1.3,0.6
|
|
||||||
C90.7,6.2,91,6.6,91.3,7c0.2,0.4,0.4,1,0.4,1.6C91.6,9.2,91.5,9.7,91.4,10.2z"/>
|
|
||||||
<path class="st0" d="M94.4,12.3V0.2h2.4v12.1H94.4z"/>
|
|
||||||
<path class="st0" d="M107.7,12.3l-4.4-6.6c-0.1-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.3-0.5-0.4-0.6c0,0.1,0,0.3,0,0.5
|
|
||||||
c0,0.2,0,0.5,0,0.7c0,0.3,0,0.5,0,0.8c0,0.3,0,0.5,0,0.6v5.3h-2.4V0.2h2.3l4.3,6.4c0.1,0.2,0.3,0.5,0.5,0.7
|
|
||||||
c0.2,0.3,0.3,0.5,0.4,0.6c0-0.1,0-0.3,0-0.5c0-0.2,0-0.5,0-0.7c0-0.3,0-0.5,0-0.8c0-0.3,0-0.5,0-0.6V0.2h2.4v12.1H107.7z"/>
|
|
||||||
<path class="st0" d="M122.1,9.7c-0.2,0.6-0.6,1.1-1,1.5c-0.4,0.4-0.9,0.7-1.5,0.9c-0.6,0.2-1.2,0.3-1.9,0.3
|
|
||||||
c-0.8,0-1.5-0.1-2.2-0.4c-0.6-0.3-1.2-0.7-1.7-1.3c-0.5-0.5-0.8-1.2-1.1-2c-0.3-0.8-0.4-1.6-0.4-2.6c0-0.9,0.1-1.8,0.4-2.5
|
|
||||||
c0.3-0.8,0.6-1.4,1.1-2s1-1,1.7-1.3c0.7-0.3,1.4-0.5,2.2-0.5c0.6,0,1.2,0.1,1.6,0.2c0.5,0.1,0.9,0.3,1.3,0.6s0.7,0.6,1,1
|
|
||||||
c0.3,0.4,0.5,0.8,0.7,1.3L120,4c-0.1-0.2-0.2-0.4-0.4-0.6s-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.5-0.1-0.8-0.1
|
|
||||||
c-0.4,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.7,0.5-0.9,0.8s-0.4,0.7-0.6,1.2c-0.1,0.5-0.2,1-0.2,1.5c0,0.6,0.1,1.1,0.2,1.5
|
|
||||||
c0.1,0.5,0.3,0.9,0.6,1.2c0.2,0.3,0.5,0.6,0.9,0.8c0.4,0.2,0.8,0.3,1.2,0.3c0.4,0,0.8,0,1.1-0.1c0.3-0.1,0.5-0.2,0.7-0.4
|
|
||||||
c0.2-0.2,0.3-0.4,0.4-0.6s0.2-0.5,0.2-0.7h-1.9V6h4.3v1.6C122.4,8.4,122.3,9.1,122.1,9.7z"/>
|
|
||||||
<path class="st0" d="M125,12.3V0.2h2.4v9.7h6.1v2.4H125z"/>
|
|
||||||
<path class="st0" d="M135.7,12.3V0.2h8.4v2.4h-6v2.1h3.5V7h-3.5v2.9h6.2v2.4H135.7z"/>
|
|
||||||
<path class="st0" d="M160.5,10.2c-0.2,0.5-0.5,0.9-0.9,1.2s-0.9,0.6-1.5,0.8c-0.6,0.2-1.3,0.3-2.1,0.3c-1,0-1.9-0.2-2.8-0.6
|
|
||||||
s-1.5-0.9-1.9-1.6l1.7-1.6c0.4,0.5,0.9,0.8,1.4,1.1s1.1,0.3,1.7,0.3c0.7,0,1.3-0.1,1.6-0.3c0.3-0.2,0.5-0.5,0.5-1
|
|
||||||
c0-0.2,0-0.4-0.1-0.5c-0.1-0.1-0.2-0.3-0.4-0.4c-0.2-0.1-0.5-0.2-0.8-0.4c-0.4-0.1-0.8-0.2-1.4-0.4C155,7,154.5,6.9,154,6.7
|
|
||||||
c-0.5-0.2-0.9-0.4-1.2-0.7c-0.3-0.3-0.6-0.6-0.8-1c-0.2-0.4-0.3-0.9-0.3-1.5c0-0.6,0.1-1,0.3-1.5c0.2-0.4,0.5-0.8,0.9-1.1
|
|
||||||
c0.4-0.3,0.8-0.5,1.4-0.7c0.5-0.2,1.1-0.2,1.7-0.2c0.9,0,1.8,0.2,2.5,0.5c0.7,0.3,1.3,0.8,1.9,1.4l-1.7,1.7
|
|
||||||
c-0.4-0.4-0.8-0.7-1.3-0.9s-0.9-0.3-1.5-0.3c-0.3,0-0.6,0-0.8,0.1c-0.2,0.1-0.4,0.1-0.5,0.2s-0.2,0.2-0.3,0.3
|
|
||||||
c-0.1,0.1-0.1,0.3-0.1,0.4c0,0.2,0,0.4,0.1,0.5c0.1,0.1,0.2,0.2,0.4,0.4c0.2,0.1,0.4,0.2,0.7,0.3c0.3,0.1,0.7,0.2,1.2,0.3
|
|
||||||
c0.5,0.1,1,0.2,1.4,0.4c0.5,0.2,0.9,0.4,1.3,0.6c0.4,0.3,0.7,0.6,0.9,1.1c0.2,0.4,0.4,1,0.4,1.6C160.8,9.2,160.7,9.7,160.5,10.2z"
|
|
||||||
/>
|
|
||||||
<path class="st0" d="M163.5,12.3V0.2h2.4v12.1H163.5z"/>
|
|
||||||
<path class="st0" d="M178.3,9.7c-0.2,0.6-0.6,1.1-1,1.5c-0.4,0.4-0.9,0.7-1.5,0.9c-0.6,0.2-1.2,0.3-1.9,0.3
|
|
||||||
c-0.8,0-1.5-0.1-2.2-0.4s-1.2-0.7-1.7-1.3c-0.5-0.5-0.8-1.2-1.1-2c-0.3-0.8-0.4-1.6-0.4-2.6c0-0.9,0.1-1.8,0.4-2.5
|
|
||||||
c0.3-0.8,0.6-1.4,1.1-2s1-1,1.7-1.3c0.7-0.3,1.4-0.5,2.2-0.5c0.6,0,1.2,0.1,1.6,0.2c0.5,0.1,0.9,0.3,1.3,0.6c0.4,0.3,0.7,0.6,1,1
|
|
||||||
s0.5,0.8,0.7,1.3L176.2,4c-0.1-0.2-0.2-0.4-0.4-0.6c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.5-0.1-0.8-0.1
|
|
||||||
c-0.4,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.7,0.5-0.9,0.8c-0.2,0.3-0.4,0.7-0.6,1.2c-0.1,0.5-0.2,1-0.2,1.5c0,0.6,0.1,1.1,0.2,1.5
|
|
||||||
c0.1,0.5,0.3,0.9,0.6,1.2c0.2,0.3,0.5,0.6,0.9,0.8c0.4,0.2,0.8,0.3,1.2,0.3c0.4,0,0.8,0,1.1-0.1c0.3-0.1,0.5-0.2,0.7-0.4
|
|
||||||
c0.2-0.2,0.3-0.4,0.4-0.6s0.2-0.5,0.2-0.7h-1.9V6h4.3v1.6C178.7,8.4,178.6,9.1,178.3,9.7z"/>
|
|
||||||
<path class="st0" d="M188.9,12.3l-4.4-6.6c-0.2-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.3-0.5-0.4-0.6c0,0.1,0,0.3,0,0.5
|
|
||||||
c0,0.2,0,0.5,0,0.7c0,0.3,0,0.5,0,0.8c0,0.3,0,0.5,0,0.6v5.3h-2.4V0.2h2.3l4.3,6.4c0.1,0.2,0.3,0.5,0.5,0.7
|
|
||||||
c0.2,0.3,0.3,0.5,0.4,0.6c0-0.1,0-0.3,0-0.5c0-0.2,0-0.5,0-0.7c0-0.3,0-0.5,0-0.8c0-0.3,0-0.5,0-0.6V0.2h2.4v12.1H188.9z"/>
|
|
||||||
<path class="st0" d="M193.6,7.2V4.8h5v2.4H193.6z"/>
|
|
||||||
<path class="st0" d="M210.7,8.8c-0.3,0.8-0.6,1.4-1.1,2c-0.5,0.5-1,0.9-1.7,1.2c-0.7,0.3-1.4,0.4-2.2,0.4c-0.8,0-1.5-0.1-2.2-0.4
|
|
||||||
s-1.2-0.7-1.7-1.2c-0.5-0.5-0.8-1.2-1.1-2c-0.3-0.8-0.4-1.6-0.4-2.6s0.1-1.9,0.4-2.6c0.3-0.8,0.6-1.4,1.1-2c0.5-0.5,1-0.9,1.7-1.2
|
|
||||||
c0.7-0.3,1.4-0.4,2.2-0.4c0.8,0,1.5,0.1,2.1,0.4s1.2,0.7,1.7,1.2c0.5,0.5,0.8,1.2,1.1,2c0.3,0.8,0.4,1.6,0.4,2.6
|
|
||||||
S211,8.1,210.7,8.8z M207.9,3.4c-0.5-0.7-1.2-1-2.1-1s-1.5,0.3-2,1S203,5,203,6.2c0,1.2,0.3,2.2,0.8,2.8c0.5,0.7,1.2,1,2.1,1
|
|
||||||
s1.5-0.3,2-1s0.8-1.6,0.8-2.8S208.4,4.1,207.9,3.4z"/>
|
|
||||||
<path class="st0" d="M221.2,12.3l-4.4-6.6c-0.2-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.3-0.5-0.4-0.6c0,0.1,0,0.3,0,0.5
|
|
||||||
c0,0.2,0,0.5,0,0.7c0,0.3,0,0.5,0,0.8c0,0.3,0,0.5,0,0.6v5.3h-2.4V0.2h2.3l4.3,6.4c0.1,0.2,0.3,0.5,0.5,0.7
|
|
||||||
c0.2,0.3,0.3,0.5,0.4,0.6c0-0.1,0-0.3,0-0.5c0-0.2,0-0.5,0-0.7c0-0.3,0-0.5,0-0.8c0-0.3,0-0.5,0-0.6V0.2h2.4v12.1H221.2z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 8.2 KiB |
|
@ -1 +0,0 @@
|
||||||
parent=keycloak.v2
|
|
|
@ -1 +0,0 @@
|
||||||
accountManagementTitle=RH-SSO Account Management
|
|
|
@ -1,279 +0,0 @@
|
||||||
html {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #F9F9F9;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
header .navbar {
|
|
||||||
margin-bottom: 0;
|
|
||||||
min-height: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header .container {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-title {
|
|
||||||
background-image: url('../img/brand.svg');
|
|
||||||
height: 25px;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
width: 172px;
|
|
||||||
margin: 3px 10px 5px;
|
|
||||||
text-indent: -99999px;
|
|
||||||
position: relative;
|
|
||||||
top: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-pf .navbar-utility {
|
|
||||||
right: 20px;
|
|
||||||
top: -34px;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-pf .navbar-utility > li > a {
|
|
||||||
color: #fff !important;
|
|
||||||
padding-bottom: 12px;
|
|
||||||
padding-top: 11px;
|
|
||||||
border-left: medium none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content-area {
|
|
||||||
background-color: #fff;
|
|
||||||
border-color: #CECECE;
|
|
||||||
border-style: solid;
|
|
||||||
border-width: 0 1px;
|
|
||||||
height: 100%;
|
|
||||||
padding: 0 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.margin-bottom {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Sidebar */
|
|
||||||
|
|
||||||
.bs-sidebar {
|
|
||||||
background-color: #f9f9f9;
|
|
||||||
padding-top: 44px;
|
|
||||||
padding-right: 0;
|
|
||||||
padding-left: 0;
|
|
||||||
z-index: 20;
|
|
||||||
}
|
|
||||||
.bs-sidebar ul {
|
|
||||||
list-style: none;
|
|
||||||
padding-left: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bs-sidebar ul li {
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
margin-left: -1em;
|
|
||||||
}
|
|
||||||
.bs-sidebar ul li a {
|
|
||||||
font-size: 14px;
|
|
||||||
padding-left: 25px;
|
|
||||||
color: #4d5258;
|
|
||||||
line-height: 28px;
|
|
||||||
display: block;
|
|
||||||
border-width: 1px 0 1px 1px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: #f9f9f9;
|
|
||||||
}
|
|
||||||
.bs-sidebar ul li a:hover,
|
|
||||||
.bs-sidebar ul li a:focus {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #777777;
|
|
||||||
border-right: 2px solid #aaa;
|
|
||||||
}
|
|
||||||
.bs-sidebar ul li.active a {
|
|
||||||
background-color: #c7e5f0;
|
|
||||||
border-color: #56bae0;
|
|
||||||
font-weight: bold;
|
|
||||||
background-image: url(../img/icon-sidebar-active.png);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: right center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bs-sidebar ul li.active a:hover {
|
|
||||||
border-right: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.content-area h2 {
|
|
||||||
font-family: "Open Sans", sans-serif;
|
|
||||||
font-weight: 100;
|
|
||||||
font-size: 24px;
|
|
||||||
margin-bottom: 25px;
|
|
||||||
margin-top: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subtitle {
|
|
||||||
text-align: right;
|
|
||||||
margin-top: 30px;
|
|
||||||
color: #909090;
|
|
||||||
}
|
|
||||||
|
|
||||||
.required {
|
|
||||||
color: #CB2915;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.alert {
|
|
||||||
margin-top: 30px;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.feedback-aligner .alert {
|
|
||||||
background-position: 1.27273em center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
border-radius: 2px;
|
|
||||||
border-width: 1px;
|
|
||||||
color: #4D5258;
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 1.1em;
|
|
||||||
line-height: 1.4em;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.909091em 3.63636em;
|
|
||||||
position: relative;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
.alert.alert-success {
|
|
||||||
background-color: #E4F1E1;
|
|
||||||
border-color: #4B9E39;
|
|
||||||
}
|
|
||||||
.alert.alert-error {
|
|
||||||
background-color: #F8E7E7;
|
|
||||||
border-color: #B91415;
|
|
||||||
}
|
|
||||||
.alert.alert-warning {
|
|
||||||
background-color: #FEF1E9;
|
|
||||||
border-color: #F17528;
|
|
||||||
}
|
|
||||||
.alert.alert-info {
|
|
||||||
background-color: #E4F3FA;
|
|
||||||
border-color: #5994B2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-horizontal {
|
|
||||||
border-top: 1px solid #E9E8E8;
|
|
||||||
padding-top: 23px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-horizontal .control-label {
|
|
||||||
color: #909090;
|
|
||||||
line-height: 1.4em;
|
|
||||||
padding-top: 5px;
|
|
||||||
position: relative;
|
|
||||||
text-align: right;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.control-label + .required {
|
|
||||||
position: absolute;
|
|
||||||
right: -2px;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#kc-form-buttons {
|
|
||||||
text-align: right;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#kc-form-buttons .btn-primary {
|
|
||||||
float: right;
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Authenticator page */
|
|
||||||
|
|
||||||
ol {
|
|
||||||
padding-left: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol li {
|
|
||||||
font-size: 13px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol li img {
|
|
||||||
margin-top: 15px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
border: 1px solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr + .form-horizontal {
|
|
||||||
border: none;
|
|
||||||
padding-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.kc-dropdown{
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.kc-dropdown > a{
|
|
||||||
display:block;
|
|
||||||
padding: 11px 10px 12px;
|
|
||||||
line-height: 12px;
|
|
||||||
font-size: 12px;
|
|
||||||
color: #fff !important;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
.kc-dropdown > a::after{
|
|
||||||
content: "\2c5";
|
|
||||||
margin-left: 4px;
|
|
||||||
}
|
|
||||||
.kc-dropdown:hover > a{
|
|
||||||
background-color: rgba(0,0,0,0.2);
|
|
||||||
}
|
|
||||||
.kc-dropdown ul li a{
|
|
||||||
padding: 1px 11px;
|
|
||||||
font-size: 12px;
|
|
||||||
color: #000 !important;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
text-decoration: none;
|
|
||||||
display:block;
|
|
||||||
line-height: 20px;
|
|
||||||
}
|
|
||||||
.kc-dropdown ul li a:hover{
|
|
||||||
color: #4d5258;
|
|
||||||
background-color: #d4edfa;
|
|
||||||
border-color: #b3d3e7;
|
|
||||||
}
|
|
||||||
.kc-dropdown ul{
|
|
||||||
position: absolute;
|
|
||||||
z-index: 2000;
|
|
||||||
list-style:none;
|
|
||||||
display:none;
|
|
||||||
padding: 5px 0px;
|
|
||||||
margin: 0px;
|
|
||||||
background-color: #fff !important;
|
|
||||||
border: 1px solid #b6b6b6;
|
|
||||||
border-radius: 1px;
|
|
||||||
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
|
||||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
|
||||||
background-clip: padding-box;
|
|
||||||
min-width: 100px;
|
|
||||||
}
|
|
||||||
.kc-dropdown:hover ul{
|
|
||||||
display:block;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#kc-totp-secret-key {
|
|
||||||
border: 1px solid #eee;
|
|
||||||
font-size: 16px;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 50px 0;
|
|
||||||
}
|
|
Before Width: | Height: | Size: 202 B |
|
@ -1,4 +0,0 @@
|
||||||
parent=keycloak
|
|
||||||
|
|
||||||
styles=css/account.css
|
|
||||||
stylesCommon=node_modules/rcue/dist/css/rcue.min.css node_modules/rcue/dist/css/rcue-additions.min.css
|
|
|
@ -1 +0,0 @@
|
||||||
consoleTitle=RH-SSO Admin Console
|
|
|
@ -1,411 +0,0 @@
|
||||||
html,body {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
form {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.required {
|
|
||||||
color: #f00;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tooltip-inner {
|
|
||||||
min-width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.margin-top {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.no-margin-top {
|
|
||||||
margin-top: 0px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
td.clip {
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
max-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
th.w-10 {
|
|
||||||
width: 10%;
|
|
||||||
}
|
|
||||||
|
|
||||||
th.w-15 {
|
|
||||||
width: 15%;
|
|
||||||
}
|
|
||||||
|
|
||||||
th.w-20 {
|
|
||||||
width: 20%;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
th.w-25 {
|
|
||||||
width: 25%;
|
|
||||||
}
|
|
||||||
|
|
||||||
th.w-30 {
|
|
||||||
width: 30%;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
th.w-35 {
|
|
||||||
width: 35%;
|
|
||||||
}
|
|
||||||
|
|
||||||
th.w-40 {
|
|
||||||
width: 40%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*********** Loading ***********/
|
|
||||||
|
|
||||||
.loading {
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
border: 1px solid #eee;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0px;
|
|
||||||
left: 0px;
|
|
||||||
padding: 2px 200px 2px 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*********** Feedback ***********/
|
|
||||||
|
|
||||||
.feedback-aligner {
|
|
||||||
position: fixed;
|
|
||||||
top: 15px;
|
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
height: 0;
|
|
||||||
z-index: 100;
|
|
||||||
}
|
|
||||||
.feedback-aligner .alert {
|
|
||||||
border-radius: 2px;
|
|
||||||
border-width: 1px;
|
|
||||||
display: inline-block;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*********** On-Off Switch ***********/
|
|
||||||
|
|
||||||
.onoffswitch {
|
|
||||||
-moz-user-select: none;
|
|
||||||
height: 26px;
|
|
||||||
position: relative;
|
|
||||||
width: 62px;
|
|
||||||
}
|
|
||||||
.onoffswitch .onoffswitch-checkbox {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.onoffswitch .onoffswitch-label {
|
|
||||||
border: 1px solid #bbb;
|
|
||||||
border-radius: 2px;
|
|
||||||
cursor: pointer;
|
|
||||||
display: block;
|
|
||||||
overflow: hidden;
|
|
||||||
width: 62px;
|
|
||||||
}
|
|
||||||
.onoffswitch .onoffswitch-inner {
|
|
||||||
display: block;
|
|
||||||
margin-left: -100%;
|
|
||||||
transition: margin 0.3s ease-in 0s;
|
|
||||||
width: 200%;
|
|
||||||
}
|
|
||||||
.onoffswitch .onoffswitch-inner > span {
|
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
color: white;
|
|
||||||
float: left;
|
|
||||||
font-size: 11px;
|
|
||||||
font-family: "Open Sans", sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
height: 24px;
|
|
||||||
line-height: 24px;
|
|
||||||
padding: 0;
|
|
||||||
width: 50%;
|
|
||||||
}
|
|
||||||
.onoffswitch .onoffswitch-switch {
|
|
||||||
background-image: linear-gradient(top, #fafafa 0%, #ededed 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
|
||||||
background-image: -moz-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
|
||||||
background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
|
||||||
background-image: -ms-linear-gradient(top, #fafafa 0%, #ededed 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(1, 0, #ededed));
|
|
||||||
border: 1px solid #aaa;
|
|
||||||
border-radius: 2px;
|
|
||||||
bottom: 0;
|
|
||||||
margin: 0;
|
|
||||||
position: absolute;
|
|
||||||
right: 39px;
|
|
||||||
top: 0;
|
|
||||||
transition: all 0.3s ease-in 0s;
|
|
||||||
-webkit-transition: all 0.3s ease-in 0s;
|
|
||||||
width: 23px;
|
|
||||||
}
|
|
||||||
.onoffswitch .onoffswitch-inner .onoffswitch-active {
|
|
||||||
background-image: linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
|
||||||
background-image: -moz-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
|
||||||
background-image: -webkit-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
|
||||||
background-image: -ms-linear-gradient(top, #00a9ec 0%, #009bd3 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #00a9ec), color-stop(1, 0, #009bd3));
|
|
||||||
color: #FFFFFF;
|
|
||||||
padding-left: 10px;
|
|
||||||
}
|
|
||||||
.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner .onoffswitch-active,
|
|
||||||
.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner .onoffswitch-inactive {
|
|
||||||
background-image: none;
|
|
||||||
background-color: #e5e5e5;
|
|
||||||
color: #9d9fa1;
|
|
||||||
}
|
|
||||||
.onoffswitch .onoffswitch-inner .onoffswitch-inactive {
|
|
||||||
background: linear-gradient(#fefefe, #e8e8e8) repeat scroll 0 0 transparent;
|
|
||||||
color: #4d5258;
|
|
||||||
padding-right: 10px;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
.onoffswitch .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
.onoffswitch .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*********** Select 2 ***********/
|
|
||||||
|
|
||||||
.select2-container {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.select2-container-multi .select2-choices .select2-search-field {
|
|
||||||
height: 26px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*********** New Menu ***********/
|
|
||||||
|
|
||||||
|
|
||||||
.sidebar-pf-left{
|
|
||||||
background: #292e34;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-pf .nav-pills > li a i, .sidebar-pf .nav-pills > li a span{
|
|
||||||
color: #72767b;
|
|
||||||
display: inline-block;
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
.sidebar-pf .nav-pills > li > a{
|
|
||||||
color: #dbdada;
|
|
||||||
padding: 0px 20px 0 30px!important;
|
|
||||||
line-height: 30px;
|
|
||||||
border-left-width: 12px;
|
|
||||||
border-left-style: solid;
|
|
||||||
border-left-color: #292e34;
|
|
||||||
margin-left: -6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-pf .nav-pills > li > a:hover{
|
|
||||||
background: #393f44;
|
|
||||||
border-color:#292e34;
|
|
||||||
border-left-color: #393f44;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-pf .nav-pills > li > a:after{
|
|
||||||
display: none!important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.sidebar-pf .nav-pills > li.active > a {
|
|
||||||
color: #fff;
|
|
||||||
background: #393f44!important;
|
|
||||||
border-bottom: 1px solid #000!important;
|
|
||||||
border-top: 1px solid #000!important;
|
|
||||||
border-left-color: #39a5dc!important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-pf .nav-pills > li.active a i, .sidebar-pf .nav-pills > li.active a span{
|
|
||||||
color: #39a5dc;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*********** Realm selector ***********/
|
|
||||||
|
|
||||||
.realm-selector{
|
|
||||||
color: #fff;
|
|
||||||
margin: 0 -20px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.realm-dropmenu{
|
|
||||||
display: none;
|
|
||||||
cursor: pointer;
|
|
||||||
position: absolute;
|
|
||||||
top: 60px;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
z-index: 999;
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.realm-selector:hover .realm-dropmenu{
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.realm-add{
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.realm-selector h2{
|
|
||||||
font-size: 16px;
|
|
||||||
line-height: 60px;
|
|
||||||
padding: 0 20px;
|
|
||||||
margin: 0;
|
|
||||||
border-bottom: 1px solid #d5d5d6;
|
|
||||||
}
|
|
||||||
|
|
||||||
.realm-selector h2 i{
|
|
||||||
display: inline-block;
|
|
||||||
float: right;
|
|
||||||
line-height: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.realm-selector ul{
|
|
||||||
padding-left: 0;
|
|
||||||
margin: 0;
|
|
||||||
list-style: none;
|
|
||||||
max-height: 200px;
|
|
||||||
overflow-y:auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.realm-selector ul li a{
|
|
||||||
line-height: 60px;
|
|
||||||
padding: 0 20px;
|
|
||||||
border-bottom: 1px solid #d5d5d6;
|
|
||||||
line-height: 39px;
|
|
||||||
display: block;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*********** Overwrites header defaults ***********/
|
|
||||||
|
|
||||||
.navbar-pf{
|
|
||||||
border-top: none!important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-pf .navbar-header {
|
|
||||||
height: 56px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-pf .navbar-brand {
|
|
||||||
padding: 0;
|
|
||||||
height: 56px;
|
|
||||||
line-height: 56px;
|
|
||||||
background-position: center center;
|
|
||||||
background-image: url('../img/brand.svg');
|
|
||||||
background-size: 172px 10px;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
width: 176px;
|
|
||||||
position: relative;
|
|
||||||
top: 50%;
|
|
||||||
-webkit-transform: translateY(-50%);
|
|
||||||
-ms-transform: translateY(-50%);
|
|
||||||
transform: translateY(-50%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-pf .navbar-utility .dropdown-toggle {
|
|
||||||
padding: 23px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.clickable {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 i {
|
|
||||||
color: #999999;
|
|
||||||
font-size: 18px;
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Action cell */
|
|
||||||
.kc-action-cell {
|
|
||||||
background-color: #eeeeee;
|
|
||||||
background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
|
|
||||||
text-align: center;
|
|
||||||
vertical-align: middle;
|
|
||||||
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
|
|
||||||
cursor:pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.kc-action-cell:hover {
|
|
||||||
background-color: #eeeeee;
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.kc-sorter span {
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Time selector */
|
|
||||||
|
|
||||||
.time-selector input {
|
|
||||||
display: inline-block;
|
|
||||||
width: 120px;
|
|
||||||
padding-right: 0;
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.time-selector select {
|
|
||||||
display: inline-block;
|
|
||||||
width: 80px;
|
|
||||||
margin-left: 0;
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ace_editor {
|
|
||||||
height: 600px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.kc-button-input-file input {
|
|
||||||
float: left;
|
|
||||||
width: 73%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.kc-button-input-file label {
|
|
||||||
float: left;
|
|
||||||
margin-left: 2%;
|
|
||||||
width: 25%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.kc-authz-table-expanded {
|
|
||||||
margin-top: 0px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.no-gutter > [class*='col-'] {
|
|
||||||
padding-right:0!important;
|
|
||||||
padding-left:0!important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.password-conceal {
|
|
||||||
font-family: 'text-security-disc';
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
Before Width: | Height: | Size: 1.1 KiB |
|
@ -1,5 +0,0 @@
|
||||||
parent=keycloak
|
|
||||||
import=common/rh-sso
|
|
||||||
|
|
||||||
styles=css/styles.css
|
|
||||||
stylesCommon=node_modules/rcue/dist/css/rcue.min.css node_modules/rcue/dist/css/rcue-additions.min.css node_modules/select2/select2.css lib/angular/treeview/css/angular.treeview.css node_modules/text-security/text-security.css
|
|
|
@ -1,101 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 223.4 12.5" style="enable-background:new 0 0 223.4 12.5;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#FFFFFF;}
|
|
||||||
</style>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M6.5,12.3l-2-4H3.2v4H0V0.3h5.3c0.7,0,1.3,0.1,1.9,0.2c0.6,0.1,1.1,0.4,1.5,0.7c0.4,0.3,0.7,0.7,0.9,1.2
|
|
||||||
C9.9,2.9,10,3.5,10,4.2c0,0.9-0.2,1.6-0.6,2.2C9,7,8.5,7.4,7.8,7.7l2.4,4.6H6.5z M6.4,3.4C6.1,3.1,5.8,3,5.2,3h-2v2.6h2
|
|
||||||
c0.5,0,0.9-0.1,1.2-0.3c0.2-0.2,0.3-0.6,0.3-1C6.7,3.9,6.6,3.6,6.4,3.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M12.2,12.3V0.3h9.1v2.8h-5.9v1.6H19v2.7h-3.5v2h6v2.8H12.2z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M33.5,9.1c-0.3,0.8-0.7,1.4-1.2,1.9c-0.5,0.5-1.2,0.8-2,1c-0.8,0.2-1.7,0.3-2.8,0.3h-3.9V0.3h4.2
|
|
||||||
c0.9,0,1.8,0.1,2.5,0.3c0.8,0.2,1.4,0.5,1.9,1c0.5,0.5,0.9,1.1,1.2,1.8c0.3,0.7,0.4,1.7,0.4,2.8C33.9,7.3,33.8,8.3,33.5,9.1z
|
|
||||||
M30.4,4.9c-0.1-0.4-0.3-0.7-0.5-1c-0.2-0.2-0.5-0.4-0.9-0.6c-0.4-0.1-0.8-0.2-1.3-0.2h-0.8v6.3h0.7c0.5,0,1-0.1,1.3-0.2
|
|
||||||
c0.4-0.1,0.7-0.3,0.9-0.5c0.2-0.2,0.4-0.6,0.5-1c0.1-0.4,0.2-0.9,0.2-1.5C30.5,5.7,30.5,5.3,30.4,4.9z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M48,12.3V7.6h-3.7v4.7h-3.4V0.3h3.4v4.4H48V0.3h3.4v11.9H48z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M61.5,12.3l-0.6-2.1h-3.6l-0.6,2.1h-3.5l4.3-11.9h3.3l4.3,11.9H61.5z M59.8,6.7c-0.1-0.4-0.2-0.7-0.3-1
|
|
||||||
c-0.1-0.3-0.2-0.5-0.2-0.8c-0.1-0.2-0.1-0.4-0.2-0.6c0-0.2-0.1-0.4-0.1-0.6C59,4,59,4.2,58.9,4.4c0,0.2-0.1,0.4-0.2,0.6
|
|
||||||
c-0.1,0.2-0.1,0.5-0.2,0.8c-0.1,0.3-0.2,0.6-0.3,1l-0.2,0.8h2L59.8,6.7z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M71.3,3.2v9.1H68V3.2h-3.3V0.3h10v2.9H71.3z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M78.6,2c-0.1,0.1-0.1,0.3-0.3,0.4c-0.1,0.1-0.2,0.2-0.4,0.3c-0.1,0.1-0.3,0.1-0.5,0.1c-0.2,0-0.3,0-0.5-0.1
|
|
||||||
c-0.1-0.1-0.3-0.1-0.4-0.3c-0.1-0.1-0.2-0.2-0.3-0.4c-0.1-0.1-0.1-0.3-0.1-0.5c0-0.2,0-0.3,0.1-0.5c0.1-0.1,0.1-0.3,0.3-0.4
|
|
||||||
c0.1-0.1,0.2-0.2,0.4-0.3c0.1-0.1,0.3-0.1,0.5-0.1c0.2,0,0.3,0,0.5,0.1c0.1,0.1,0.3,0.1,0.4,0.3c0.1,0.1,0.2,0.2,0.3,0.4
|
|
||||||
c0.1,0.1,0.1,0.3,0.1,0.5C78.7,1.7,78.6,1.8,78.6,2z M78.4,1.1c-0.1-0.1-0.1-0.2-0.2-0.3c-0.1-0.1-0.2-0.2-0.3-0.2
|
|
||||||
c-0.1-0.1-0.3-0.1-0.4-0.1c-0.1,0-0.3,0-0.4,0.1c-0.1,0.1-0.2,0.1-0.3,0.2c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.1,0.4
|
|
||||||
c0,0.1,0,0.3,0.1,0.4s0.1,0.2,0.2,0.3c0.1,0.1,0.2,0.2,0.3,0.2c0.1,0,0.3,0.1,0.4,0.1c0.1,0,0.3,0,0.4-0.1
|
|
||||||
c0.1-0.1,0.2-0.1,0.3-0.2c0.1-0.1,0.2-0.2,0.2-0.3c0.1-0.1,0.1-0.3,0.1-0.4C78.5,1.4,78.4,1.2,78.4,1.1z M77.9,1.5
|
|
||||||
c-0.1,0.1-0.1,0.1-0.2,0.1L78,2.1h-0.3l-0.3-0.5h-0.3v0.5H77V0.8h0.6c0.1,0,0.1,0,0.2,0c0.1,0,0.1,0,0.1,0.1C77.9,1,77.9,1,78,1
|
|
||||||
c0,0,0,0.1,0,0.2C78,1.3,78,1.4,77.9,1.5z M77.7,1.1c0,0-0.1,0-0.1,0h-0.3v0.4h0.3c0.1,0,0.1,0,0.1,0c0,0,0.1-0.1,0.1-0.1
|
|
||||||
C77.8,1.2,77.8,1.1,77.7,1.1z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M91.4,10.2c-0.2,0.5-0.5,0.9-0.9,1.2S89.6,12,89,12.2c-0.6,0.2-1.3,0.3-2.1,0.3c-1,0-1.9-0.2-2.8-0.6
|
|
||||||
c-0.8-0.4-1.5-0.9-1.9-1.6l1.7-1.6c0.4,0.5,0.9,0.8,1.4,1.1s1.1,0.3,1.7,0.3c0.7,0,1.3-0.1,1.6-0.3s0.5-0.5,0.5-1
|
|
||||||
c0-0.2,0-0.4-0.1-0.5C89,8.1,88.8,8,88.6,7.9c-0.2-0.1-0.5-0.2-0.8-0.4c-0.4-0.1-0.8-0.2-1.4-0.4c-0.6-0.1-1.1-0.3-1.5-0.4
|
|
||||||
C84.4,6.5,84,6.3,83.7,6c-0.3-0.3-0.6-0.6-0.8-1c-0.2-0.4-0.3-0.9-0.3-1.5c0-0.6,0.1-1,0.3-1.5c0.2-0.4,0.5-0.8,0.9-1.1
|
|
||||||
c0.4-0.3,0.8-0.5,1.4-0.7C85.8,0.1,86.4,0,87,0c0.9,0,1.8,0.2,2.5,0.5c0.7,0.3,1.3,0.8,1.9,1.4l-1.7,1.7c-0.4-0.4-0.8-0.7-1.3-0.9
|
|
||||||
s-0.9-0.3-1.5-0.3c-0.3,0-0.6,0-0.8,0.1c-0.2,0.1-0.4,0.1-0.5,0.2s-0.2,0.2-0.3,0.3c-0.1,0.1-0.1,0.3-0.1,0.4c0,0.2,0,0.4,0.1,0.5
|
|
||||||
c0.1,0.1,0.2,0.2,0.4,0.4c0.2,0.1,0.4,0.2,0.7,0.3c0.3,0.1,0.7,0.2,1.2,0.3c0.5,0.1,1,0.2,1.4,0.4c0.5,0.2,0.9,0.4,1.3,0.6
|
|
||||||
C90.7,6.2,91,6.6,91.3,7c0.2,0.4,0.4,1,0.4,1.6C91.6,9.2,91.5,9.7,91.4,10.2z"/>
|
|
||||||
<path class="st0" d="M94.4,12.3V0.2h2.4v12.1H94.4z"/>
|
|
||||||
<path class="st0" d="M107.7,12.3l-4.4-6.6c-0.1-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.3-0.5-0.4-0.6c0,0.1,0,0.3,0,0.5
|
|
||||||
c0,0.2,0,0.5,0,0.7c0,0.3,0,0.5,0,0.8c0,0.3,0,0.5,0,0.6v5.3h-2.4V0.2h2.3l4.3,6.4c0.1,0.2,0.3,0.5,0.5,0.7
|
|
||||||
c0.2,0.3,0.3,0.5,0.4,0.6c0-0.1,0-0.3,0-0.5c0-0.2,0-0.5,0-0.7c0-0.3,0-0.5,0-0.8c0-0.3,0-0.5,0-0.6V0.2h2.4v12.1H107.7z"/>
|
|
||||||
<path class="st0" d="M122.1,9.7c-0.2,0.6-0.6,1.1-1,1.5c-0.4,0.4-0.9,0.7-1.5,0.9c-0.6,0.2-1.2,0.3-1.9,0.3
|
|
||||||
c-0.8,0-1.5-0.1-2.2-0.4c-0.6-0.3-1.2-0.7-1.7-1.3c-0.5-0.5-0.8-1.2-1.1-2c-0.3-0.8-0.4-1.6-0.4-2.6c0-0.9,0.1-1.8,0.4-2.5
|
|
||||||
c0.3-0.8,0.6-1.4,1.1-2s1-1,1.7-1.3c0.7-0.3,1.4-0.5,2.2-0.5c0.6,0,1.2,0.1,1.6,0.2c0.5,0.1,0.9,0.3,1.3,0.6s0.7,0.6,1,1
|
|
||||||
c0.3,0.4,0.5,0.8,0.7,1.3L120,4c-0.1-0.2-0.2-0.4-0.4-0.6s-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.5-0.1-0.8-0.1
|
|
||||||
c-0.4,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.7,0.5-0.9,0.8s-0.4,0.7-0.6,1.2c-0.1,0.5-0.2,1-0.2,1.5c0,0.6,0.1,1.1,0.2,1.5
|
|
||||||
c0.1,0.5,0.3,0.9,0.6,1.2c0.2,0.3,0.5,0.6,0.9,0.8c0.4,0.2,0.8,0.3,1.2,0.3c0.4,0,0.8,0,1.1-0.1c0.3-0.1,0.5-0.2,0.7-0.4
|
|
||||||
c0.2-0.2,0.3-0.4,0.4-0.6s0.2-0.5,0.2-0.7h-1.9V6h4.3v1.6C122.4,8.4,122.3,9.1,122.1,9.7z"/>
|
|
||||||
<path class="st0" d="M125,12.3V0.2h2.4v9.7h6.1v2.4H125z"/>
|
|
||||||
<path class="st0" d="M135.7,12.3V0.2h8.4v2.4h-6v2.1h3.5V7h-3.5v2.9h6.2v2.4H135.7z"/>
|
|
||||||
<path class="st0" d="M160.5,10.2c-0.2,0.5-0.5,0.9-0.9,1.2s-0.9,0.6-1.5,0.8c-0.6,0.2-1.3,0.3-2.1,0.3c-1,0-1.9-0.2-2.8-0.6
|
|
||||||
s-1.5-0.9-1.9-1.6l1.7-1.6c0.4,0.5,0.9,0.8,1.4,1.1s1.1,0.3,1.7,0.3c0.7,0,1.3-0.1,1.6-0.3c0.3-0.2,0.5-0.5,0.5-1
|
|
||||||
c0-0.2,0-0.4-0.1-0.5c-0.1-0.1-0.2-0.3-0.4-0.4c-0.2-0.1-0.5-0.2-0.8-0.4c-0.4-0.1-0.8-0.2-1.4-0.4C155,7,154.5,6.9,154,6.7
|
|
||||||
c-0.5-0.2-0.9-0.4-1.2-0.7c-0.3-0.3-0.6-0.6-0.8-1c-0.2-0.4-0.3-0.9-0.3-1.5c0-0.6,0.1-1,0.3-1.5c0.2-0.4,0.5-0.8,0.9-1.1
|
|
||||||
c0.4-0.3,0.8-0.5,1.4-0.7c0.5-0.2,1.1-0.2,1.7-0.2c0.9,0,1.8,0.2,2.5,0.5c0.7,0.3,1.3,0.8,1.9,1.4l-1.7,1.7
|
|
||||||
c-0.4-0.4-0.8-0.7-1.3-0.9s-0.9-0.3-1.5-0.3c-0.3,0-0.6,0-0.8,0.1c-0.2,0.1-0.4,0.1-0.5,0.2s-0.2,0.2-0.3,0.3
|
|
||||||
c-0.1,0.1-0.1,0.3-0.1,0.4c0,0.2,0,0.4,0.1,0.5c0.1,0.1,0.2,0.2,0.4,0.4c0.2,0.1,0.4,0.2,0.7,0.3c0.3,0.1,0.7,0.2,1.2,0.3
|
|
||||||
c0.5,0.1,1,0.2,1.4,0.4c0.5,0.2,0.9,0.4,1.3,0.6c0.4,0.3,0.7,0.6,0.9,1.1c0.2,0.4,0.4,1,0.4,1.6C160.8,9.2,160.7,9.7,160.5,10.2z"
|
|
||||||
/>
|
|
||||||
<path class="st0" d="M163.5,12.3V0.2h2.4v12.1H163.5z"/>
|
|
||||||
<path class="st0" d="M178.3,9.7c-0.2,0.6-0.6,1.1-1,1.5c-0.4,0.4-0.9,0.7-1.5,0.9c-0.6,0.2-1.2,0.3-1.9,0.3
|
|
||||||
c-0.8,0-1.5-0.1-2.2-0.4s-1.2-0.7-1.7-1.3c-0.5-0.5-0.8-1.2-1.1-2c-0.3-0.8-0.4-1.6-0.4-2.6c0-0.9,0.1-1.8,0.4-2.5
|
|
||||||
c0.3-0.8,0.6-1.4,1.1-2s1-1,1.7-1.3c0.7-0.3,1.4-0.5,2.2-0.5c0.6,0,1.2,0.1,1.6,0.2c0.5,0.1,0.9,0.3,1.3,0.6c0.4,0.3,0.7,0.6,1,1
|
|
||||||
s0.5,0.8,0.7,1.3L176.2,4c-0.1-0.2-0.2-0.4-0.4-0.6c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.5-0.1-0.8-0.1
|
|
||||||
c-0.4,0-0.9,0.1-1.2,0.3c-0.4,0.2-0.7,0.5-0.9,0.8c-0.2,0.3-0.4,0.7-0.6,1.2c-0.1,0.5-0.2,1-0.2,1.5c0,0.6,0.1,1.1,0.2,1.5
|
|
||||||
c0.1,0.5,0.3,0.9,0.6,1.2c0.2,0.3,0.5,0.6,0.9,0.8c0.4,0.2,0.8,0.3,1.2,0.3c0.4,0,0.8,0,1.1-0.1c0.3-0.1,0.5-0.2,0.7-0.4
|
|
||||||
c0.2-0.2,0.3-0.4,0.4-0.6s0.2-0.5,0.2-0.7h-1.9V6h4.3v1.6C178.7,8.4,178.6,9.1,178.3,9.7z"/>
|
|
||||||
<path class="st0" d="M188.9,12.3l-4.4-6.6c-0.2-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.3-0.5-0.4-0.6c0,0.1,0,0.3,0,0.5
|
|
||||||
c0,0.2,0,0.5,0,0.7c0,0.3,0,0.5,0,0.8c0,0.3,0,0.5,0,0.6v5.3h-2.4V0.2h2.3l4.3,6.4c0.1,0.2,0.3,0.5,0.5,0.7
|
|
||||||
c0.2,0.3,0.3,0.5,0.4,0.6c0-0.1,0-0.3,0-0.5c0-0.2,0-0.5,0-0.7c0-0.3,0-0.5,0-0.8c0-0.3,0-0.5,0-0.6V0.2h2.4v12.1H188.9z"/>
|
|
||||||
<path class="st0" d="M193.6,7.2V4.8h5v2.4H193.6z"/>
|
|
||||||
<path class="st0" d="M210.7,8.8c-0.3,0.8-0.6,1.4-1.1,2c-0.5,0.5-1,0.9-1.7,1.2c-0.7,0.3-1.4,0.4-2.2,0.4c-0.8,0-1.5-0.1-2.2-0.4
|
|
||||||
s-1.2-0.7-1.7-1.2c-0.5-0.5-0.8-1.2-1.1-2c-0.3-0.8-0.4-1.6-0.4-2.6s0.1-1.9,0.4-2.6c0.3-0.8,0.6-1.4,1.1-2c0.5-0.5,1-0.9,1.7-1.2
|
|
||||||
c0.7-0.3,1.4-0.4,2.2-0.4c0.8,0,1.5,0.1,2.1,0.4s1.2,0.7,1.7,1.2c0.5,0.5,0.8,1.2,1.1,2c0.3,0.8,0.4,1.6,0.4,2.6
|
|
||||||
S211,8.1,210.7,8.8z M207.9,3.4c-0.5-0.7-1.2-1-2.1-1s-1.5,0.3-2,1S203,5,203,6.2c0,1.2,0.3,2.2,0.8,2.8c0.5,0.7,1.2,1,2.1,1
|
|
||||||
s1.5-0.3,2-1s0.8-1.6,0.8-2.8S208.4,4.1,207.9,3.4z"/>
|
|
||||||
<path class="st0" d="M221.2,12.3l-4.4-6.6c-0.2-0.2-0.3-0.5-0.5-0.7c-0.2-0.3-0.3-0.5-0.4-0.6c0,0.1,0,0.3,0,0.5
|
|
||||||
c0,0.2,0,0.5,0,0.7c0,0.3,0,0.5,0,0.8c0,0.3,0,0.5,0,0.6v5.3h-2.4V0.2h2.3l4.3,6.4c0.1,0.2,0.3,0.5,0.5,0.7
|
|
||||||
c0.2,0.3,0.3,0.5,0.4,0.6c0-0.1,0-0.3,0-0.5c0-0.2,0-0.5,0-0.7c0-0.3,0-0.5,0-0.8c0-0.3,0-0.5,0-0.6V0.2h2.4v12.1H221.2z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 4.3 KiB |
|
@ -1 +0,0 @@
|
||||||
parent=base
|
|
|
@ -1,21 +0,0 @@
|
||||||
.login-pf body {
|
|
||||||
background: url("../node_modules/rcue/dist/img/bg-login.png") no-repeat left top fixed;
|
|
||||||
background-size: auto;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 767px) {
|
|
||||||
.login-pf body {
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 767px) {
|
|
||||||
.login-pf {
|
|
||||||
background-attachment: fixed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#kc-header-wrapper sup {
|
|
||||||
font-size: 35%;
|
|
||||||
top: -1.4em;
|
|
||||||
}
|
|
Before Width: | Height: | Size: 513 B |
Before Width: | Height: | Size: 343 B |
Before Width: | Height: | Size: 678 B |
Before Width: | Height: | Size: 410 B |
Before Width: | Height: | Size: 513 B |
Before Width: | Height: | Size: 646 B |
|
@ -1,4 +0,0 @@
|
||||||
parent=keycloak
|
|
||||||
|
|
||||||
styles=css/login.css css/tile.css css/login-rhsso.css
|
|
||||||
stylesCommon=web_modules/@patternfly/react-core/dist/styles/base.css web_modules/@patternfly/react-core/dist/styles/app.css node_modules/patternfly/dist/css/patternfly.min.css node_modules/patternfly/dist/css/patternfly-additions.min.css lib/pficon/pficon.css node_modules/rcue/dist/css/rcue.min.css node_modules/rcue/dist/css/rcue-additions.min.css
|
|
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 3.3 KiB |
|
@ -1,12 +0,0 @@
|
||||||
body {
|
|
||||||
background-image: url(../bg.png),url(../bg-login.png);
|
|
||||||
background-repeat: no-repeat,no-repeat;
|
|
||||||
background-position: right bottom, left top;
|
|
||||||
background-size: auto, auto;
|
|
||||||
background-color: #1a1a1a;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.welcome-header {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
Before Width: | Height: | Size: 7.9 KiB |
|
@ -1,7 +0,0 @@
|
||||||
parent=keycloak
|
|
||||||
|
|
||||||
styles=css/welcome.css css/welcome-rhsso.css
|
|
||||||
stylesCommon=node_modules/rcue/dist/css/rcue.min.css node_modules/rcue/dist/css/rcue-additions.min.css
|
|
||||||
|
|
||||||
documentationUrl=https://access.redhat.com/documentation/en/red-hat-single-sign-on/
|
|
||||||
displayCommunityLinks=false
|
|
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Welcome to ${productNameFull}</title>
|
<title>Welcome to ${productName}</title>
|
||||||
|
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
|
@ -49,7 +49,7 @@
|
||||||
<div class="col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-8 col-lg-offset-2">
|
<div class="col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-8 col-lg-offset-2">
|
||||||
<div class="welcome-header">
|
<div class="welcome-header">
|
||||||
<img src="${resourcesPath}/logo.png" alt="${productName}" border="0" />
|
<img src="${resourcesPath}/logo.png" alt="${productName}" border="0" />
|
||||||
<h1>Welcome to <strong>${productNameFull}</strong></h1>
|
<h1>Welcome to <strong>${productName}</strong></h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<#if adminConsoleEnabled>
|
<#if adminConsoleEnabled>
|
||||||
|
@ -98,7 +98,7 @@
|
||||||
<div class="welcome-primary-link">
|
<div class="welcome-primary-link">
|
||||||
<h3><a href="${adminUrl}"><img src="welcome-content/user.png">Administration Console <i class="fa fa-angle-right link" aria-hidden="true"></i></a></h3>
|
<h3><a href="${adminUrl}"><img src="welcome-content/user.png">Administration Console <i class="fa fa-angle-right link" aria-hidden="true"></i></a></h3>
|
||||||
<div class="description">
|
<div class="description">
|
||||||
Centrally manage all aspects of the ${productNameFull} server
|
Centrally manage all aspects of the ${productName} server
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|