login.html 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Login</title>
  5. <meta name="viewport" content="width=device-width, initial-scale=1" >
  6. <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  7. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tocas-ui/5.0.2/tocas.min.css">
  8. <script src="https://cdnjs.cloudflare.com/ajax/libs/tocas-ui/5.0.2/tocas.min.js"></script>
  9. <link rel="preconnect" href="https://fonts.googleapis.com">
  10. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  11. <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;700&display=swap" rel="stylesheet">
  12. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  13. </head>
  14. <body>
  15. <div class="ts-app-center">
  16. <div class="content">
  17. <a href="index.html">
  18. <div class="ts-image is-centered">
  19. <img src="img/logo.png" width="150">
  20. </div>
  21. </a>
  22. <div class="has-top-spaced-large"></div>
  23. <div class="ts-box has-top-spaced-large" style="width: 260px">
  24. <div class="ts-content">
  25. <div class="ts-wrap is-vertical">
  26. <div class="ts-text is-label">Username</div>
  27. <div class="ts-input is-start-icon is-underlined">
  28. <span class="ts-icon is-user-icon"></span>
  29. <input type="text" name="username" placeholder="Username" required>
  30. </div>
  31. <div class="ts-text is-label">Password</div>
  32. <div class="ts-input is-start-icon is-underlined">
  33. <span class="ts-icon is-lock-icon"></span>
  34. <input type="password" name="password" placeholder="Password" required>
  35. </div>
  36. <button id="loginBtn" class="ts-button is-fluid" onclick="login(event);">Login</button>
  37. </div>
  38. <a class="ts-text is-icon-link has-top-spaced-large" href="index.html">
  39. <span class="ts-icon is-arrow-left-icon"></span>
  40. Back
  41. </a>
  42. </div>
  43. </div>
  44. </div>
  45. </div>
  46. <script>
  47. $(document).ready(function() {
  48. $('input[name="username"]').on('keypress', function(e) {
  49. if (e.which === 13) { // Enter key
  50. e.preventDefault();
  51. $('input[name="password"]').focus();
  52. }
  53. });
  54. $('input[name="password"]').on('keypress', function(e) {
  55. if (e.which === 13) { // Enter key
  56. e.preventDefault();
  57. login(e);
  58. }
  59. });
  60. });
  61. function login(e){
  62. e.preventDefault(); // Prevent form submission
  63. // Get the input values
  64. var username = $('input[name="username"]').val();
  65. var password = $('input[name="password"]').val();
  66. $.ajax({
  67. url: "/api/auth/login?username=" + username + "&password=" + password,
  68. method: "POST",
  69. success: function(data){
  70. if (data.error != undefined){
  71. $('input[name="username"], input[name="password"]').parent().addClass('is-negative');
  72. }else{
  73. //Logged in
  74. window.location.href = "/admin/";
  75. }
  76. }
  77. });
  78. }
  79. </script>
  80. </body>
  81. </html>