Gestion des utilisateurs

This commit is contained in:
2026-06-15 07:32:36 +02:00
parent 414c8dbb74
commit f3c5387a92
11 changed files with 1163 additions and 128 deletions
+20 -1
View File
@@ -48,7 +48,7 @@ const router = Router();
/** Liste tous les utilisateurs */
router.get('/users', (req, res) => {
const users = db.prepare(`
SELECT id, email, display_name, role, email_verified, totp_enabled, created_at
SELECT id, email, display_name, role, email_verified, totp_enabled, status, created_at
FROM users
ORDER BY id ASC
`).all();
@@ -96,6 +96,25 @@ router.post('/users', (req, res, next) => {
} catch (e) { next(e); }
});
/** Modifie le statut d'un utilisateur (active / deactivated / locked) */
const PatchStatusSchema = z.object({
status: z.enum(['active', 'deactivated', 'locked']),
});
router.patch('/users/:id/status', (req, res, next) => {
try {
const { status } = PatchStatusSchema.parse(req.body);
const targetId = Number(req.params.id);
if (targetId === req.user.id) {
throw new HttpError(400, 'Vous ne pouvez pas modifier votre propre statut');
}
const r = db.prepare("UPDATE users SET status=?, updated_at=datetime('now') WHERE id=?")
.run(status, targetId);
if (r.changes === 0) throw new HttpError(404, 'Utilisateur introuvable');
res.json({ id: targetId, status });
} catch (e) { next(e); }
});
/** Modifie le rôle d'un utilisateur */
const PatchRoleSchema = z.object({
role: z.enum(['user', 'admin']),