login-otp.ftl 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name='viewport' content='width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no' />
  6. <title>${realm.displayName}</title>
  7. <link rel="stylesheet" href="${url.resourcesPath}/css/totp.css" />
  8. </head>
  9. <body>
  10. <div class="c-login">
  11. <div class="c-login__img"></div>
  12. <form
  13. class="c-login__main c-login-form"
  14. action="${url.loginAction}"
  15. method="post"
  16. onsubmit="login.disabled = true; return true;"
  17. >
  18. <div class="c-login-form__header">
  19. <img class="c-login-form__logo" src="${url.resourcesPath}/img/logo/${realm.displayNameHtml}">
  20. <div class="c-login-form__name">${realm.displayName}</div>
  21. </div>
  22. <div class="c-login-form__title">手机验证</div>
  23. <div class="c-login-form__info">
  24. <p class="c-login-form__required">一次性验证码</p>
  25. <input
  26. type="text"
  27. name="otp"
  28. class="c-login-form__input"
  29. autocomplete="off"
  30. />
  31. <div class="c-login-form__error">
  32. <#if messagesPerField.existsError('totp')>
  33. ${kcSanitize(messagesPerField.get('totp'))?no_esc}
  34. </#if>
  35. </div>
  36. <input
  37. type="submit"
  38. name="login"
  39. class="c-login-form__submit"
  40. value="提交"
  41. >
  42. </div>
  43. </form>
  44. </div>
  45. </body>
  46. </html>