You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
7.5 KiB

  1. <#import "template.ftl" as layout>
  2. <@layout.registrationLayout displayMessage=!messagesPerField.existsError('username','password') displayInfo=realm.password && realm.registrationAllowed && !registrationDisabled??; section>
  3. <#if section = "header">
  4. <div class="welcome-container">
  5. <div class="header-login-welcome">${msg("welcome")}</div>
  6. <#if realm.internationalizationEnabled && locale.supported?size gt 1>
  7. <div id="kc-locale">
  8. <div id="kc-locale-wrapper" class="${properties.kcLocaleWrapperClass!}">
  9. <div class="kc-dropdown" id="kc-locale-dropdown">
  10. <a href="#" id="kc-current-locale-link">${locale.current}</a>
  11. <ul>
  12. <#list locale.supported as l>
  13. <#if locale.current==l.label>
  14. <li class="kc-dropdown-item selected ${l.label}"><a href="${l.url}">${l.label}</a></li>
  15. <#else>
  16. <li class="kc-dropdown-item ${l.label}"><a href="${l.url}">${l.label}</a></li>
  17. </#if>
  18. </#list>
  19. </ul>
  20. </div>
  21. </div>
  22. </div>
  23. </#if>
  24. </div>
  25. <div class="header-login-title">${msg("loginAccountTitle")}</div>
  26. <#elseif section = "form">
  27. <div id="kc-form">
  28. <div id="kc-form-wrapper">
  29. <#if realm.password>
  30. <form id="kc-form-login" onsubmit="login.disabled = true; return true;" action="${url.loginAction}" method="post">
  31. <div class="${properties.kcFormGroupClass!}">
  32. <#if usernameEditDisabled??>
  33. <input tabindex="1" id="username" class="${properties.kcInputClass!}" name="username" value="${(login.username!'')}" placeholder=${msg("usernameOrEmail")} type="text" disabled />
  34. <#else>
  35. <input tabindex="1" id="username" class="${properties.kcInputClass!}" name="username" value="${(login.username!'')}" placeholder=${msg("usernameOrEmail")} type="text" autofocus autocomplete="off"
  36. aria-invalid="<#if messagesPerField.existsError('username','password')>true</#if>"
  37. />
  38. <#if messagesPerField.existsError('username','password')>
  39. <div id="input-error" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
  40. ${kcSanitize(messagesPerField.getFirstError('username','password'))?no_esc}
  41. </div>
  42. </#if>
  43. <label class="login-form-input-label">${msg("usernameOrEmail")}</label>
  44. </#if>
  45. </div>
  46. <div class="${properties.kcFormGroupClass!}">
  47. <input tabindex="2" id="password" class="${properties.kcInputClass!}" name="password" type="password" placeholder=${msg("password")} autocomplete="off"
  48. aria-invalid="<#if messagesPerField.existsError('username','password')>true</#if>"
  49. />
  50. <label class="login-form-input-label">${msg("password")}</label>
  51. </div>
  52. <div id="kc-form-buttons" class="${properties.kcFormGroupClass!}">
  53. <input type="hidden" id="id-hidden-input" name="credentialId" <#if auth.selectedCredential?has_content>value="${auth.selectedCredential}"</#if>/>
  54. <input tabindex="4" class="${properties.kcButtonClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" name="login" id="kc-login" type="submit" value="${msg("doLogIn")}"/>
  55. </div>
  56. <#if realm.password && social.providers??>
  57. <div id="kc-social-providers" class="${properties.kcFormSocialAccountSectionClass!}">
  58. <div class="separate-container">
  59. <div class="separator"></div>
  60. <div class="separate-text">${msg("identity-provider-login-label")} </div>
  61. <div class="separator"></div>
  62. </div>
  63. <ul class="${properties.kcFormSocialAccountListClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountListGridClass!}</#if>">
  64. <#list social.providers as p>
  65. <a id="social-${p.alias}" class="${properties.kcButtonClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountGridItem!}</#if> social-button"
  66. type="button" href="${p.loginUrl}">
  67. <#if p.displayName=="Facebook" >
  68. <div class="login-sign-image facebook"></div>
  69. <#elseif p.displayName=="Twitter" >
  70. <div class="login-sign-image twitter"></div>
  71. <#elseif p.displayName=="Google" >
  72. <div class="login-sign-image google"></div>
  73. <#elseif p.displayName=="LinkedIn" >
  74. <div class="login-sign-image linkedin"></div>
  75. <#elseif p.displayName=="Apple" >
  76. <div class="login-sign-image apple"></div>
  77. <#elseif p.iconClasses?has_content>
  78. <i class="${properties.kcCommonLogoIdP!} ${p.iconClasses!}" aria-hidden="true"></i>
  79. <#else>
  80. <span class="${properties.kcFormSocialAccountNameClass!}">${p.displayName!}</span>
  81. </#if>
  82. </a>
  83. </#list>
  84. </ul>
  85. </div>
  86. </#if>
  87. <div class="signup-terms login-signup-terms">${msg("signinTerms")}</div>
  88. <div>
  89. <div class="${properties.kcFormGroupClass!} ${properties.kcFormSettingClass!}">
  90. <div id="kc-form-options">
  91. <#if realm.resetPasswordAllowed>
  92. <span><a tabindex="5" href="${url.loginResetCredentialsUrl}">${msg("doForgotPassword")}</a></span>
  93. </#if>
  94. </div>
  95. <#if realm.password && realm.registrationAllowed && !registrationDisabled??>
  96. <div id="kc-registration-container">
  97. <div id="kc-registration">
  98. <span>${msg("noAccount")} <a tabindex="6"
  99. href="${url.registrationUrl}">${msg("signUpHere")}</a></span>
  100. </div>
  101. </div>
  102. </#if>
  103. </div>
  104. </form>
  105. </#if>
  106. </div>
  107. </div>
  108. </#if>
  109. </@layout.registrationLayout>
  110. <div class="juice-footer"> © 2020-2021, <span>Juice World</span> </div>