Erweitere die Verwaltung von Identitäten: Füge Unterstützung für URL-Felder hinzu, aktualisiere die Benutzeroberfläche zur Bearbeitung von Feldern und verbessere die Darstellung in Tabellenform.

This commit is contained in:
Troy Grunt
2026-02-03 14:05:26 +01:00
parent 79f49441f7
commit 963d29fd4e
2 changed files with 106 additions and 20 deletions

View File

@@ -9,7 +9,7 @@ CREATE TABLE identities (
CREATE TABLE identity_fields (
id INT AUTO_INCREMENT PRIMARY KEY,
identity_id INT NOT NULL,
typ ENUM('single','multi','file') NULL,
typ ENUM('single','multi','file','url') NULL,
field_key VARCHAR(50) NOT NULL,
field_value TEXT NOT NULL,
FOREIGN KEY (identity_id)

View File

@@ -234,6 +234,7 @@ if ($action === 'identity_edit') {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Identität umbenennen
if (isset($_POST['rename'])) {
$sql->set(
"UPDATE identities SET name = ? WHERE id = ?",
@@ -242,14 +243,46 @@ if ($action === 'identity_edit') {
);
}
// Neues Feld
if (isset($_POST['add_field'])) {
$sql->set(
"INSERT INTO identity_fields (identity_id, field_key, field_value)
VALUES (?, ?, ?)",
"iss",
[$id, trim($_POST['key']), trim($_POST['value'])]
"INSERT INTO identity_fields (identity_id, field_key, field_value, typ)
VALUES (?, ?, ?, ?)",
"isss",
[
$id,
trim($_POST['key']),
trim($_POST['value']),
$_POST['typ'] ?? 'single'
]
);
}
// Feld aktualisieren
if (isset($_POST['update_field'])) {
$sql->set(
"UPDATE identity_fields
SET field_key = ?, field_value = ?, typ = ?
WHERE id = ? AND identity_id = ?",
"sssii",
[
trim($_POST['key']),
trim($_POST['value']),
$_POST['typ'] ?? 'single',
(int)$_POST['field_id'],
$id
]
);
}
// Feld löschen
if (isset($_POST['delete_field'])) {
$sql->set(
"DELETE FROM identity_fields
WHERE id = ? AND identity_id = ?",
"ii",
[(int)$_POST['field_id'], $id]
);
//TODO typ
}
header("Location: admin.php?action=identity_edit&id=$id");
@@ -257,14 +290,19 @@ if ($action === 'identity_edit') {
}
$fields = $sql->get(
"SELECT * FROM identity_fields WHERE identity_id = ?",
"SELECT * FROM identity_fields WHERE identity_id = ? ORDER BY id ASC",
"i",
[$id]
);
?>
<!doctype html>
<html><head><meta charset="utf-8"><title>Identität bearbeiten</title></head>
<html>
<head>
<meta charset="utf-8">
<title>Identität bearbeiten</title>
</head>
<body>
<h1><?= htmlspecialchars($identity['name']) ?></h1>
<form method="post">
@@ -273,23 +311,72 @@ if ($action === 'identity_edit') {
</form>
<h2>Felder</h2>
<ul>
<?php foreach ($fields as $f): ?>
<li>
<strong><?= htmlspecialchars($f['field_key']) ?>:</strong>
<?= htmlspecialchars($f['field_value']) ?>
</li>
<?php endforeach; ?>
</ul>
<table border="1" cellpadding="6" cellspacing="0">
<thead>
<tr>
<th>Key</th>
<th>Wert</th>
<th>Typ</th>
<th>Aktion</th>
</tr>
</thead>
<tbody>
<?php foreach ($fields as $f): ?>
<tr>
<form method="post">
<td>
<input name="key"
value="<?= htmlspecialchars($f['field_key']) ?>">
</td>
<td>
<?php if ($f['typ'] === 'multi'): ?>
<textarea name="value" rows="3" style="width:100%"><?= htmlspecialchars($f['field_value']) ?></textarea>
<?php else: ?>
<input name="value"
value="<?= htmlspecialchars($f['field_value']) ?>"
style="width:100%">
<?php endif; ?>
</td>
<td>
<select name="typ">
<option value="single" <?= $f['typ']==='single'?'selected':'' ?>>einzeilig</option>
<option value="multi" <?= $f['typ']==='multi'?'selected':'' ?>>mehrzeilig</option>
<option value="file" <?= $f['typ']==='file'?'selected':'' ?>>Datei</option>
<option value="url" <?= $f['typ']==='url'?'selected':'' ?>>URL</option>
</select>
</td>
<td>
<input type="hidden" name="field_id" value="<?= (int)$f['id'] ?>">
<button name="update_field">💾</button>
<button name="delete_field"
onclick="return confirm('Feld wirklich löschen?')">🗑</button>
</td>
</form>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<h3>Neues Feld</h3>
<form method="post">
<input name="key" placeholder="Feldname" required>
<input name="value" placeholder="Wert" required>
<input name="value" placeholder="Wert">
<select name="typ">
<option value="single">einzeilig</option>
<option value="multi">mehrzeilig</option>
<option value="file">Datei</option>
<option value="url">URL</option>
</select>
<button name="add_field"> Feld hinzufügen</button>
</form>
<p><a href="admin.php">← zurück</a></p>
</body></html>
</body>
</html>
<?php
exit;
}
@@ -427,8 +514,6 @@ $identities = $sql->get("SELECT * FROM identities ORDER BY id DESC");
<h1>Admin Dashboard</h1>
<p><a href="admin.php?action=identity_create"> Identität anlegen</a></p>
<h2>Alle UUIDs</h2>
<?php if (!empty($tokens)): ?>
<table border="1" cellpadding="5" cellspacing="0">
@@ -458,6 +543,7 @@ $identities = $sql->get("SELECT * FROM identities ORDER BY id DESC");
<hr>
<h2>Identitäten</h2>
<p><a href="admin.php?action=identity_create"> Identität anlegen</a></p>
<ul>
<?php foreach ($identities as $i): ?>
<li>