107 lines
4.8 KiB
HTML
107 lines
4.8 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Admin Dashboard - Mischkomposition</title>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
|
|
<link rel="stylesheet" href="/assets/css/main.min.css" />
|
|
<style>
|
|
.admin-section { background: rgba(0,0,0,0.5); padding: 2em; margin-bottom: 2em; border-radius: 4px; }
|
|
.folder-check { display: inline-block; margin: 5px 10px; padding: 8px 12px; background: rgba(255,255,255,0.1); border-radius: 4px; }
|
|
.folder-check label { cursor: pointer; }
|
|
table { width: 100%; border-collapse: collapse; }
|
|
th, td { text-align: left; padding: 10px; border-bottom: 1px solid rgba(255,255,255,0.2); }
|
|
.badge { display: inline-block; padding: 2px 8px; border-radius: 3px; font-size: 0.8em; }
|
|
.badge-admin { background: #e44d26; }
|
|
.badge-user { background: #2196F3; }
|
|
.badge-client { background: #4CAF50; }
|
|
.badge-expired { background: #666; }
|
|
.btn-small { padding: 4px 10px; font-size: 0.85em; margin: 2px; cursor: pointer; }
|
|
</style>
|
|
</head>
|
|
<body class="is-preload">
|
|
<div id="wrapper">
|
|
<header id="header">
|
|
<h1><a href="/index.html"><strong>Mischkomposition</strong> Admin</a></h1>
|
|
<nav><ul>
|
|
<li><a href="#" id="logout-btn">Logout <i class="fa fa-sign-out"></i></a></li>
|
|
</ul></nav>
|
|
</header>
|
|
|
|
<div id="main" style="display:block; padding: 2em; max-width: 1000px; margin: 0 auto; width: 100%;">
|
|
|
|
<div class="admin-section">
|
|
<h2>Nutzer erstellen</h2>
|
|
<form id="create-user-form" style="display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end;">
|
|
<div>
|
|
<label>Username</label><br/>
|
|
<input type="text" id="new-username" placeholder="Nutzername" required />
|
|
</div>
|
|
<div>
|
|
<label>Passwort</label><br/>
|
|
<input type="password" id="new-password" placeholder="Passwort" required />
|
|
</div>
|
|
<div>
|
|
<label>Rolle</label><br/>
|
|
<select id="new-role">
|
|
<option value="client">Client (30 Tage)</option>
|
|
<option value="user">User (permanent)</option>
|
|
<option value="admin">Admin</option>
|
|
</select>
|
|
</div>
|
|
<div>
|
|
<button type="submit">Erstellen</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
<div class="admin-section">
|
|
<h2>Nutzerverwaltung</h2>
|
|
<table>
|
|
<thead><tr><th>ID</th><th>Username</th><th>Rolle</th><th>Erstellt</th><th>Aktionen</th></tr></thead>
|
|
<tbody id="users-tbody"></tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="admin-section">
|
|
<h2>Ordner-Zuweisung</h2>
|
|
<p>Weise Unterordner aus dem Websitebilder-Verzeichnis einem Nutzer zu.</p>
|
|
<select id="user-select" style="margin-bottom: 1em;">
|
|
<option value="">Nutzer waehlen...</option>
|
|
</select>
|
|
<div id="folder-checkboxes" style="display:flex; flex-wrap:wrap; gap:5px; margin-bottom:1em;"></div>
|
|
<button id="save-assignments">Zuweisung Speichern</button>
|
|
<span id="assign-status" style="margin-left:10px;"></span>
|
|
</div>
|
|
|
|
<div class="admin-section">
|
|
<h2>Website aktualisieren</h2>
|
|
<p>Laedt das neueste Docker-Image und startet den Website-Container neu.</p>
|
|
<button id="sync-site">Sync starten</button>
|
|
<span id="sync-status" style="margin-left:10px;"></span>
|
|
</div>
|
|
|
|
<div class="admin-section">
|
|
<h2>Eigenes Passwort aendern</h2>
|
|
<form id="admin-pw-form" style="display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end;">
|
|
<div>
|
|
<label>Altes Passwort</label><br/>
|
|
<input type="password" id="admin-pw-old" required />
|
|
</div>
|
|
<div>
|
|
<label>Neues Passwort</label><br/>
|
|
<input type="password" id="admin-pw-new" required />
|
|
</div>
|
|
<div>
|
|
<button type="submit">Aendern</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<script src="/assets/js/jquery.min.js"></script>
|
|
<script src="/assets/js/admin.js"></script>
|
|
</body>
|
|
</html>
|