login.tpl 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. {include file='header.tpl'}
  2. <body class="border-top-wide border-primary d-flex flex-column">
  3. <div class="page page-center">
  4. <div class="container-tight my-auto">
  5. <div class="text-center mb-4">
  6. <a href="#" class="navbar-brand navbar-brand-autodark">
  7. <img src="/images/uim-logo-round_96x96.png" height="64" alt="SSPanel-UIM Logo">
  8. </a>
  9. </div>
  10. <div class="card card-md">
  11. <div class="card-body">
  12. <h2 class="card-title text-center mb-4">登录到用户中心</h2>
  13. <div class="mb-3">
  14. <label class="form-label">注册邮箱</label>
  15. <input id="email" type="email" class="form-control">
  16. </div>
  17. <div class="mb-2">
  18. <label class="form-label">
  19. 登录密码
  20. <span class="form-label-description">
  21. <a href="/password/reset">忘记密码</a>
  22. </span>
  23. </label>
  24. <div class="input-group input-group-flat">
  25. <input id="passwd" type="password" class="form-control" autocomplete="off">
  26. </div>
  27. </div>
  28. <div class="mb-2">
  29. <label class="form-label">两步认证</label>
  30. <input id="code" type="email" class="form-control" placeholder="如果没有设置两步认证可留空">
  31. </div>
  32. <div class="mb-2">
  33. <label class="form-check">
  34. <input id="remember_me" type="checkbox" class="form-check-input"/>
  35. <span class="form-check-label">记住此设备</span>
  36. </label>
  37. </div>
  38. {if $public_setting['enable_login_captcha']}
  39. {if $public_setting['captcha_provider'] === 'turnstile'}
  40. <div class="mb-3">
  41. <div class="input-group mb-3">
  42. <div id="cf-turnstile" class="cf-turnstile"
  43. data-sitekey="{$captcha['turnstile_sitekey']}" data-theme="light"></div>
  44. </div>
  45. </div>
  46. {/if}
  47. {if $public_setting['captcha_provider'] === 'geetest'}
  48. <div class="mb-3">
  49. <div class="input-group mb-3">
  50. <div id="geetest"></div>
  51. </div>
  52. </div>
  53. {/if}
  54. {/if}
  55. <div class="form-footer">
  56. <button id="login-dashboard" class="btn btn-primary w-100">登录</button>
  57. </div>
  58. </div>
  59. </div>
  60. <div class="text-center text-secondary mt-3">
  61. 还没有账户? <a href="/auth/register" tabindex="-1">点击注册</a>
  62. </div>
  63. </div>
  64. </div>
  65. <script>
  66. $("#login-dashboard").click(function () {
  67. $.ajax({
  68. type: 'POST',
  69. url: '/auth/login',
  70. dataType: "json",
  71. data: {
  72. code: $('#code').val(),
  73. email: $('#email').val(),
  74. passwd: $('#passwd').val(),
  75. remember_me: $('#remember_me').is(":checked"),
  76. {if $public_setting['enable_login_captcha']}
  77. {if $public_setting['captcha_provider'] === 'turnstile'}
  78. turnstile: $('input[name=cf-turnstile-response]').val(),
  79. {/if}
  80. {if $public_setting['captcha_provider'] === 'geetest'}
  81. geetest: geetest_result,
  82. {/if}
  83. {/if}
  84. },
  85. success: function (data) {
  86. if (data.ret === 1) {
  87. $('#success-message').text(data.msg);
  88. $('#success-dialog').modal('show');
  89. window.setTimeout(location.href = data.redir, {$config['jump_delay']});
  90. } else {
  91. $('#fail-message').text(data.msg);
  92. $('#fail-dialog').modal('show');
  93. }
  94. }
  95. })
  96. });
  97. </script>
  98. {if $public_setting['enable_login_captcha']}
  99. {if $public_setting['captcha_provider'] === 'turnstile'}
  100. <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
  101. {/if}
  102. {if $public_setting['captcha_provider'] === 'geetest'}
  103. <script src="https://static.geetest.com/v4/gt4.js"></script>
  104. <script>
  105. let geetest_result = '';
  106. initGeetest4({
  107. captchaId: '{$captcha['geetest_id']}',
  108. product: 'float',
  109. language: "zho",
  110. riskType: 'slide'
  111. }, function (geetest) {
  112. geetest.appendTo("#geetest");
  113. geetest.onSuccess(function () {
  114. geetest_result = geetest.getValidate();
  115. });
  116. });
  117. </script>
  118. {/if}
  119. {/if}
  120. {include file='footer.tpl'}