From a1046405067a871078f43ea5325c2a6805b8a6e1 Mon Sep 17 00:00:00 2001 From: "narindra.rajohnso" <narindra-hasimanjaka-david.rajohnson@etu.hesge.ch> Date: Tue, 16 May 2023 02:58:29 +0200 Subject: [PATCH] feat: add check for connect users --- API/src/database/Database.ts | 21 +++++++++++++++++++-- API/src/database/database.sqlite | Bin 20480 -> 20480 bytes API/src/database/migrations/User_init.ts | 12 ++++++++++++ API/src/database/models/User.ts | 3 +++ API/src/routes/middleware.ts | 14 ++++++++++---- API/src/routes/router-admin.ts | 2 +- API/src/routes/router-guest.ts | 12 +++++++++++- 7 files changed, 56 insertions(+), 8 deletions(-) diff --git a/API/src/database/Database.ts b/API/src/database/Database.ts index 7926aba..aed639a 100644 --- a/API/src/database/Database.ts +++ b/API/src/database/Database.ts @@ -34,7 +34,7 @@ export class Database{ return Database._instance; } - static async createAccount(username: string, password: string, accountType: userType): Promise<[number, string]> { + static async createAccount(username: string, password: string, firstname: string, lastname: string, email:string, accountType: userType): Promise<[number, string]> { let result: [number, string]; const user = await User.findOne({where: {username}}); @@ -46,6 +46,9 @@ export class Database{ await User.create({ username: username, password: password, + lastname: lastname, + firstname: firstname, + email: email, type: accountType === userType.Gamer ? 'user' : 'admin' }).then(user => { console.log(`Utilisateur "${user.username}" ajouté avec succès !`); @@ -87,6 +90,17 @@ export class Database{ } + static async checkUserPassword(username: string, password: string): Promise<boolean>{ + const user= await User.findOne({ where: { username } }); + if(user){ + return password==user.dataValues.password + }else{ + return false + } + + + } + static async getAllUsers(): Promise<User[]>{ return await User.findAll(); @@ -104,10 +118,13 @@ export class Database{ return await Question.destroy({ where: { id: id } }); } - static async updateUserAccount(username: string, password?:string, typeUser?: userType){ + static async updateUserAccount(username: string, password?:string, firstname?: string, lastname?: string, email?: string, typeUser?: userType){ let updatedData: User=new User(); updatedData.username=username; if(password!==undefined) updatedData.password = password; + if(firstname!==undefined) updatedData.firstname = firstname; + if(lastname!==undefined) updatedData.lastname = lastname; + if(email!==undefined) updatedData.email = email; if(typeUser!==undefined) updatedData.type = typeUser===userType.Gamer?'user':'admin'; console.log(`updatedDate=${updatedData}`) diff --git a/API/src/database/database.sqlite b/API/src/database/database.sqlite index 62529667cf8732a4e82d5028fddb2338c4399ca7..5a843bb909e96719d7fe7976748a1bcf9692a046 100644 GIT binary patch delta 473 zcmZozz}T>Wae}m<HUk3#D+2;>P1G?K)n?F3d&$eYi-Cp5fPpuIuaEyMkHN;qJ>1Mq zrtF*d@|rSE&fpDV;s3#KW%54W6GCk4Y+w_bY*^XF#l;z0!YBXXE9XedEGjO^OU#`d zz$eX~lL%+CrsgJQ=1dOclbT%2AI-=%`8>Z7Hv<C$6TcDze;>cnW<dop{`xE?PH{zH zQDsq2&y?b{;*`Sj)S{BA(#-sVq{QOllr%7QNH0p)OG+y(PAxJrFf!IPFx53QQ!p^F zGBvd_u+%d)Gf>brFt9Q(z%N_C$SJBWEU7B)>6wz4R+5~WoSB_kTvD1>l3HAnl2}%h zn3bOa<~WpOmXzuxXC$WNX6C^SHB~S&wlX%fGBDONGPFRq600m1*u(D__<!)f+brnt zfM11yfs<LB5$sncc4kpdkV|+$;VJ+k7??pCHVYVh;b&tIU|`_?2-Y<*fQyHpv9L6? LxFj<_ub2w}>zsEr delta 602 zcmZozz}T>Wae}m<A_D^hD+2;BP1G?KRb<dhd&$fHgMo!NgMsf8|5@H$ycwGX1-|f1 z&fpDVX)<MIpS+Lv#N=2${>j|Dv0RN2jO^m#;*8DwlV|XiPcG(<W@MUtp5KU{?;8U% z-)si{rF^sb1Njzi78K~_tB+)2lT;P=^h`|2&CD}QOixWONKGxsPtQsPix?Rg8S5ID z>KYg+7#docm|K||>scBbDQFuQSQ!`~$r>418Jbub8R{7u7(iti7#O0Z#XUXqQp?RP zvW@eKQq%L$4XrmavNEu=GBDLMFgJzjLo?Ob%E&;^#M}@n%fP@8r7RxA%qA`^ifVRg zacU8&Ui>DTSX!CX8|oQbm_v<@WMmW96!r8hNi8lhDo!a*ODs-FODj%EODRT}ZK7*r z0SXHPLn~u5J!7=6z$MGYz`(%F|A>MA4gVwl@BBAlalBbl;V{1`7sy6a7EWeyMsQ#; zb1_RYf`iJCiGx|36C`cK%iqbs#OKVw=gfDACx|C#vw*=Del|w_j|}`DHw!vE=ARhA V!q3adEYDb2np#|vnV(n81ptW5kK+IU diff --git a/API/src/database/migrations/User_init.ts b/API/src/database/migrations/User_init.ts index 034bc4b..50e4535 100644 --- a/API/src/database/migrations/User_init.ts +++ b/API/src/database/migrations/User_init.ts @@ -13,6 +13,18 @@ export function initUser(sequelize: Sequelize){ type: DataTypes.STRING, allowNull: false }, + firstname: { + type: DataTypes.STRING, + allowNull: false + }, + lastname: { + type: DataTypes.STRING, + allowNull: false + }, + email: { + type: DataTypes.STRING, + allowNull: false + }, type: { type: DataTypes.STRING, allowNull: false diff --git a/API/src/database/models/User.ts b/API/src/database/models/User.ts index d5d8b06..6eeead2 100644 --- a/API/src/database/models/User.ts +++ b/API/src/database/models/User.ts @@ -6,6 +6,9 @@ export enum userType{ } export class User extends Model { public id!: number; + public firstname!: string; + public lastname!: string; + public email!: string; public username!: string; public password!: string; public type!: string; diff --git a/API/src/routes/middleware.ts b/API/src/routes/middleware.ts index 1293137..9ea44d2 100644 --- a/API/src/routes/middleware.ts +++ b/API/src/routes/middleware.ts @@ -34,7 +34,7 @@ export async function checkExistingUser(req: express.Request, res: express.Respo console.log(`type = ${typeAccount}`); console.log({message: typeAccount === 'user' ? `"${id}" => user` : `"${id}" => admin`}); }else{ - res.status(StatusCodes.OK).json({message: 'Username not exist'}); + res.status(StatusCodes.NOT_FOUND).json({message: 'Username not exist'}); } next(); @@ -74,16 +74,22 @@ export function checkUsernameField(req: express.Request, res: express.Response, export function createAccountCheck(req: express.Request, res: express.Response){ const data=req.body - Database.createAccount(data.username, data.password, data.accountType) + Database.createAccount(data.username, data.password, data.firstname, data.lastname, data.email, data.accountType) .then(result => { if(result[0] !== -1){ if(result[1] === "User") res.status(StatusCodes.OK).json({new_user: { username: data.username, - password: data.password + password: data.password, + lastname: data.lastname, + firstname: data.firstname, + email: data.email }}); if(result[1] === "Admin") res.status(StatusCodes.OK).json({new_admin: { username: data.username, - password: data.password + password: data.password, + lastname: data.lastname, + firstname: data.firstname, + email: data.email }}); }else{ if(result[1] === "Exist"){ diff --git a/API/src/routes/router-admin.ts b/API/src/routes/router-admin.ts index 35b3156..e47fd00 100644 --- a/API/src/routes/router-admin.ts +++ b/API/src/routes/router-admin.ts @@ -86,7 +86,7 @@ router.put('/:admin/update-user-account', checkExistingUser, checkUsernameField, return; } try{ - const nbUserUpdated=await Database.updateUserAccount(data.username, data.password, data.accountType); + const nbUserUpdated=await Database.updateUserAccount(data.username, data.password, data.firstname, data.lastname, data.email, data.accountType); if(nbUserUpdated){ res.status(StatusCodes.OK).json({ message: `User ${data.username} updated` diff --git a/API/src/routes/router-guest.ts b/API/src/routes/router-guest.ts index d3207a8..a23f51f 100644 --- a/API/src/routes/router-guest.ts +++ b/API/src/routes/router-guest.ts @@ -1,6 +1,7 @@ import express from 'express'; import { StatusCodes } from 'http-status-codes'; -import {checkUserFields, createAccountCheck} from './middleware' +import {checkExistingUser, checkUserFields, createAccountCheck} from './middleware' +import {Database} from "../database/Database"; @@ -18,5 +19,14 @@ router.post('/create-account', checkUserFields, (req: express.Request, res: expr createAccountCheck(req, res); }); +router.post('/:username', checkExistingUser, async (req: express.Request, res: express.Response) => { + const data = req.body + if (await Database.checkUserPassword(req.params.username, data.password)) { + res.status(StatusCodes.OK).json({message: "User can be authentified"}) + }else{ + res.status(StatusCodes.BAD_REQUEST).json({message: "User cannot be authentified"}) + } +}); + export default router; -- GitLab