75 lines
2.5 KiB
JavaScript
75 lines
2.5 KiB
JavaScript
const POCKETBASE_URL = 'https://pocketbase.ccllc.pro';
|
|
|
|
// Initialize PocketBase client
|
|
const pb = new PocketBase(POCKETBASE_URL);
|
|
|
|
// Load existing auth from cookies (PocketBase stores auth in cookies automatically)
|
|
try {
|
|
pb.authStore.loadFromCookie(document.cookie);
|
|
} catch (e) {
|
|
// If cookie loading fails, try localStorage
|
|
const storedToken = localStorage.getItem('pb_auth_token');
|
|
const storedModel = localStorage.getItem('pb_auth_model');
|
|
if (storedToken && storedModel) {
|
|
try {
|
|
pb.authStore.save(storedToken, JSON.parse(storedModel));
|
|
} catch (e2) {
|
|
console.error('Error loading auth:', e2);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Check if user is already authenticated
|
|
function checkAuth() {
|
|
return pb.authStore.isValid;
|
|
}
|
|
|
|
// Handle login form submission
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
const loginForm = document.getElementById('loginForm');
|
|
const errorMessage = document.getElementById('errorMessage');
|
|
|
|
if (loginForm) {
|
|
loginForm.addEventListener('submit', async (e) => {
|
|
e.preventDefault();
|
|
|
|
const email = document.getElementById('email').value;
|
|
const password = document.getElementById('password').value;
|
|
const submitButton = document.getElementById('submitButton');
|
|
const originalButtonText = submitButton.textContent;
|
|
|
|
// Disable button and show loading state
|
|
submitButton.disabled = true;
|
|
submitButton.textContent = 'Logging in...';
|
|
errorMessage.textContent = '';
|
|
errorMessage.classList.add('hidden');
|
|
|
|
try {
|
|
// Authenticate with PocketBase (automatically stores in cookies)
|
|
const authData = await pb.collection('users').authWithPassword(email, password);
|
|
|
|
// Store token in localStorage as backup
|
|
if (authData && authData.token) {
|
|
localStorage.setItem('pb_auth_token', authData.token);
|
|
localStorage.setItem('pb_auth_model', JSON.stringify(authData.record));
|
|
}
|
|
|
|
// Redirect to dashboard
|
|
window.location.href = '/dashboard.html';
|
|
} catch (error) {
|
|
console.error('Login error:', error);
|
|
errorMessage.textContent = error.message || 'Invalid email or password';
|
|
errorMessage.classList.remove('hidden');
|
|
submitButton.disabled = false;
|
|
submitButton.textContent = originalButtonText;
|
|
}
|
|
});
|
|
}
|
|
|
|
// If already authenticated, redirect to dashboard
|
|
if (checkAuth() && (window.location.pathname === '/index.html' || window.location.pathname === '/')) {
|
|
window.location.href = '/dashboard.html';
|
|
}
|
|
});
|
|
|