keycloak-uncached

Details

diff --git a/server-spi/src/main/java/org/keycloak/forms/login/LoginFormsProvider.java b/server-spi/src/main/java/org/keycloak/forms/login/LoginFormsProvider.java
index a89bfc1..88b309e 100755
--- a/server-spi/src/main/java/org/keycloak/forms/login/LoginFormsProvider.java
+++ b/server-spi/src/main/java/org/keycloak/forms/login/LoginFormsProvider.java
@@ -109,6 +109,8 @@ public interface LoginFormsProvider extends Provider {
 
     public LoginFormsProvider setSuccess(String message, Object ... parameters);
 
+    public LoginFormsProvider setInfo(String message, Object ... parameters);
+
     public LoginFormsProvider setUser(UserModel user);
 
     public LoginFormsProvider setResponseHeader(String headerName, String headerValue);
diff --git a/services/src/main/java/org/keycloak/authentication/authenticators/broker/IdpUsernamePasswordForm.java b/services/src/main/java/org/keycloak/authentication/authenticators/broker/IdpUsernamePasswordForm.java
index 7bcf018..5b0e152 100755
--- a/services/src/main/java/org/keycloak/authentication/authenticators/broker/IdpUsernamePasswordForm.java
+++ b/services/src/main/java/org/keycloak/authentication/authenticators/broker/IdpUsernamePasswordForm.java
@@ -67,6 +67,6 @@ public class IdpUsernamePasswordForm extends UsernamePasswordForm {
         return context.form()
                 .setFormData(formData)
                 .setAttribute(LoginFormsProvider.USERNAME_EDIT_DISABLED, true)
-                .setSuccess(Messages.FEDERATED_IDENTITY_CONFIRM_REAUTHENTICATE_MESSAGE, existingUser.getUsername(), serializedCtx.getIdentityProviderId());
+                .setInfo(Messages.FEDERATED_IDENTITY_CONFIRM_REAUTHENTICATE_MESSAGE, existingUser.getUsername(), serializedCtx.getIdentityProviderId());
     }
 }
diff --git a/services/src/main/java/org/keycloak/forms/login/freemarker/FreeMarkerLoginFormsProvider.java b/services/src/main/java/org/keycloak/forms/login/freemarker/FreeMarkerLoginFormsProvider.java
index bbbbc23..bb2e518 100755
--- a/services/src/main/java/org/keycloak/forms/login/freemarker/FreeMarkerLoginFormsProvider.java
+++ b/services/src/main/java/org/keycloak/forms/login/freemarker/FreeMarkerLoginFormsProvider.java
@@ -570,6 +570,12 @@ public class FreeMarkerLoginFormsProvider implements LoginFormsProvider {
     }
 
     @Override
