diff --git a/.manus/db/db-query-1763737221512.json b/.manus/db/db-query-1763737221512.json new file mode 100644 index 0000000..a01382f --- /dev/null +++ b/.manus/db/db-query-1763737221512.json @@ -0,0 +1,9 @@ +{ + "query": "ALTER TABLE users ADD COLUMN username VARCHAR(100) AFTER email", + "command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute ALTER TABLE users ADD COLUMN username VARCHAR(100) AFTER email", + "rows": [], + "messages": [], + "stdout": "", + "stderr": "", + "execution_time_ms": 507 +} \ No newline at end of file diff --git a/.manus/db/db-query-1763737229123.json b/.manus/db/db-query-1763737229123.json new file mode 100644 index 0000000..6f096aa --- /dev/null +++ b/.manus/db/db-query-1763737229123.json @@ -0,0 +1,9 @@ +{ + "query": "ALTER TABLE users ADD UNIQUE KEY unique_username (username)", + "command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute ALTER TABLE users ADD UNIQUE KEY unique_username (username)", + "rows": [], + "messages": [], + "stdout": "", + "stderr": "", + "execution_time_ms": 575 +} \ No newline at end of file diff --git a/.manus/db/db-query-error-1763737207540.json b/.manus/db/db-query-error-1763737207540.json new file mode 100644 index 0000000..efdb146 --- /dev/null +++ b/.manus/db/db-query-error-1763737207540.json @@ -0,0 +1,8 @@ +{ + "query": "ALTER TABLE users ADD COLUMN username VARCHAR(100) UNIQUE AFTER email", + "command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute ALTER TABLE users ADD COLUMN username VARCHAR(100) UNIQUE AFTER email", + "returncode": 1, + "logs": [ + "ERROR 8200 (HY000) at line 1: unsupported add column 'username' constraint UNIQUE KEY when altering '7PAT67UmWoxv8vwp8Bbcv6.users'" + ] +} \ No newline at end of file diff --git a/client/src/pages/AdminUsers.tsx b/client/src/pages/AdminUsers.tsx index 835b53f..fb0b1a0 100644 --- a/client/src/pages/AdminUsers.tsx +++ b/client/src/pages/AdminUsers.tsx @@ -44,11 +44,15 @@ export default function AdminUsers() { openId: "", name: "", email: "", + username: "", + password: "", role: "user" as "user" | "admin", }); const [editForm, setEditForm] = useState({ name: "", email: "", + username: "", + password: "", role: "user" as "user" | "admin", }); @@ -63,6 +67,8 @@ export default function AdminUsers() { openId: "", name: "", email: "", + username: "", + password: "", role: "user", }); }, @@ -127,6 +133,8 @@ export default function AdminUsers() { openId: createForm.openId, name: createForm.name || undefined, email: createForm.email || undefined, + username: createForm.username || undefined, + password: createForm.password || undefined, role: createForm.role, isActive: true, }); @@ -137,6 +145,8 @@ export default function AdminUsers() { setEditForm({ name: user.name || "", email: user.email || "", + username: user.username || "", + password: "", // Toujours vide pour la sécurité role: user.role, }); setEditDialogOpen(true); @@ -145,12 +155,23 @@ export default function AdminUsers() { const handleSaveEdit = () => { if (!selectedUser) return; - updateMutation.mutate({ + // Ne pas envoyer username et password s'ils sont vides + const updateData: any = { id: selectedUser.id, name: editForm.name || undefined, email: editForm.email || undefined, role: editForm.role, - }); + }; + + if (editForm.username) { + updateData.username = editForm.username; + } + + if (editForm.password) { + updateData.password = editForm.password; + } + + updateMutation.mutate(updateData); }; const handleToggleStatus = (user: any) => { @@ -281,6 +302,7 @@ export default function AdminUsers() { ID Nom Email + Identifiant Rôle Statut Dernière connexion @@ -291,7 +313,7 @@ export default function AdminUsers() { {filteredUsers.length === 0 ? ( - + Aucun utilisateur trouvé @@ -301,6 +323,7 @@ export default function AdminUsers() { {user.id} {user.name || "N/A"} {user.email || "N/A"} + {user.username || "N/A"} {user.role === "admin" ? "Administrateur" : "Utilisateur"} @@ -403,6 +426,27 @@ export default function AdminUsers() { /> +
+ + setCreateForm({ ...createForm, username: e.target.value })} + placeholder="Identifiant unique pour la connexion" + /> +
+ +
+ + setCreateForm({ ...createForm, password: e.target.value })} + placeholder="Minimum 6 caractères" + /> +
+
setEditForm({ ...editForm, username: e.target.value })} + placeholder="Identifiant unique pour la connexion" + /> +

Laissez vide pour ne pas modifier

+
+ +
+ + setEditForm({ ...editForm, password: e.target.value })} + placeholder="Laissez vide pour ne pas modifier" + /> +

Minimum 6 caractères si modifié

+
+