keycloak-uncached

Details

diff --git a/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccount.java b/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccount.java
index 9c5a687..64f4135 100644
--- a/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccount.java
+++ b/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccount.java
@@ -5,6 +5,7 @@ import org.keycloak.account.Account;
 import org.keycloak.account.AccountPages;
 import org.keycloak.account.freemarker.model.AccountBean;
 import org.keycloak.account.freemarker.model.MessageBean;
+import org.keycloak.account.freemarker.model.ReferrerBean;
 import org.keycloak.account.freemarker.model.TotpBean;
 import org.keycloak.account.freemarker.model.UrlBean;
 import org.keycloak.freemarker.FreeMarkerException;
@@ -80,7 +81,12 @@ public class FreeMarkerAccount implements Account {
             attributes.put("message", new MessageBean(messages.containsKey(message) ? messages.getProperty(message) : message, messageType));
         }
 
-        attributes.put("url", new UrlBean(realm, theme, baseUri, getReferrerUri()));
+        ApplicationModel referrerApp = getReferrer();
+        if (referrerApp != null) {
+            attributes.put("referrer", new ReferrerBean(referrerApp));
+        }
+
+        attributes.put("url", new UrlBean(realm, theme, baseUri));
 
         switch (page) {
             case ACCOUNT:
@@ -100,11 +106,11 @@ public class FreeMarkerAccount implements Account {
         }
     }
 
-    private String getReferrerUri() {
+    private ApplicationModel getReferrer() {
         if (referrer != null) {
             ApplicationModel app = realm.getApplicationByName(referrer);
             if (app != null) {
-                return app.getBaseUrl();
+                return app;
             }
         }
         return null;
diff --git a/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/model/ReferrerBean.java b/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/model/ReferrerBean.java
new file mode 100644
index 0000000..8904bf6
--- /dev/null
+++ b/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/model/ReferrerBean.java
@@ -0,0 +1,24 @@
+package org.keycloak.account.freemarker.model;
+
+import org.keycloak.models.ApplicationModel;
+
+/**
+ * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
+ */
+public class ReferrerBean {
+
+    private ApplicationModel referrer;
+
+    public ReferrerBean(ApplicationModel referrer) {
+        this.referrer = referrer;
+    }
+
+    public String getName() {
+        return referrer.getName();
+    }
+
+    public String getBaseUrl() {
+        return referrer.getBaseUrl();
+    }
+
+}
diff --git a/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/model/UrlBean.java b/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/model/UrlBean.java
index 46dbb4e..53dde7c 100644
--- a/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/model/UrlBean.java
+++ b/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/model/UrlBean.java
@@ -14,13 +14,11 @@ public class UrlBean {
     private String realm;
     private Theme theme;
     private URI baseURI;
-    private String referrerURI;
 
-    public UrlBean(RealmModel realm, Theme theme, URI baseURI, String referrerURI) {
+    public UrlBean(RealmModel realm, Theme theme, URI baseURI) {
         this.realm = realm.getName();
         this.theme = theme;
         this.baseURI = baseURI;
-        this.referrerURI = referrerURI;
     }
 
     public String getAccessUrl() {
@@ -51,10 +49,6 @@ public class UrlBean {
         return Urls.accountLogout(baseURI, realm).toString();
     }
 
-    public String getReferrerURI() {
-        return referrerURI;
-    }
-
     public String getResourcesPath() {
         URI uri = Urls.themeRoot(baseURI);
         return uri.getPath() + "/" + theme.getType().toString().toLowerCase() +"/" + theme.getName();
diff --git a/forms/common-themes/src/main/resources/theme/account/base/template.ftl b/forms/common-themes/src/main/resources/theme/account/base/template.ftl
index 66da0f8..355b583 100644
--- a/forms/common-themes/src/main/resources/theme/account/base/template.ftl
+++ b/forms/common-themes/src/main/resources/theme/account/base/template.ftl
@@ -29,7 +29,7 @@
 
                     <div class="navbar-collapse">
                         <ul class="nav navbar-nav navbar-utility">
-                            <#if url.referrerURI??><li><a href="${url.referrerURI}">Back to application</a></li></#if>
+                            <#if referrer?has_content><li><a href="${referrer.baseUrl}">Back to ${referrer.name}</a></li></#if>
                             <li><a href="${url.logoutUrl}">Sign Out</a></li>
                         </ul>
                     </div>