New UI layout
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

login.js 4.2KB

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