File size: 3,030 Bytes
4ed7d03
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// Authentication JavaScript

function showTab(tabName, buttonElement) {
  // Hide all tabs
  document.querySelectorAll(".tab-content").forEach((tab) => {
    tab.classList.remove("active");
  });

  document.querySelectorAll(".tab-btn").forEach((btn) => {
    btn.classList.remove("active");
  });

  // Show selected tab
  document.getElementById(tabName + "-tab").classList.add("active");
  if (buttonElement) {
    buttonElement.classList.add("active");
  }

  // Clear message
  hideMessage();
}

function showMessage(message, type) {
  const messageDiv = document.getElementById("message");
  messageDiv.textContent = message;
  messageDiv.className = "message " + type;
  messageDiv.style.display = "block";
}

function hideMessage() {
  const messageDiv = document.getElementById("message");
  messageDiv.style.display = "none";
}

async function handleLogin(event) {
  event.preventDefault();

  const username = document.getElementById("login-username").value;
  const password = document.getElementById("login-password").value;

  try {
    const response = await fetch("/login", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ username, password }),
    });

    const data = await response.json();

    if (data.success) {
      showMessage(data.message, "success");
      setTimeout(() => {
        window.location.href = "/dashboard";
      }, 1000);
    } else {
      showMessage(data.message, "error");
    }
  } catch (error) {
    showMessage("An error occurred. Please try again.", "error");
    console.error("Login error:", error);
  }
}

async function handleRegister(event) {
  event.preventDefault();

  const username = document.getElementById("register-username").value;
  const email = document.getElementById("register-email").value;
  const password = document.getElementById("register-password").value;
  const confirmPassword = document.getElementById(
    "register-confirm-password",
  ).value;

  // Validate password match
  if (password !== confirmPassword) {
    showMessage("Passwords do not match!", "error");
    return;
  }

  // Validate password length
  if (password.length < 6) {
    showMessage("Password must be at least 6 characters long!", "error");
    return;
  }

  try {
    const response = await fetch("/register", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ username, email, password }),
    });

    const data = await response.json();

    if (data.success) {
      showMessage(data.message, "success");
      // Switch to login tab after successful registration
      setTimeout(() => {
        document.querySelector(".tab-btn").click();
        document.getElementById("register-form").reset();
      }, 2000);
    } else {
      showMessage(data.message, "error");
    }
  } catch (error) {
    showMessage("An error occurred. Please try again.", "error");
    console.error("Registration error:", error);
  }
}