New UI layout
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

login.js 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. import {setCookie} from "./cookiehelper.js";
  2. import {_serverUrl} from "./setting.js";
  3. const serverUrl = _serverUrl();
  4. const emailInputEl = document.getElementById("email");
  5. const passwordInputEl = document.getElementById("password");
  6. const emailErrEl = document.getElementById("emailErrMsg");
  7. const passwordErrEl = document.getElementById("passwordErrMsg");
  8. const emailContainerEl = document.getElementById("emailBox");
  9. const passwordContainerEl = document.getElementById("passwordBox");
  10. const showPasswordChk = document.getElementById("showPassword");
  11. const emailNextBtn = document.getElementById("emailNextBtn");
  12. const renterEmailLink = document.getElementById("renterEmail");
  13. const loginSubmitBtn = document.getElementById("loginSubmitBtn");
  14. passwordContainerEl.style.display = "none";
  15. emailInputEl.focus();
  16. function showPasswordBox() {
  17. const email = emailInputEl.value;
  18. if (validateEmailOrPhone()) {
  19. emailContainerEl.style.display = "none";
  20. passwordContainerEl.style.display = "block";
  21. document.getElementById("entered-email").innerHTML = email;
  22. passwordInputEl.focus();
  23. emailInputEl.classList.remove("error");
  24. emailErrEl.innerText = "";
  25. } else {
  26. emailInputEl.classList.add("error");
  27. emailErrEl.innerText = "Please enter valid email or phone";
  28. }
  29. }
  30. function validateEmailOrPhone() {
  31. const value = emailInputEl.value.trim();
  32. const regx = /^[6-9]\d{9}$/;
  33. if (value.includes("@") || regx.test(value)) {
  34. return true;
  35. }
  36. return false;
  37. }
  38. function togglePassword() {
  39. const ele = document.getElementById("showPassword");
  40. const password = passwordInputEl;
  41. if (password.value.length > 0) {
  42. passwordInputEl.value = password.value;
  43. password.focus();
  44. if (ele.checked) {
  45. password.setAttribute("type", "text");
  46. } else {
  47. password.setAttribute("type", "password");
  48. }
  49. }
  50. }
  51. function onPasswordFocusOut() {
  52. const passwordLabel = document.getElementById("passwordLabel");
  53. if (passwordInputEl.value.length > 0) {
  54. passwordLabel.classList.add("password-fixed");
  55. } else {
  56. passwordLabel.classList.remove("password-fixed");
  57. }
  58. }
  59. function onEmailFocusOut() {
  60. const emailLabel = document.getElementById("emailLabel");
  61. if (emailInputEl.value.trim()) {
  62. emailLabel.classList.add("password-fixed");
  63. } else {
  64. emailLabel.classList.remove("password-fixed");
  65. }
  66. }
  67. function loginUser(email, password) {
  68. const postData = JSON.stringify({
  69. UserName: email,
  70. Password: password,
  71. UnibaseId: "",
  72. RememberMe: false,
  73. });
  74. const requestOptions = {
  75. method: "POST",
  76. headers: {
  77. "Content-Type": "application/json",
  78. },
  79. body: postData,
  80. redirect: "follow",
  81. };
  82. fetch(serverUrl + "account/login", requestOptions)
  83. .then((response) => response.text())
  84. .then((result) => {
  85. const data = JSON.parse(result);
  86. if (data.status === 0) {
  87. setCookie("_idty", JSON.stringify(data.result), 1);
  88. window.location = "../authentication";
  89. } else {
  90. passwordErrEl.innerText = data.message;
  91. }
  92. })
  93. .catch((error) => {
  94. passwordErrEl.innerText = error;
  95. });
  96. }
  97. function validateLogin() {
  98. const email = emailInputEl.value;
  99. const password = passwordInputEl.value;
  100. if (password.trim().length !== 0) {
  101. loginUser(email, password);
  102. } else {
  103. passwordInputEl.classList.add("error");
  104. passwordErrEl.innerText = "Please enter valid password";
  105. }
  106. }
  107. function reEnterEmailClickHandler() {
  108. emailContainerEl.style.display = "block";
  109. passwordContainerEl.style.display = "none";
  110. emailInputEl.focus();
  111. }
  112. function initializeEventListeners() {
  113. emailNextBtn.addEventListener("click", showPasswordBox);
  114. showPasswordChk.addEventListener("click", togglePassword);
  115. passwordInputEl.addEventListener("focusout", onPasswordFocusOut);
  116. emailInputEl.addEventListener("focusout", onEmailFocusOut);
  117. loginSubmitBtn.addEventListener("click", validateLogin);
  118. renterEmailLink.addEventListener("click", reEnterEmailClickHandler);
  119. }
  120. initializeEventListeners();