From 5c03632ff4a1f491fc41faf1c85d1d8638bfea32 Mon Sep 17 00:00:00 2001 From: "hugo.pradier2" Date: Wed, 29 May 2024 14:34:39 +0200 Subject: [PATCH] verif si login pas deja present avant ajout user --- src/database.ts | 21 ++++++++++++++++++--- src/server.ts | 10 ++++++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/database.ts b/src/database.ts index 3aa61be..989483f 100644 --- a/src/database.ts +++ b/src/database.ts @@ -4,6 +4,11 @@ import sqlite3 from "sqlite3"; const dbDirectory = "./src/db"; const dbFilePath = `${dbDirectory}/database.db`; +export type error = { + errno: number; + code: string; +}; + /* Fonction pour exécuter une requête sur la base de données */ /* Fonction pour exécuter une requête de modification de la base de données (INSERT, UPDATE, DELETE) */ @@ -112,15 +117,25 @@ export function createRegisteredUserTable(db: sqlite3.Database): Promise { } /* Insérer un utilisateur dans la table registered_user */ -export function insertUser( +export async function insertUser( db: sqlite3.Database, login: string, password: string, permissions: number, -) { +): Promise { const insertUserQuery = `INSERT INTO registered_user (login, password, permissions) VALUES (?, ?, ?)`; - return runDB(db, insertUserQuery, [login, password, permissions]); + try { + await runDB(db, insertUserQuery, [login, password, permissions]); + return true; + } catch (e) { + const error = e as error; + if (error.code === "SQLITE_CONSTRAINT") { + return false; + } else { + throw e; + } + } } /* Modifier le login d'un utilisateur dans la table registered_user */ diff --git a/src/server.ts b/src/server.ts index f859d62..e4557de 100644 --- a/src/server.ts +++ b/src/server.ts @@ -41,7 +41,6 @@ await fastify.register(cors, { origin: process.env.ALLOW_ORIGIN || "*", }); fastify.register(websocket); - fastify.register(async function(fastify: Fastify) { fastify.get( "/live/:roomId", @@ -180,9 +179,12 @@ fastify.post( }, async (request, reply) => { const { login, password, permissions } = request.body; - db.insertUser(database, login, password, permissions); - reply.send({ success: true }); - }, + if (!(await db.insertUser(database, login, password, permissions))) { + reply.send({ success: false }); + } else { + reply.send({ success: true }); + } + } ); /* Route pour mettre à jour le login d'un utilisateur */