New UI layout
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

login.js 3.9KB

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