webinterface/client/js/main.js

158 lines
5.1 KiB
JavaScript
Raw Normal View History

2024-11-14 17:43:37 +01:00
import { showAlert } from './shared_functions.js';
2024-10-29 21:09:13 +01:00
// IP-Adresse
const baseUrl = 'http://localhost:8015';
// Funktion zum Laden der Benutzerdaten für die normale Webseite
async function loadUserData() {
const token = localStorage.getItem('token');
if (!token) {
2024-11-14 17:43:37 +01:00
showAlert('Nicht autorisiert. Bitte einloggen.');
2024-10-29 21:09:13 +01:00
window.location.href = 'index.html';
return;
}
try {
const response = await fetch(`${baseUrl}/api/auth/me`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
});
console.log('Response status:', response.status);
2024-10-29 21:09:13 +01:00
if (!response.ok) {
throw new Error('Fehler beim Abrufen der Benutzerdaten');
}
const data = await response.json();
2024-10-29 21:09:13 +01:00
document.getElementById('username').textContent = data.user;
document.getElementById('isAdmin').textContent = data.isAdmin ? 'Ja' : 'Nein';
// Überprüfen, ob der Benutzer Admin ist
if (data.isAdmin) {
const adminBtn = document.getElementById('adminPermissionsBtn');
adminBtn.style.display = 'inline-block'; // Button anzeigen
adminBtn.addEventListener('click', () => {
window.location.href = 'admin.html'; // Bei Klick weiterleiten
});
}
} catch (error) {
console.error(error);
2024-11-14 17:43:37 +01:00
showAlert('Sitzung abgelaufen. Bitte erneut einloggen.');
2024-10-29 21:09:13 +01:00
localStorage.removeItem('token');
window.location.href = 'index.html';
}
}
// Funktion zum Abmelden
document.getElementById('logoutBtn').addEventListener('click', () => {
localStorage.removeItem('token');
window.location.href = 'index.html';
});
function toWelcome() {
location.href = 'welcome.html';
}
async function loadAdminData() {
const token = localStorage.getItem('token');
if (!token) {
2024-11-14 17:43:37 +01:00
showAlert('Nicht autorisiert. Bitte einloggen.');
2024-10-29 21:09:13 +01:00
window.location.href = 'index.html';
return;
}
try {
const response = await fetch(`${baseUrl}/api/auth/admin`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
});
if (!response.ok) {
2024-11-14 17:43:37 +01:00
showAlert('Zugriff verweigert. Sie sind kein Admin.');
2024-10-29 21:09:13 +01:00
window.location.href = 'welcome.html';
return;
}
const data = await response.json();
console.log(data.message); // "Willkommen, Admin!"
} catch (error) {
console.error(error);
2024-11-14 17:43:37 +01:00
showAlert('Sitzung abgelaufen. Bitte erneut einloggen.');
2024-10-29 21:09:13 +01:00
localStorage.removeItem('token');
window.location.href = 'index.html';
}
}
async function loadUserList() {
const token = localStorage.getItem('token');
const response = await fetch(`${baseUrl}/api/auth/users`, {
headers: { 'Authorization': `Bearer ${token}` }
});
if (response.ok) {
const users = await response.json();
const userList = document.getElementById('user-list');
userList.innerHTML = ''; // Liste leeren
users.forEach(user => {
const userDiv = document.createElement('div');
2024-10-29 22:24:31 +01:00
userDiv.style.display = 'flex';
userDiv.style.alignItems = 'center';
userDiv.setAttribute('id', `user-list-element`);
2024-10-29 21:09:13 +01:00
userDiv.innerHTML = `
2024-10-29 22:24:31 +01:00
<p style="flex: 0 0 25%;">Benutzername: ${user.username}</p>
<p style="flex: 0 0 25%;">Email: ${user.email}</p>
<button id="button-delete" onclick="deleteUser('${user._id}')" style="flex: 0 0 50%;">Benutzer löschen</button>
`;
2024-10-29 21:09:13 +01:00
userList.appendChild(userDiv);
});
} else {
2024-11-14 17:43:37 +01:00
showAlert('Fehler beim Laden der Benutzerliste');
2024-10-29 21:09:13 +01:00
}
}
// Überprüfen, ob wir uns auf der Admin-Seite befinden, und dann den Event-Listener hinzufügen
const loadUserListBtn = document.getElementById('loadUserListBtn');
if (loadUserListBtn) {
loadUserListBtn.addEventListener('click', loadUserList); // Benutzerliste laden, wenn der Button geklickt wird
}
// Funktion zum Löschen eines Benutzers
async function deleteUser(userId) {
const token = localStorage.getItem('token');
try {
const response = await fetch(`${baseUrl}/api/auth/user/${userId}`, {
method: 'DELETE',
headers: { 'Authorization': `Bearer ${token}` }
});
if (response.ok) {
2024-11-14 17:43:37 +01:00
await loadUserList(); // Liste aktualisieren
2024-10-29 21:09:13 +01:00
} else {
2024-11-14 17:43:37 +01:00
showAlert('Fehler beim Löschen des Benutzers');
2024-10-29 21:09:13 +01:00
}
} catch (error) {
console.error('Fehler beim Löschen des Benutzers:', error);
}
}
// Abhängig von der Seite entweder Admin- oder Benutzerdaten laden
if (window.location.pathname.includes('admin.html')) {
// Funktion um auf die Willkommensseite zurückzukommen
document.getElementById("welcomeButton").addEventListener("click", toWelcome);
2024-11-14 17:43:37 +01:00
await loadAdminData();
await loadUserList();
2024-10-29 21:09:13 +01:00
} else if (window.location.pathname.includes('welcome.html')) {
2024-11-14 17:43:37 +01:00
await loadUserData();
2024-10-29 21:09:13 +01:00
}