keycloak-memoizeit

Merge pull request #355 from stianst/master KEYCLOAK-211

4/30/2014 9:36:25 AM

Details

diff --git a/forms/common-themes/src/main/resources/theme/login/base/login.ftl b/forms/common-themes/src/main/resources/theme/login/base/login.ftl
index abf4652..9bc1570 100755
--- a/forms/common-themes/src/main/resources/theme/login/base/login.ftl
+++ b/forms/common-themes/src/main/resources/theme/login/base/login.ftl
@@ -5,66 +5,76 @@
     <#elseif section = "header">
         ${rb.loginTitle} <strong>${(realm.name)!''}</strong>
     <#elseif section = "form">
-        <form id="kc-form-login" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
-            <div class="${properties.kcFormGroupClass!}">
-                <div class="${properties.kcLabelWrapperClass!}">
-                    <label for="username" class="${properties.kcLabelClass!}">${rb.usernameOrEmail}</label>
-                </div>
+        <#if realm.password>
+            <form id="kc-form-login" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
+                <div class="${properties.kcFormGroupClass!}">
+                    <div class="${properties.kcLabelWrapperClass!}">
+                        <label for="username" class="${properties.kcLabelClass!}">${rb.usernameOrEmail}</label>
+                    </div>
 
-                <div class="${properties.kcInputWrapperClass!}">
-                    <input id="username" class="${properties.kcInputClass!}" name="username" value="${login.username!''}" type="text" autofocus />
+                    <div class="${properties.kcInputWrapperClass!}">
+                        <input id="username" class="${properties.kcInputClass!}" name="username" value="${login.username!''}" type="text" autofocus />
+                    </div>
                 </div>
-            </div>
 
-            <div class="${properties.kcFormGroupClass!}">
-                <div class="${properties.kcLabelWrapperClass!}">
-                    <label for="password" class="${properties.kcLabelClass!}">${rb.password}</label>
-                </div>
+                <div class="${properties.kcFormGroupClass!}">
+                    <div class="${properties.kcLabelWrapperClass!}">
+                        <label for="password" class="${properties.kcLabelClass!}">${rb.password}</label>
+                    </div>
 
-                <div class="${properties.kcInputWrapperClass!}">
-                    <input id="password" class="${properties.kcInputClass!}" name="password" type="password" />
+                    <div class="${properties.kcInputWrapperClass!}">
+                        <input id="password" class="${properties.kcInputClass!}" name="password" type="password" />
+                    </div>
                 </div>
-            </div>
 
-            <div class="${properties.kcFormGroupClass!}">
-                <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
-                    <#if realm.rememberMe>
-                        <div class="checkbox">
-                            <label>
-                                <input id="rememberMe" name="rememberMe" type="checkbox" tabindex="3"> Remember Me
-                            </label>
-                        </div>
-                    </#if>
-                    <div class="${properties.kcFormOptionsWrapperClass!}">
-                        <#if realm.resetPasswordAllowed>
-                            <span>${rb.loginForgot} <a href="${url.loginPasswordResetUrl}">${rb.password}</a>?</span>
+                <div class="${properties.kcFormGroupClass!}">
+                    <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
+                        <#if realm.rememberMe>
+                            <div class="checkbox">
+                                <label>
+                                    <input id="rememberMe" name="rememberMe" type="checkbox" tabindex="3"> Remember Me
+                                </label>
+                            </div>
                         </#if>
+                        <div class="${properties.kcFormOptionsWrapperClass!}">
+                            <#if realm.resetPasswordAllowed>
+                                <span>${rb.loginForgot} <a href="${url.loginPasswordResetUrl}">${rb.password}</a>?</span>
+                            </#if>
+                        </div>
                     </div>
-                </div>
 
-                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
-                    <div class="${properties.kcFormButtonsWrapperClass!}">
-                        <input class="btn btn-primary btn-lg" name="login" id="kc-login" type="submit" value="${rb.logIn}"/>
-                        <input class="btn btn-default btn-lg" name="cancel" id="kc-cancel" type="submit" value="${rb.cancel}"/>
-                    </div>
-                 </div>
+                    <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                        <div class="${properties.kcFormButtonsWrapperClass!}">
+                            <input class="btn btn-primary btn-lg" name="login" id="kc-login" type="submit" value="${rb.logIn}"/>
+                            <input class="btn btn-default btn-lg" name="cancel" id="kc-cancel" type="submit" value="${rb.cancel}"/>
+                        </div>
+                     </div>
+                </div>
+            </form>
+        <#elseif realm.social>
+            <div id="kc-social-providers">
+                <ul>
+                    <#list social.providers as p>
+                        <li><a href="${p.loginUrl}" class="zocial ${p.id}"> <span class="text">${p.name}</span></a></li>
+                    </#list>
+                </ul>
             </div>
-        </form>
+        </#if>
     <#elseif section = "info" >
-        <#if realm.registrationAllowed>
+        <#if realm.password && realm.registrationAllowed>
             <div id="kc-registration">
                 <span>${rb.noAccount} <a href="${url.registrationUrl}">${rb.register}</a></span>
             </div>
         </#if>
 
-        <#if social.providers??>
-        <div id="kc-social-providers">
-            <ul>
-                <#list social.providers as p>
-                    <li><a href="${p.loginUrl}" class="zocial ${p.id}"> <span class="text">${p.name}</span></a></li>
-                </#list>
-            </ul>
-        </div>
+        <#if realm.password && social.providers??>
+            <div id="kc-social-providers">
+                <ul>
+                    <#list social.providers as p>
+                        <li><a href="${p.loginUrl}" class="zocial ${p.id}"> <span class="text">${p.name}</span></a></li>
+                    </#list>
+                </ul>
+            </div>
         </#if>
     </#if>
 </@layout.registrationLayout>
diff --git a/forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/model/RealmBean.java b/forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/model/RealmBean.java
index a6b52f0..3dcebd8 100755
--- a/forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/model/RealmBean.java
+++ b/forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/model/RealmBean.java
@@ -22,6 +22,8 @@
 package org.keycloak.login.freemarker.model;
 
 import org.keycloak.models.RealmModel;
+import org.keycloak.models.RequiredCredentialModel;
+import org.keycloak.representations.idm.CredentialRepresentation;
 
 /**
  * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
@@ -53,5 +55,14 @@ public class RealmBean {
     public boolean isRememberMe() {
         return realm.isRememberMe();
     }
+
+    public boolean isPassword() {
+        for (RequiredCredentialModel r : realm.getRequiredCredentials()) {
+            if (r.getType().equals(CredentialRepresentation.PASSWORD)) {
+                return true;
+            }
+        }
+        return false;
+    }
     
 }