From 3626f92d2d6c7bea44c17cbcfc3c9bdc27f6496a Mon Sep 17 00:00:00 2001 From: Alessandre Laguierce Date: Sat, 26 Oct 2024 17:20:56 +0200 Subject: [PATCH] fix: good authentication process --- back-end/src/controllers/auth.controller.ts | 46 +----------------- back-end/src/controllers/member.controller.ts | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+), 45 deletions(-) create mode 100644 back-end/src/controllers/member.controller.ts diff --git a/back-end/src/controllers/auth.controller.ts b/back-end/src/controllers/auth.controller.ts index bb23c58..0bb776b 100644 --- a/back-end/src/controllers/auth.controller.ts +++ b/back-end/src/controllers/auth.controller.ts @@ -3,52 +3,9 @@ import bcrypt from 'bcrypt'; import { SignJWT } from 'jose'; import { JWT_ISSUER, JWT_AUDIENCE, JWT_SECRET, JWT_EXPIRATION, JWT_SECRET_KEY } from '../config/auth.config'; import { Member, User } from '../types/member'; -import { new_client } from '../db/db_client'; +import { getMember, createMember, userAdapter } from './member.controller'; import { Either, eitherLeft, eitherRight } from '../utils/utils'; -const defaultUser = { id_member: -1, name: "unknown" }; -const defaultMember = { id_member: -1, name: "unknown", password: "none" }; - -const getMember = async (idOrName: number | string): Promise> => { - const client = new_client(); - await client.connect(); - let res; - if (typeof idOrName !== 'number') { - res = await client.query("SELECT * FROM membres WHERE nom_membre=$1;", [`${idOrName}`]); - } else { - res = await client.query("SELECT * FROM membres WHERE id_membre=$1;", [idOrName]); - } - if (res.rows.length === 0) { - await client.end(); - return eitherRight("Does not exist."); - } - const member: Member = { id_member: res.rows[0].id_member, name: res.rows[0].nom_membre, password: res.rows[0].mdp_membre }; - await client.end(); - - return eitherLeft(member); -} - -const createMember = async (name: string, passwd: string): Promise> => { - const gettingMember = await getMember(name); - if (!gettingMember.hasRight) { - return eitherRight("Already in database."); - } - const client = new_client(); - await client.connect(); - const res = await client.query("INSERT INTO membres (nom_membre, mdp_membre) VALUES ($1, $2) RETURNING *;", [`${name}`, `${passwd}`]); - if (res.rows.length === 0) { - await client.end(); - return eitherRight("Something went wrong"); - } - const member: Member = { id_member: res.rows[0].id_member, name: res.rows[0].nom_membre, password: res.rows[0].mdp_membre }; - await client.end(); - return eitherLeft(member); -} - -function userAdapter(member: Member): User { - return { id_member: member.id_member, name: member.name }; -} - const register = (req: Request, res: Response) => { if (!req || !req.body || !req.body.name || !req.body.password) { res.status(400).send(); @@ -65,7 +22,6 @@ const register = (req: Request, res: Response) => { res.status(500).send(); return; } - const member: Either = await createMember(name, hash); if (member.hasRight) { res.status(401).send(member.right); diff --git a/back-end/src/controllers/member.controller.ts b/back-end/src/controllers/member.controller.ts new file mode 100644 index 0000000..5b89c25 --- /dev/null +++ b/back-end/src/controllers/member.controller.ts @@ -0,0 +1,48 @@ +import { new_client } from '../db/db_client'; +import { Member, User } from '../types/member'; +import { Either, eitherLeft, eitherRight } from '../utils/utils'; + +const getDefaultUser = (): User => ({ id_member: -1, name: "unknown" }); +const getDefaultMember = (): Member => ({ id_member: -1, name: "unknown", password: "none" }); + +const getMember = async (idOrName: number | string): Promise> => { + const client = new_client(); + await client.connect(); + let res; + if (typeof idOrName !== 'number') { + res = await client.query("SELECT * FROM membres WHERE nom_membre=$1;", [`${idOrName}`]); + } else { + res = await client.query("SELECT * FROM membres WHERE id_membre=$1;", [idOrName]); + } + if (res.rows.length === 0) { + await client.end(); + return eitherRight("Does not exist."); + } + const member: Member = { id_member: res.rows[0].id_membre, name: res.rows[0].nom_membre, password: res.rows[0].mdp_membre }; + await client.end(); + + return eitherLeft(member); +} + +const createMember = async (name: string, passwd: string): Promise> => { + const gettingMember = await getMember(name); + if (!gettingMember.hasRight) { + return eitherRight("Already in database."); + } + const client = new_client(); + await client.connect(); + const res = await client.query("INSERT INTO membres (nom_membre, mdp_membre) VALUES ($1, $2) RETURNING *;", [`${name}`, `${passwd}`]); + if (res.rows.length === 0) { + await client.end(); + return eitherRight("Something went wrong"); + } + const member: Member = { id_member: res.rows[0].id_membre, name: res.rows[0].nom_membre, password: res.rows[0].mdp_membre }; + await client.end(); + return eitherLeft(member); +} + +function userAdapter(member: Member): User { + return { id_member: member.id_member, name: member.name }; +} + +export { getDefaultUser, getDefaultMember, getMember, createMember, userAdapter };