SenpaiZero

Untitled

May 28th, 2024
630
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.00 KB | None | 0 0
  1. import { auth, createUserWithEmailAndPassword } from './firebase.js';
  2. import { db, collection, doc, setDoc } from './firebase.js';
  3.  
  4. function registerUser() {
  5. const fullName = document.getElementById('regFullNameTxt').value;
  6. const username = document.getElementById('regUsernameTxt').value;
  7. const email = document.getElementById('regEmailTxt').value;
  8. const password = document.getElementById('regPasswordTxt').value;
  9. const confirmPassword = document.getElementById('confirmRegPasswordTxt').value;
  10.  
  11. // Check if any of the input fields are empty
  12. if (!fullName || !username || !email || !password || !confirmPassword) {
  13. alert("Please fill in all fields.");
  14. return;
  15. }
  16.  
  17. // Check if passwords match
  18. if (password !== confirmPassword) {
  19. alert("Passwords do not match!");
  20. return;
  21. }
  22.  
  23. function generateRandomNumber() {
  24. const randomPart = Math.floor(Math.random() * (99999 - 10000 + 1)) + 10000;
  25. return '100' + randomPart.toString();
  26. }
  27.  
  28. // Create user with email and password
  29. createUserWithEmailAndPassword(auth, email, password)
  30. .then((userCredential) => {
  31. // User registered successfully
  32. alert("User registered successfully!");
  33.  
  34. // Save user to Firestore
  35. const rand = generateRandomNumber();
  36. const user = userCredential.user;
  37. const userRef = doc(db, 'users', user.uid);
  38. setDoc(userRef, {
  39. accountID: rand,
  40. fullName: fullName,
  41. username: username,
  42. email: email
  43. })
  44. .then(() => {
  45. console.log("User data saved in Firestore");
  46. // Creating a QuizTable each register
  47. const quizTableRef = collection(db, `users/${user.uid}/quizTables`);
  48. const newQuizTableRef = doc(quizTableRef);
  49. setDoc(newQuizTableRef, {})
  50. .then(() => {
  51. console.log("Quiz table created");
  52.  
  53. // Creating sub-collections "quizzes" and "settings" for the new quiz table
  54. const quizzesRef = collection(db, `users/${user.uid}/quizTables/${newQuizTableRef.id}/quizzes`);
  55. const settingsRef = collection(db, `users/${user.uid}/quizTables/${newQuizTableRef.id}/settings`);
  56.  
  57. setDoc(doc(quizzesRef), {})
  58. .then(() => {
  59. console.log("Quizzes sub-collection created");
  60. })
  61. .catch((error) => {
  62. console.error("Error creating quizzes sub-collection: ", error);
  63. });
  64.  
  65. setDoc(doc(settingsRef), {})
  66. .then(() => {
  67. console.log("Settings sub-collection created");
  68. })
  69. .catch((error) => {
  70. console.error("Error creating settings sub-collection: ", error);
  71. });
  72. })
  73. .catch((error) => {
  74. console.error("Error creating quiz table: ", error);
  75. });
  76. })
  77. .catch((error) => {
  78. console.error("Error saving user data: ", error);
  79. });
  80.  
  81. // Clear the registration form
  82. const registerForm = document.getElementById('registerForm');
  83. if (registerForm) {
  84. registerForm.reset();
  85. }
  86.  
  87. // Switch to the login form
  88. document.getElementById('registerBox').classList.add('hidden');
  89. document.getElementById('loginBox').classList.remove('hidden');
  90. })
  91. .catch((error) => {
  92. console.error(`Error: ${error.message}`);
  93. alert(`Error: ${error.message}`);
  94. });
  95. }
  96.  
  97. document.getElementById('signupBtn').addEventListener('click', function(e) {
  98. e.preventDefault();
  99. registerUser();
  100. });
  101.  
  102. document.getElementById('openRegister').addEventListener('click', function() {
  103. document.getElementById('loginBox').classList.add('hidden');
  104. document.getElementById('registerBox').classList.remove('hidden');
  105. });
  106.  
  107. document.getElementById('loginInsteadBtn').addEventListener('click', function() {
  108. document.getElementById('registerBox').classList.add('hidden');
  109. document.getElementById('loginBox').classList.remove('hidden');
  110. });
  111.  
Advertisement
Add Comment
Please, Sign In to add comment