194 lines
6.6 KiB
JavaScript
194 lines
6.6 KiB
JavaScript
// login.js
|
|
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
const loginForm = document.getElementById('loginForm');
|
|
const loginBtn = document.getElementById('loginSubmit');
|
|
const successMessage = document.getElementById('successMessage');
|
|
const errorMessage = document.getElementById('errorMessage');
|
|
const errorText = document.getElementById('errorText');
|
|
const registerBtn = document.getElementById('registerBtn');
|
|
|
|
// Register button functionality
|
|
if (registerBtn) {
|
|
registerBtn.addEventListener('click', function(e) {
|
|
e.preventDefault();
|
|
window.location.href = 'register.html';
|
|
});
|
|
}
|
|
|
|
// Check if user is already logged in
|
|
checkExistingSession();
|
|
|
|
// Login form submission
|
|
if (loginForm) {
|
|
loginForm.addEventListener('submit', function(e) {
|
|
e.preventDefault();
|
|
|
|
const email = document.getElementById('email').value;
|
|
const password = document.getElementById('password').value;
|
|
const remember = document.getElementById('remember').checked;
|
|
|
|
// Simple validation
|
|
if (!email || !password) {
|
|
showError('Bitte füllen Sie alle Felder aus.');
|
|
return;
|
|
}
|
|
|
|
// Email validation
|
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
if (!emailRegex.test(email)) {
|
|
showError('Bitte geben Sie eine gültige E-Mail-Adresse ein.');
|
|
return;
|
|
}
|
|
|
|
// Show loading state
|
|
setLoadingState(true);
|
|
hideMessages();
|
|
|
|
// Simulate login process (for demo purposes)
|
|
setTimeout(() => {
|
|
// Store session (for demo purposes)
|
|
const sessionData = {
|
|
user: { email: email },
|
|
loginTime: new Date().toISOString(),
|
|
remember: remember
|
|
};
|
|
|
|
if (remember) {
|
|
localStorage.setItem('userSession', JSON.stringify(sessionData));
|
|
} else {
|
|
sessionStorage.setItem('userSession', JSON.stringify(sessionData));
|
|
}
|
|
|
|
// Show success message
|
|
showSuccess('Anmeldung erfolgreich! Sie werden weitergeleitet...');
|
|
|
|
// Redirect after delay
|
|
setTimeout(() => {
|
|
window.location.href = '../index.html';
|
|
}, 2000);
|
|
|
|
setLoadingState(false);
|
|
}, 1500);
|
|
});
|
|
}
|
|
|
|
// Loading state management
|
|
function setLoadingState(loading) {
|
|
if (loginBtn) {
|
|
const btnText = loginBtn.querySelector('.btn-text');
|
|
const btnLoading = loginBtn.querySelector('.btn-loading');
|
|
|
|
if (loading) {
|
|
loginBtn.disabled = true;
|
|
if (btnText) btnText.style.display = 'none';
|
|
if (btnLoading) btnLoading.style.display = 'inline-block';
|
|
} else {
|
|
loginBtn.disabled = false;
|
|
if (btnText) btnText.style.display = 'inline-block';
|
|
if (btnLoading) btnLoading.style.display = 'none';
|
|
}
|
|
}
|
|
}
|
|
|
|
// Message display functions
|
|
function showSuccess(message) {
|
|
if (successMessage) {
|
|
const messageElement = successMessage.querySelector('p');
|
|
if (messageElement) {
|
|
messageElement.textContent = message;
|
|
}
|
|
successMessage.classList.add('show');
|
|
}
|
|
}
|
|
|
|
function showError(message) {
|
|
if (errorMessage && errorText) {
|
|
errorText.textContent = message;
|
|
errorMessage.classList.add('show');
|
|
|
|
// Hide after 5 seconds
|
|
setTimeout(() => {
|
|
errorMessage.classList.remove('show');
|
|
}, 5000);
|
|
}
|
|
}
|
|
|
|
function hideMessages() {
|
|
if (successMessage) successMessage.classList.remove('show');
|
|
if (errorMessage) errorMessage.classList.remove('show');
|
|
}
|
|
});
|
|
|
|
// Check existing session - DISABLED auto-redirect
|
|
function checkExistingSession() {
|
|
const sessionData = localStorage.getItem('userSession') || sessionStorage.getItem('userSession');
|
|
|
|
if (sessionData) {
|
|
try {
|
|
const session = JSON.parse(sessionData);
|
|
const loginTime = new Date(session.loginTime);
|
|
const now = new Date();
|
|
const sessionAge = (now - loginTime) / (1000 * 60 * 60); // hours
|
|
|
|
// Auto-logout after 24 hours
|
|
if (sessionAge < 24) {
|
|
// User is still logged in - just log it, don't redirect
|
|
console.log('User already logged in');
|
|
// DISABLED: window.location.href = '../index.html';
|
|
} else {
|
|
// Session expired, remove it
|
|
console.log('Session expired, removing...');
|
|
localStorage.removeItem('userSession');
|
|
sessionStorage.removeItem('userSession');
|
|
}
|
|
} catch (error) {
|
|
console.error('Session parsing error:', error);
|
|
localStorage.removeItem('userSession');
|
|
sessionStorage.removeItem('userSession');
|
|
}
|
|
}
|
|
}
|
|
|
|
// Logout function (can be called from other pages)
|
|
function logout() {
|
|
localStorage.removeItem('userSession');
|
|
sessionStorage.removeItem('userSession');
|
|
window.location.href = 'sites/login.html';
|
|
}
|
|
|
|
// Get current user (can be called from other pages)
|
|
function getCurrentUser() {
|
|
const sessionData = localStorage.getItem('userSession') || sessionStorage.getItem('userSession');
|
|
|
|
if (sessionData) {
|
|
try {
|
|
const session = JSON.parse(sessionData);
|
|
const loginTime = new Date(session.loginTime);
|
|
const now = new Date();
|
|
const sessionAge = (now - loginTime) / (1000 * 60 * 60); // hours
|
|
|
|
if (sessionAge < 24) {
|
|
return session.user;
|
|
} else {
|
|
// Session expired
|
|
localStorage.removeItem('userSession');
|
|
sessionStorage.removeItem('userSession');
|
|
return null;
|
|
}
|
|
} catch (error) {
|
|
console.error('Session parsing error:', error);
|
|
localStorage.removeItem('userSession');
|
|
sessionStorage.removeItem('userSession');
|
|
return null;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
// Check if user is logged in (can be called from other pages)
|
|
function isLoggedIn() {
|
|
return getCurrentUser() !== null;
|
|
}
|