+    public FreeMarkerLoginFormsProvider setInfo(String message, Object... parameters) {
+        setMessage(MessageType.INFO, message, parameters);
+        return this;
+    }
+
+    @Override
     public FreeMarkerLoginFormsProvider setUser(UserModel user) {
         this.user = user;
         return this;
diff --git a/services/src/main/java/org/keycloak/theme/beans/MessageType.java b/services/src/main/java/org/keycloak/theme/beans/MessageType.java
index 375119b..da37816 100755
--- a/services/src/main/java/org/keycloak/theme/beans/MessageType.java
+++ b/services/src/main/java/org/keycloak/theme/beans/MessageType.java
@@ -23,6 +23,6 @@ package org.keycloak.theme.beans;
  */
 public enum MessageType {
 
-    SUCCESS, WARNING, ERROR
+    SUCCESS, WARNING, INFO, ERROR
 
 }
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/AbstractFirstBrokerLoginTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/AbstractFirstBrokerLoginTest.java
index 70ec57f..3b1b440 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/AbstractFirstBrokerLoginTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/AbstractFirstBrokerLoginTest.java
@@ -321,7 +321,7 @@ public abstract class AbstractFirstBrokerLoginTest extends AbstractIdentityProvi
         Assert.assertEquals("pedroigor", this.loginPage.getUsername());
         Assert.assertFalse(this.loginPage.isUsernameInputEnabled());
 
-        Assert.assertEquals("Authenticate as pedroigor to link your account with " + getProviderId(), this.loginPage.getSuccessMessage());
+        Assert.assertEquals("Authenticate as pedroigor to link your account with " + getProviderId(), this.loginPage.getInfoMessage());
 
         try {
             this.loginPage.findSocialButton(getProviderId());
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/OIDCFirstBrokerLoginTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/OIDCFirstBrokerLoginTest.java
index 62b5c92..3a3df52 100644
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/OIDCFirstBrokerLoginTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/OIDCFirstBrokerLoginTest.java
@@ -116,7 +116,7 @@ public class OIDCFirstBrokerLoginTest extends AbstractFirstBrokerLoginTest {
 
         // assert reauthentication with login page. On login page is link to kc-saml-idp-basic as user has it linked already
         Assert.assertEquals("Log in to " + APP_REALM_ID, this.driver.getTitle());
-        Assert.assertEquals("Authenticate as pedroigor to link your account with " + getProviderId(), this.loginPage.getSuccessMessage());
+        Assert.assertEquals("Authenticate as pedroigor to link your account with " + getProviderId(), this.loginPage.getInfoMessage());
 
         try {
             this.loginPage.findSocialButton(getProviderId());
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/PostBrokerFlowTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/PostBrokerFlowTest.java
index 6081206..d5fe80d 100644
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/PostBrokerFlowTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/PostBrokerFlowTest.java
@@ -265,7 +265,7 @@ public class PostBrokerFlowTest extends AbstractIdentityProviderTest {
 
         // assert reauthentication with login page. On login page is link to kc-saml-idp-basic as user has it linked already
         Assert.assertEquals("Log in to " + APP_REALM_ID, this.driver.getTitle());
-        Assert.assertEquals("Authenticate as test-user to link your account with " + getProviderId(), this.loginPage.getSuccessMessage());
+        Assert.assertEquals("Authenticate as test-user to link your account with " + getProviderId(), this.loginPage.getInfoMessage());
 
         // reauthenticate with SAML broker. OTP authentication is required as well
         this.loginPage.clickSocial("kc-saml-idp-basic");
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/pages/IdpConfirmLinkPage.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/pages/IdpConfirmLinkPage.java
index d246597..db64eff 100644
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/pages/IdpConfirmLinkPage.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/pages/IdpConfirmLinkPage.java
@@ -31,7 +31,7 @@ public class IdpConfirmLinkPage extends AbstractPage {
     @FindBy(id = "linkAccount")
     private WebElement linkAccountButton;
 
-    @FindBy(className = "instruction")
+    @FindBy(className = "alert-error")
     private WebElement message;
 
     @Override
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/pages/LoginPage.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/pages/LoginPage.java
index 301bbe6..4b3ecb4 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/pages/LoginPage.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/pages/LoginPage.java
@@ -64,7 +64,11 @@ public class LoginPage extends AbstractPage {
     private WebElement loginWarningMessage;
 
     @FindBy(className = "alert-success")
-    private WebElement emailSuccessMessage;
+    private WebElement loginSuccessMessage;
+
+
+    @FindBy(className = "alert-info")
+    private WebElement loginInfoMessage;
 
 
     @FindBy(id = "kc-current-locale-link")
@@ -124,7 +128,10 @@ public class LoginPage extends AbstractPage {
     }
 
     public String getSuccessMessage() {
-        return emailSuccessMessage != null ? emailSuccessMessage.getText() : null;
+        return loginSuccessMessage != null ? loginSuccessMessage.getText() : null;
+    }
+    public String getInfoMessage() {
+        return loginInfoMessage != null ? loginInfoMessage.getText() : null;
     }
 
 
diff --git a/themes/src/main/resources/theme/base/login/login-idp-link-confirm.ftl b/themes/src/main/resources/theme/base/login/login-idp-link-confirm.ftl
index f77eb38..29ee2ae 100644
--- a/themes/src/main/resources/theme/base/login/login-idp-link-confirm.ftl
+++ b/themes/src/main/resources/theme/base/login/login-idp-link-confirm.ftl
@@ -1,21 +1,13 @@
 <#import "template.ftl" as layout>
-<@layout.registrationLayout displayMessage=false; section>
+<@layout.registrationLayout; section>
     <#if section = "title">
         ${msg("confirmLinkIdpTitle")}
     <#elseif section = "header">
          ${msg("confirmLinkIdpTitle")}
     <#elseif section = "form">
-        <div id="kc-error-message">
-            <p class="instruction">${message.summary}</p>
-        </div>
-
         <form id="kc-register-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
-
-                <div id="kc-form-buttons" class="${properties.kcFormGroupClass!}">
-                    <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="submitAction" id="updateProfile" value="updateProfile">${msg("confirmLinkIdpReviewProfile")}</button>
-                    <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="submitAction" id="linkAccount" value="linkAccount">${msg("confirmLinkIdpContinue", idpAlias)}</button>
-                </div>
-
+            <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="submitAction" id="updateProfile" value="updateProfile">${msg("confirmLinkIdpReviewProfile")}</button>
+            <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="submitAction" id="linkAccount" value="linkAccount">${msg("confirmLinkIdpContinue", idpAlias)}</button>
         </form>
     </#if>
 </@layout.registrationLayout>
\ No newline at end of file
diff --git a/themes/src/main/resources/theme/base/login/messages/messages_en.properties b/themes/src/main/resources/theme/base/login/messages/messages_en.properties
index cc3f410..ee8a767 100755
--- a/themes/src/main/resources/theme/base/login/messages/messages_en.properties
+++ b/themes/src/main/resources/theme/base/login/messages/messages_en.properties
@@ -143,8 +143,8 @@ federatedIdentityExistsMessage=User with {0} {1} already exists. Please login to
 confirmLinkIdpTitle=Account already exists
 federatedIdentityConfirmLinkMessage=User with {0} {1} already exists. How do you want to continue?
 federatedIdentityConfirmReauthenticateMessage=Authenticate as {0} to link your account with {1}
-confirmLinkIdpReviewProfile=Review profile info
-confirmLinkIdpContinue=Link {0} with existing account
+confirmLinkIdpReviewProfile=Review profile
+confirmLinkIdpContinue=Add to existing account
 
 configureTotpMessage=You need to set up Mobile Authenticator to activate your account.
 updateProfileMessage=You need to update your user profile to activate your account.
diff --git a/themes/src/main/resources/theme/base/login/template.ftl b/themes/src/main/resources/theme/base/login/template.ftl
index 57aab78..a999fd8 100755
--- a/themes/src/main/resources/theme/base/login/template.ftl
+++ b/themes/src/main/resources/theme/base/login/template.ftl
@@ -62,6 +62,7 @@
                                 <#if message.type = 'success'><span class="${properties.kcFeedbackSuccessIcon}"></span></#if>
                                 <#if message.type = 'warning'><span class="${properties.kcFeedbackWarningIcon}"></span></#if>
                                 <#if message.type = 'error'><span class="${properties.kcFeedbackErrorIcon}"></span></#if>
+                                <#if message.type = 'info'><span class="${properties.kcFeedbackInfoIcon}"></span></#if>
                                 <span class="kc-feedback-text">${message.summary}</span>
                             </div>
                         </div>
diff --git a/themes/src/main/resources/theme/keycloak/login/theme.properties b/themes/src/main/resources/theme/keycloak/login/theme.properties
index 8891151..f6274f1 100644
--- a/themes/src/main/resources/theme/keycloak/login/theme.properties
+++ b/themes/src/main/resources/theme/keycloak/login/theme.properties
@@ -20,7 +20,8 @@ kcFormAreaClass=col-xs-12 col-sm-8 col-md-8 col-lg-7 login
 
 kcFeedbackErrorIcon=pficon pficon-error-circle-o
 kcFeedbackWarningIcon=pficon pficon-warning-triangle-o
-kcFeedbackSuccessIcon=alert alert-success
+kcFeedbackSuccessIcon=pficon pficon-ok
+kcFeedbackInfoIcon=pficon pficon-info
 
 
 kcFormClass=form-horizontal