Athenaeum/static/js/auth.js

142 lines
4.3 KiB
JavaScript
Raw Normal View History

2025-06-01 11:09:37 +02:00
import { setTheme } from './theme.js';
2025-05-30 18:00:52 +02:00
2025-06-01 11:09:37 +02:00
document.addEventListener('DOMContentLoaded', function() {
const loginForm = document.getElementById('loginForm');
const registerForm = document.getElementById('registerForm');
const logoutLink = document.getElementById('logoutLink');
checkAuthStatus();
if (loginForm) {
loginForm.addEventListener('submit', handleLogin);
}
if (registerForm) {
registerForm.addEventListener('submit', handleRegister);
}
if (logoutLink) {
logoutLink.addEventListener('click', handleLogout);
}
});
async function checkAuthStatus() {
try {
const response = await fetch('/api/check-auth', {
credentials: 'include'
});
const data = await response.json();
const authLinks = document.querySelector('.auth-links');
if (authLinks) {
const anonymousLinks = authLinks.querySelector('.anonymous-links');
const userLinks = authLinks.querySelector('.user-links');
if (anonymousLinks && userLinks) {
if (data.authenticated) {
anonymousLinks.style.display = 'none';
userLinks.style.display = 'flex';
} else {
anonymousLinks.style.display = 'flex';
userLinks.style.display = 'none';
}
}
}
} catch (error) {
console.error('Błąd sprawdzania statusu uwierzytelnienia:', error);
}
}
async function handleLogin(e) {
2025-05-30 20:02:17 +02:00
e.preventDefault();
2025-05-30 18:00:52 +02:00
2025-06-01 11:09:37 +02:00
const email = document.getElementById('loginEmail').value;
const password = document.getElementById('loginPassword').value;
2025-05-30 20:02:17 +02:00
try {
const response = await fetch('/login', {
method: 'POST',
2025-06-01 11:09:37 +02:00
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ email, haslo: password }),
credentials: 'include'
2025-05-30 20:02:17 +02:00
});
2025-06-01 11:09:37 +02:00
2025-05-30 20:02:17 +02:00
if (response.ok) {
2025-06-01 11:09:37 +02:00
const data = await response.json();
localStorage.setItem('userName', data.imie);
2025-05-30 20:02:17 +02:00
window.location.href = '/';
} else {
2025-06-01 11:09:37 +02:00
const errorData = await response.json();
alert(`Błąd logowania: ${errorData.message || 'Nieznany błąd'}`);
2025-05-30 18:00:52 +02:00
}
2025-05-30 20:02:17 +02:00
} catch (error) {
2025-06-01 11:09:37 +02:00
console.error('Błąd logowania:', error);
alert('Wystąpił błąd podczas logowania');
2025-05-30 20:02:17 +02:00
}
2025-06-01 11:09:37 +02:00
}
2025-05-30 20:02:17 +02:00
2025-06-01 11:09:37 +02:00
async function handleRegister(e) {
e.preventDefault();
const name = document.getElementById('registerName').value;
const email = document.getElementById('registerEmail').value;
const password = document.getElementById('registerPassword').value;
const confirmPassword = document.getElementById('registerConfirmPassword').value;
if (password !== confirmPassword) {
alert('Hasła nie są identyczne!');
return;
}
2025-05-30 20:02:17 +02:00
try {
2025-06-01 11:09:37 +02:00
const response = await fetch('/rejestracja', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
email,
haslo: password,
imie: name,
confirm_password: confirmPassword
}),
credentials: 'include'
2025-05-30 20:02:17 +02:00
});
2025-06-01 11:09:37 +02:00
if (response.ok) {
alert('Konto zostało utworzone! Możesz się zalogować.');
window.location.href = '/login.html';
} else {
const errorData = await response.json();
alert(`Błąd rejestracji: ${errorData.message || 'Nieznany błąd'}`);
}
2025-05-30 20:02:17 +02:00
} catch (error) {
2025-06-01 11:09:37 +02:00
console.error('Błąd rejestracji:', error);
alert('Wystąpił błąd podczas rejestracji');
2025-05-30 20:02:17 +02:00
}
}
2025-06-01 11:09:37 +02:00
async function handleLogout(e) {
2025-05-30 20:02:17 +02:00
e.preventDefault();
2025-06-01 11:09:37 +02:00
2025-05-30 20:02:17 +02:00
try {
2025-06-01 11:09:37 +02:00
const response = await fetch('/logout', {
2025-05-30 20:02:17 +02:00
method: 'POST',
2025-06-01 11:09:37 +02:00
credentials: 'include'
2025-05-30 20:02:17 +02:00
});
2025-06-01 11:09:37 +02:00
if (response.ok) {
localStorage.removeItem('userName');
window.location.href = '/';
} else {
alert('Wystąpił problem podczas wylogowywania');
}
2025-05-30 20:02:17 +02:00
} catch (error) {
2025-06-01 11:09:37 +02:00
console.error('Błąd wylogowywania:', error);
alert('Wystąpił błąd podczas wylogowywania');
2025-05-30 20:02:17 +02:00
}
2025-06-01 11:09:37 +02:00
}