$(document).ready(function() { // Auth check $.get('/api/auth/me') .done(function(user) { if(user.role !== 'admin') { alert('Kein Zugriff!'); window.location.href = '/'; } else { loadUsers(); loadFolders(); $('body').removeClass('is-preload'); } }) .fail(function() { window.location.href = '/'; }); // Logout $('#logout-btn').click(function(e) { e.preventDefault(); $.post('/api/auth/logout').done(function() { window.location.href = '/'; }); }); // ==================== NUTZER ==================== function loadUsers() { $.get('/api/admin/users').done(function(users) { $('#users-tbody').empty(); $('#user-select').html(''); users.forEach(function(u) { var badge = $('').addClass('badge badge-' + u.role).text(u.role); var created = u.created_at ? new Date(u.created_at).toLocaleDateString('de-DE') : '-'; var info = created; if (u.role === 'client' && u.expires_at) { var expDate = new Date(u.expires_at).toLocaleDateString('de-DE'); if (u.expired) { badge = $('').addClass('badge badge-expired').text('abgelaufen'); info = 'Abgelaufen: ' + expDate; } else { info = 'Bis: ' + expDate; } } var row = $('
Keine Unterordner in Websitebilder gefunden. Erstelle Ordner in Nextcloud.
'); return; } folders.forEach(function(f) { var wrapper = $(''); var label = $(''); $('').val(f).appendTo(label); label.append(' '); $('').appendTo(label); label.append(' ' + f); wrapper.append(label); $('#folder-checkboxes').append(wrapper); }); }); } // Bei User-Auswahl: zugewiesene Ordner laden $('#user-select').change(function() { var uid = $(this).val(); $('.folder-cb').prop('checked', false); if (!uid) return; $.get('/api/admin/assign?user_id=' + uid).done(function(assignedFolders) { assignedFolders.forEach(function(f) { $('.folder-cb').filter(function() { return $(this).val() === f; }).prop('checked', true); }); }); }); // Zuweisung speichern $('#save-assignments').click(function() { var uid = $('#user-select').val(); if (!uid) return alert('Bitte Nutzer waehlen'); var selected = []; $('.folder-cb:checked').each(function() { selected.push($(this).val()); }); $.ajax({ url: '/api/admin/assign', type: 'POST', contentType: 'application/json', data: JSON.stringify({ user_id: uid, folders: selected }) }).done(function() { $('#assign-status').text('Gespeichert!').fadeIn().delay(2000).fadeOut(); }).fail(function() { alert('Fehler beim Speichern'); }); }); // ==================== EIGENES PASSWORT ==================== $('#admin-pw-form').submit(function(e) { e.preventDefault(); $.post('/api/auth/change-password', { old_password: $('#admin-pw-old').val(), new_password: $('#admin-pw-new').val() }).done(function() { alert('Passwort geaendert!'); $('#admin-pw-old, #admin-pw-new').val(''); }).fail(function(err) { alert(err.responseJSON ? err.responseJSON.error : 'Fehler'); }); }); });