176 lines
5.8 KiB
JavaScript
176 lines
5.8 KiB
JavaScript
import {showAlert, showConfirm} from './shared_functions.js';
|
|
|
|
// 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) {
|
|
showAlert('Nicht autorisiert. Bitte einloggen.');
|
|
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);
|
|
|
|
if (!response.ok) {
|
|
throw new Error('Fehler beim Abrufen der Benutzerdaten');
|
|
}
|
|
|
|
const data = await response.json();
|
|
|
|
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);
|
|
showAlert('Sitzung abgelaufen. Bitte erneut einloggen.');
|
|
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) {
|
|
showAlert('Nicht autorisiert. Bitte einloggen.');
|
|
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) {
|
|
showAlert('Zugriff verweigert. Sie sind kein Admin.');
|
|
window.location.href = 'welcome.html';
|
|
return;
|
|
}
|
|
|
|
const data = await response.json();
|
|
console.log(data.message); // "Willkommen, Admin!"
|
|
} catch (error) {
|
|
console.error(error);
|
|
showAlert('Sitzung abgelaufen. Bitte erneut einloggen.');
|
|
localStorage.removeItem('token');
|
|
window.location.href = 'index.html';
|
|
}
|
|
}
|
|
|
|
// Funktion zum Löschen eines Benutzers
|
|
async function deleteUser(userId, isAdmin) {
|
|
|
|
// If the user is an admin, show a warning confirmation
|
|
if (isAdmin) {
|
|
const userConfirmed = await showConfirm('Warnung: Möchten Sie wirklich einen Administrator löschen? Dies kann nicht rückgängig gemacht werden.', 'error');
|
|
if (!userConfirmed) {
|
|
return; // If the user cancels, do nothing
|
|
}
|
|
}
|
|
|
|
const token = localStorage.getItem('token');
|
|
try {
|
|
const response = await fetch(`${baseUrl}/api/auth/user/${userId}`, {
|
|
method: 'DELETE',
|
|
headers: { 'Authorization': `Bearer ${token}` }
|
|
});
|
|
|
|
if (response.ok) {
|
|
await loadUserList(); // Liste aktualisieren
|
|
} else {
|
|
showAlert('Fehler beim Löschen des Benutzers');
|
|
}
|
|
} catch (error) {
|
|
console.error('Fehler beim Löschen des Benutzers:', error);
|
|
}
|
|
}
|
|
|
|
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');
|
|
userDiv.style.display = 'flex';
|
|
userDiv.style.alignItems = 'center';
|
|
userDiv.setAttribute('id', `user-list-element-${user._id}`); // Give each div a unique ID
|
|
userDiv.innerHTML = `
|
|
<p style="flex: 0 0 25%;">Benutzername: ${user.username}</p>
|
|
<p style="flex: 0 0 25%;">Email: ${user.email}</p>
|
|
<p style="flex: 0 0 20%;">Admin: ${user.isAdmin}</p>
|
|
<button class="button-delete" style="flex: 0 0 30%;">Benutzer löschen</button>
|
|
`;
|
|
userList.appendChild(userDiv);
|
|
|
|
// Add event listener to the specific delete button
|
|
const deleteButton = userDiv.querySelector(".button-delete");
|
|
deleteButton.addEventListener("click", function() {
|
|
deleteUser(user._id, user.isAdmin);
|
|
});
|
|
});
|
|
} else {
|
|
showAlert('Fehler beim Laden der Benutzerliste');
|
|
}
|
|
}
|
|
|
|
// Ü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
|
|
}
|
|
|
|
|
|
|
|
// 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);
|
|
await loadAdminData();
|
|
await loadUserList();
|
|
} else if (window.location.pathname.includes('welcome.html')) {
|
|
await loadUserData();
|
|
}
|
|
|