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.

134 lines
6.0 KiB

  1. <#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true displayRequiredFields=false showAnotherWayIfPresent=true>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" class="${properties.kcHtmlClass!}">
  4. <head>
  5. <meta charset="utf-8">
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  7. <meta name="robots" content="noindex, nofollow">
  8. <#if properties.meta?has_content>
  9. <#list properties.meta?split(' ') as meta>
  10. <meta name="${meta?split('==')[0]}" content="${meta?split('==')[1]}"/>
  11. </#list>
  12. </#if>
  13. <title>${msg("loginTitle",(realm.displayName!''))}</title>
  14. <link rel="icon" href="${url.resourcesPath}/img/favicon.ico" />
  15. <#if properties.stylesCommon?has_content>
  16. <#list properties.stylesCommon?split(' ') as style>
  17. <link href="${url.resourcesCommonPath}/${style}" rel="stylesheet" />
  18. </#list>
  19. </#if>
  20. <#if properties.styles?has_content>
  21. <#list properties.styles?split(' ') as style>
  22. <link href="${url.resourcesPath}/${style}" rel="stylesheet" />
  23. </#list>
  24. </#if>
  25. <#if properties.scripts?has_content>
  26. <#list properties.scripts?split(' ') as script>
  27. <script src="${url.resourcesPath}/${script}" type="text/javascript"></script>
  28. </#list>
  29. </#if>
  30. <#if scripts??>
  31. <#list scripts as script>
  32. <script src="${script}" type="text/javascript"></script>
  33. </#list>
  34. </#if>
  35. </head>
  36. <body class="${properties.kcBodyClass!}">
  37. <div class="${properties.kcLoginClass!}">
  38. <div id="kc-header" class="${properties.kcHeaderClass!}">
  39. <div id="kc-header-wrapper"
  40. class="${properties.kcHeaderWrapperClass!}"></div>
  41. </div>
  42. <div class="${properties.kcFormCardClass!}">
  43. <header class="${properties.kcFormHeaderClass!}">
  44. <#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
  45. <#if displayRequiredFields>
  46. <div class="${properties.kcContentWrapperClass!}">
  47. <div class="${properties.kcLabelWrapperClass!} subtitle">
  48. <span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span>
  49. </div>
  50. <div class="col-md-10">
  51. <h1 id="kc-page-title"><#nested "header"></h1>
  52. </div>
  53. </div>
  54. <#else>
  55. <h1 id="kc-page-title"><#nested "header"></h1>
  56. </#if>
  57. <#else>
  58. <#if displayRequiredFields>
  59. <div class="${properties.kcContentWrapperClass!}">
  60. <div class="${properties.kcLabelWrapperClass!} subtitle">
  61. <span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span>
  62. </div>
  63. <div class="col-md-10">
  64. <#nested "show-username">
  65. <div id="kc-username" class="${properties.kcFormGroupClass!}">
  66. <label id="kc-attempted-username">${auth.attemptedUsername}</label>
  67. <a id="reset-login" href="${url.loginRestartFlowUrl}">
  68. <div class="kc-login-tooltip">
  69. <i class="${properties.kcResetFlowIcon!}"></i>
  70. <span class="kc-tooltip-text">${msg("restartLoginTooltip")}</span>
  71. </div>
  72. </a>
  73. </div>
  74. </div>
  75. </div>
  76. <#else>
  77. <#nested "show-username">
  78. <div id="kc-username" class="${properties.kcFormGroupClass!}">
  79. <label id="kc-attempted-username">${auth.attemptedUsername}</label>
  80. <a id="reset-login" href="${url.loginRestartFlowUrl}">
  81. <div class="kc-login-tooltip">
  82. <i class="${properties.kcResetFlowIcon!}"></i>
  83. <span class="kc-tooltip-text">${msg("restartLoginTooltip")}</span>
  84. </div>
  85. </a>
  86. </div>
  87. </#if>
  88. </#if>
  89. </header>
  90. <div id="kc-content">
  91. <div id="kc-content-wrapper">
  92. <#-- App-initiated actions should not see warning messages about the need to complete the action -->
  93. <#-- during login. -->
  94. <#nested "form">
  95. <#if auth?has_content && auth.showTryAnotherWayLink() && showAnotherWayIfPresent>
  96. <form id="kc-select-try-another-way-form" action="${url.loginAction}" method="post">
  97. <div class="${properties.kcFormGroupClass!}">
  98. <input type="hidden" name="tryAnotherWay" value="on"/>
  99. <a href="#" id="try-another-way"
  100. onclick="document.forms['kc-select-try-another-way-form'].submit();return false;">${msg("doTryAnotherWay")}</a>
  101. </div>
  102. </form>
  103. </#if>
  104. <#if displayInfo>
  105. <div id="kc-info" class="${properties.kcSignUpClass!}">
  106. <div id="kc-info-wrapper" class="${properties.kcInfoAreaWrapperClass!}">
  107. <#nested "info">
  108. </div>
  109. </div>
  110. </#if>
  111. </div>
  112. </div>
  113. </div>
  114. </div>
  115. <#if displayMessage && message?has_content && (message.type != 'warning' || !isAppInitiatedAction??)>
  116. <div class=" ${properties.kcAlertClass!}" id="snackbar">
  117. <div class="${properties.kcAlertTitleClass!}">${kcSanitize(message.summary)?no_esc}</div>
  118. <button class="alert-button" onclick="hideSnackbar()">OK</button>
  119. </div>
  120. </#if>
  121. </body>
  122. </html>
  123. </#macro>