diff --git a/API/src/database/Database.ts b/API/src/database/Database.ts index 7926aba7f6c7893db68bbd01742eda479e3ef2a7..aed639afc9c9892afe79a72f9b36029316f313f7 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 Binary files a/API/src/database/database.sqlite and b/API/src/database/database.sqlite differ diff --git a/API/src/database/migrations/User_init.ts b/API/src/database/migrations/User_init.ts index 034bc4be298ea17965ac2d275c544cb96628a964..50e4535bebf954f624d319c947700cd7df445c0b 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 d5d8b06cbf06de3bb377990502a7182867024e8a..6eeead2f8b218c70b4a4cb0a092cb852553496a3 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 12931375642941485c8a2803bd54165fea4dff77..9ea44d2308b93d21e6fdbcc01423b877266a6a8c 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 35b31562a2c71ab552a9f0141d01782e3c707a86..e47fd002f222421a56a9740f66c10a1fcb54b8a6 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 d3207a81ce9068634cc6f7888feeb627f67dc015..a23f51f2719959b058bba459ce84f5d17ef87006 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;