| <!DOCTYPE html>
|
| <html lang="en">
|
| <head>
|
| <meta charset="UTF-8">
|
| <title>Login</title>
|
| <script src="https://cdn.tailwindcss.com"></script>
|
| </head>
|
| <body class="min-h-screen bg-gradient-to-br from-indigo-600 to-purple-700 flex items-center justify-center">
|
|
|
| <div class="bg-white w-full max-w-md rounded-2xl shadow-xl p-8">
|
| <h2 class="text-3xl font-bold text-center text-gray-800">Welcome Back</h2>
|
| <p class="text-center text-gray-500 mt-2">Login to continue</p>
|
|
|
| <form method="POST" class="mt-6 space-y-4">
|
| <input type="email" name="email" placeholder="Email"
|
| required
|
| class="w-full px-4 py-3 rounded-lg border focus:ring-2 focus:ring-indigo-500 outline-none">
|
|
|
| <input type="password" name="password" placeholder="Password"
|
| required
|
| class="w-full px-4 py-3 rounded-lg border focus:ring-2 focus:ring-indigo-500 outline-none">
|
|
|
| <button
|
| class="w-full bg-indigo-600 hover:bg-indigo-700 text-white py-3 rounded-lg font-semibold transition">
|
| Login
|
| </button>
|
| </form>
|
|
|
| <div class="flex justify-between text-sm mt-4 text-gray-600">
|
| <a href="/auth/register" class="hover:underline">Create account</a>
|
| <a href="/auth/forgot" class="hover:underline">Forgot password?</a>
|
| </div>
|
| </div>
|
| <script>
|
| const form = document.querySelector("form");
|
|
|
| form.addEventListener("submit", async (e) => {
|
| e.preventDefault();
|
|
|
| const formData = new FormData(form);
|
|
|
| const res = await fetch("/auth/login", {
|
| method: "POST",
|
| body: formData
|
| });
|
|
|
| const data = await res.json();
|
|
|
| if (data.access_token) {
|
|
|
| localStorage.setItem("jwt_token", data.access_token);
|
|
|
|
|
| window.location.href = "/";
|
| } else {
|
| alert("Login failed");
|
| }
|
| });
|
| </script>
|
| <div id="alertBox"
|
| class="hidden fixed top-5 right-5 max-w-sm px-5 py-4 rounded-lg shadow-lg text-white">
|
| </div>
|
| {% if success %}
|
| <script>
|
| showAlert("{{ success }}", "success");
|
| </script>
|
| {% endif %}
|
|
|
| </body>
|
| </html>
|
|
|