user
This commit is contained in:
137
public/index.php
137
public/index.php
@@ -40,11 +40,6 @@ $assetVersion = defined('ASSET_VERSION') ? ASSET_VERSION : time();
|
||||
.section-card{background:#fff;border:1px solid #e2e8f0;border-radius:1rem;padding:1rem;margin-bottom:1.25rem}
|
||||
.section-card h4{margin:0 0 .75rem;font-size:1rem;font-weight:600;color:#0f172a}
|
||||
.input{width:100%;border:1px solid #cbd5f5;border-radius:.5rem;padding:.5rem .75rem}
|
||||
.user-tabs{display:flex;gap:.5rem;margin-bottom:1rem}
|
||||
.user-panel{width:90vw;max-width:960px}
|
||||
.team-table{width:100%;border-collapse:collapse;font-size:.9rem}
|
||||
.team-table th,.team-table td{padding:.35rem .5rem;border-bottom:1px solid #e2e8f0;text-align:left}
|
||||
.badge{display:inline-flex;align-items:center;padding:.1rem .5rem;border-radius:999px;font-size:.75rem;background:#e2e8f0;color:#0f172a}
|
||||
</style>
|
||||
</head>
|
||||
<body class="page-admin bg-slate-50 text-slate-800">
|
||||
@@ -59,9 +54,9 @@ $assetVersion = defined('ASSET_VERSION') ? ASSET_VERSION : time();
|
||||
</nav>
|
||||
<div class="ms-auto flex gap-2 items-center">
|
||||
<button id="btn-new" type="button" class="btn">Neu …</button>
|
||||
<button id="btn-user" type="button" class="btn-avatar" title="Mein Konto">
|
||||
<a href="account.php" id="btn-user" class="btn-avatar" title="Mein Konto">
|
||||
<span id="userAvatar">U</span>
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
@@ -165,137 +160,9 @@ $assetVersion = defined('ASSET_VERSION') ? ASSET_VERSION : time();
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<!-- User Account Dialog -->
|
||||
<dialog id="userDialog" class="rounded-2xl p-0 user-panel">
|
||||
<div class="flex flex-col bg-white rounded-2xl max-h-[90vh]">
|
||||
<div class="px-4 py-3 border-b flex items-center gap-3 bg-white/80 backdrop-blur rounded-t-2xl">
|
||||
<strong class="text-lg me-auto">Mein Konto</strong>
|
||||
<button type="button" id="userClose" class="btn">Schließen</button>
|
||||
</div>
|
||||
<div class="p-4 overflow-y-auto flex-1">
|
||||
<div class="user-tabs">
|
||||
<button type="button" data-user-tab="profile" class="btn bg-sky-50 text-sky-700 flex-1">Profil</button>
|
||||
<button type="button" data-user-tab="security" class="btn flex-1">Passwort</button>
|
||||
<button type="button" data-user-tab="team" class="btn flex-1 owner-only hidden">Team</button>
|
||||
<button type="button" data-user-tab="integration" class="btn flex-1 owner-only hidden">Integrationen</button>
|
||||
</div>
|
||||
|
||||
<section data-user-panel="profile" class="section-card">
|
||||
<h4>Profil</h4>
|
||||
<form id="profileForm" class="space-y-3">
|
||||
<label class="block text-sm text-slate-600">Name
|
||||
<input type="text" id="profile_name" name="name" class="input mt-1" required>
|
||||
</label>
|
||||
<label class="block text-sm text-slate-600">E-Mail
|
||||
<input type="email" id="profile_email" name="email" class="input mt-1" required>
|
||||
</label>
|
||||
<div class="flex justify-end">
|
||||
<button type="submit" class="btn">Speichern</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section data-user-panel="security" class="section-card hidden">
|
||||
<h4>Passwort ändern</h4>
|
||||
<form id="passwordForm" class="space-y-3">
|
||||
<label class="block text-sm text-slate-600">Aktuelles Passwort
|
||||
<input type="password" name="current_password" class="input mt-1" required>
|
||||
</label>
|
||||
<label class="block text-sm text-slate-600">Neues Passwort (min. 8 Zeichen)
|
||||
<input type="password" name="new_password" class="input mt-1" required minlength="8">
|
||||
</label>
|
||||
<div class="flex justify-end">
|
||||
<button type="submit" class="btn">Aktualisieren</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section data-user-panel="team" class="section-card hidden owner-only">
|
||||
<div class="flex items-center justify-between mb-2">
|
||||
<h4>Team</h4>
|
||||
<button type="button" id="btn-user-add" class="btn">+ Nutzer</button>
|
||||
</div>
|
||||
<div class="overflow-auto">
|
||||
<table class="team-table" id="teamTable">
|
||||
<thead>
|
||||
<tr><th>Name</th><th>E-Mail</th><th>Rolle</th><th>Status</th><th class="text-right">Aktionen</th></tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<form id="userForm" class="space-y-3 mt-4 hidden">
|
||||
<input type="hidden" name="user_id">
|
||||
<label class="block text-sm text-slate-600">Name
|
||||
<input type="text" name="name" class="input mt-1" required>
|
||||
</label>
|
||||
<label class="block text-sm text-slate-600">E-Mail
|
||||
<input type="email" name="email" class="input mt-1" required>
|
||||
</label>
|
||||
<label class="block text-sm text-slate-600">Rolle
|
||||
<select name="role" class="input mt-1">
|
||||
<option value="owner">Owner</option>
|
||||
<option value="admin">Admin</option>
|
||||
<option value="editor">Editor</option>
|
||||
<option value="viewer">Viewer</option>
|
||||
</select>
|
||||
</label>
|
||||
<label class="inline-flex items-center gap-2 text-sm text-slate-600">
|
||||
<input type="checkbox" name="is_active" checked> Aktiv
|
||||
</label>
|
||||
<label class="inline-flex items-center gap-2 text-sm text-slate-600 reset-only hidden">
|
||||
<input type="checkbox" name="reset_password"> Passwort zurücksetzen
|
||||
</label>
|
||||
<div class="flex justify-end gap-2">
|
||||
<button type="button" id="userFormCancel" class="btn">Abbrechen</button>
|
||||
<button type="submit" class="btn">Speichern</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section data-user-panel="integration" class="section-card hidden owner-only">
|
||||
<h4>Integrationen & Tokens</h4>
|
||||
<form id="settingsForm" class="space-y-3">
|
||||
<label class="block text-sm text-slate-600">Bridge-URL
|
||||
<input type="url" name="bridge_url" class="input mt-1" placeholder="https://domain.tld/emailtemplate_bridge.php">
|
||||
</label>
|
||||
<div>
|
||||
<label class="block text-sm text-slate-600">Bridge Token</label>
|
||||
<div class="flex gap-2 mt-1">
|
||||
<input type="text" name="bridge_token" class="input" readonly>
|
||||
<button type="button" class="btn" data-rotate="bridge">Neu erstellen</button>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm text-slate-600">Sender Token</label>
|
||||
<div class="flex gap-2 mt-1">
|
||||
<input type="text" name="sender_token" class="input" readonly>
|
||||
<button type="button" class="btn" data-rotate="sender">Neu erstellen</button>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm text-slate-600">Externer API-Token</label>
|
||||
<div class="flex gap-2 mt-1">
|
||||
<input type="text" name="external_api_token" class="input" readonly>
|
||||
<button type="button" class="btn" data-rotate="external">Neu erstellen</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-between gap-2 flex-wrap pt-2">
|
||||
<div class="flex gap-2">
|
||||
<button type="button" class="btn" data-download="bridge">Bridge-Datei</button>
|
||||
<button type="button" class="btn" data-download="sender">Sender-Datei</button>
|
||||
</div>
|
||||
<button type="submit" class="btn ms-auto">Einstellungen speichern</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
<div id="toast-root"></div>
|
||||
|
||||
<script src="assets/js/toast.js?v=<?= htmlspecialchars($assetVersion, ENT_QUOTES) ?>"></script>
|
||||
<script type="module" src="assets/js/app.js?v=<?= htmlspecialchars($assetVersion, ENT_QUOTES) ?>"></script>
|
||||
<script type="module" src="assets/js/ui-user.js?v=<?= htmlspecialchars($assetVersion, ENT_QUOTES) ?>"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user