From d6c3695038a9fe9a9359ba708990fee6c5a0704c Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 10:06:25 +0100 Subject: [PATCH 01/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'api-rest/ind?= =?UTF-8?q?ex.php'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-rest/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-rest/index.php b/api-rest/index.php index b18d209..a58696e 100644 --- a/api-rest/index.php +++ b/api-rest/index.php @@ -12,7 +12,7 @@ exit; */ - //require_once("initBdd.php"); + require_once("initBdd.php"); From 50958eadc8553dac2d7ee6a288386ba0303f774b Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 13:19:30 +0100 Subject: [PATCH 02/40] ajout pour test api --- api-rest/initBdd.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/api-rest/initBdd.php b/api-rest/initBdd.php index 25f3add..82b2dde 100644 --- a/api-rest/initBdd.php +++ b/api-rest/initBdd.php @@ -205,6 +205,14 @@ $conn->query("INSERT INTO `T_E_GAME_GAM` (`PK_ID`, `GAM_NAME`, `GAM_IMAGE`, `GAM $conn->query("INSERT INTO `T_S_USER_USR` (`PK_ID`, `USR_USERNAME`, `USR_PASSWORD`, `USR_NATIONALITY`, `USR_SEX`, `USR_DATE_OF_BIRTH`, `USR_CURRENT_NB_COINS`, `USR_TOTAL_NB_COINS`, `USR_NB_GAMES_PLAYED`, `FK_CURRENT_SKIN`) VALUES (1, 'to', 't', 'Anglais(e)', 'M', '2003-07-01', 105, 230, 12, 2);"); +$conn->query("INSERT INTO `T_S_USER_USR` (`PK_ID`, `USR_USERNAME`, `USR_PASSWORD`, `USR_NATIONALITY`, `USR_SEX`, `USR_DATE_OF_BIRTH`, `USR_CURRENT_NB_COINS`, `USR_TOTAL_NB_COINS`, `USR_NB_GAMES_PLAYED`, `FK_CURRENT_SKIN`) VALUES +(1, 'to', 't', 'Anglais(e)', 'M', '2003-07-01', 105, 230, 12, 1);"); + +$conn->query("INSERT INTO `T_J_OWN_SKIN_OWN` (`FK_USER`, `FK_SKIN`) VALUES +(1, 1) +(1, 2);"); + + ?> \ No newline at end of file From d26179eed2992863634825f7f3e9c1d44369f774 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 13:22:12 +0100 Subject: [PATCH 03/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'api-rest/gat?= =?UTF-8?q?eways/userGateway.php'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-rest/gateways/userGateway.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-rest/gateways/userGateway.php b/api-rest/gateways/userGateway.php index 9366856..04fc029 100644 --- a/api-rest/gateways/userGateway.php +++ b/api-rest/gateways/userGateway.php @@ -59,7 +59,7 @@ class UserGateway{ $tabSkin=null; $skinsOfUserQuery="SELECT s.* FROM T_H_SKIN_SKI s, T_J_OWN_SKIN_OWN o - WHERE o.FK_USER=:id AND S.PK_ID=o.FK_SKIN"; + WHERE o.FK_USER=:id AND s.PK_ID=o.FK_SKIN"; $argIdUser=array('id'=>array($id,PDO::PARAM_INT)); $this->connection->execQuery($skinsOfUserQuery,$argIdUser); $resSkin=$this->connection->getRes(); From 9efd55bb811fd11e511b0cb534ca7416816fcb66 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 13:24:47 +0100 Subject: [PATCH 04/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'api-rest/gat?= =?UTF-8?q?eways/userGateway.php'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-rest/gateways/userGateway.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api-rest/gateways/userGateway.php b/api-rest/gateways/userGateway.php index 04fc029..27f8db2 100644 --- a/api-rest/gateways/userGateway.php +++ b/api-rest/gateways/userGateway.php @@ -64,8 +64,10 @@ class UserGateway{ $this->connection->execQuery($skinsOfUserQuery,$argIdUser); $resSkin=$this->connection->getRes(); foreach($resSkin as $row){ + echo $row['PK_ID']; $tabSkin[]= new Skin($row['PK_ID'], $row['SKI_NAME'], $row['SKI_IMAGE'],$row['SKI_PRICE']); } + echo json_encode($tabSkin); return $tabSkin; } From ce313aba90fba32df99f553277638d7df63a67b3 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 13:26:16 +0100 Subject: [PATCH 05/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'api-rest/gat?= =?UTF-8?q?eways/userGateway.php'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-rest/gateways/userGateway.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/api-rest/gateways/userGateway.php b/api-rest/gateways/userGateway.php index 27f8db2..04fc029 100644 --- a/api-rest/gateways/userGateway.php +++ b/api-rest/gateways/userGateway.php @@ -64,10 +64,8 @@ class UserGateway{ $this->connection->execQuery($skinsOfUserQuery,$argIdUser); $resSkin=$this->connection->getRes(); foreach($resSkin as $row){ - echo $row['PK_ID']; $tabSkin[]= new Skin($row['PK_ID'], $row['SKI_NAME'], $row['SKI_IMAGE'],$row['SKI_PRICE']); } - echo json_encode($tabSkin); return $tabSkin; } From e18aec54b2f48088b7ce6b736d1b1747b1a2a25e Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 13:30:49 +0100 Subject: [PATCH 06/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'api-rest/ini?= =?UTF-8?q?tBdd.php'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-rest/initBdd.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-rest/initBdd.php b/api-rest/initBdd.php index 82b2dde..901443e 100644 --- a/api-rest/initBdd.php +++ b/api-rest/initBdd.php @@ -209,7 +209,7 @@ $conn->query("INSERT INTO `T_S_USER_USR` (`PK_ID`, `USR_USERNAME`, `USR_PASSWORD (1, 'to', 't', 'Anglais(e)', 'M', '2003-07-01', 105, 230, 12, 1);"); $conn->query("INSERT INTO `T_J_OWN_SKIN_OWN` (`FK_USER`, `FK_SKIN`) VALUES -(1, 1) +(1, 1), (1, 2);"); From e95a26746c2136ef91d7ab50fdacdde7b61f852e Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 14:00:33 +0100 Subject: [PATCH 07/40] Correction bug bdd docker --- api-rest/initBdd.php | 5 +++-- bob_party/src/components/LobbyComponent.tsx | 2 +- bob_party/src/components/UserPreview.tsx | 1 - bob_party/src/screens/GameChoice.tsx | 18 +++++++++++++++--- .../loaderConversationApi.ts | 2 +- .../src/services/gameService/loaderGameApi.ts | 6 +++--- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/api-rest/initBdd.php b/api-rest/initBdd.php index 901443e..bb58654 100644 --- a/api-rest/initBdd.php +++ b/api-rest/initBdd.php @@ -29,7 +29,8 @@ $conn->query("CREATE TABLE `T_H_CONVERSATION_COV` ( $conn->query("CREATE TRIGGER `before_delete_conversation` BEFORE DELETE ON `T_H_CONVERSATION_COV` FOR EACH ROW DELETE FROM T_H_MESSAGE_MSG WHERE PK_ID = (SELECT FK_MESSAGE FROM T_J_CONTAIN_MESSAGE_CMG -WHERE FK_CONVERSATION=OLD.PK_ID);"); +WHERE FK_CONVERSATION=OLD.PK_ID); +END;"); $conn->query("CREATE TABLE `T_H_MESSAGE_MSG` ( `PK_ID` int(11) NOT NULL, @@ -84,7 +85,7 @@ $conn->query("CREATE TABLE `T_S_USER_USR` ( );"); -$conn->query("CREATE TRIGGER `after_insert_user` AFTER INSERT ON `T_S_USER_USR` FOR EACH ROW INSERT INTO T_J_OWN_SKIN_OWN VALUES(NEW.PK_ID,1);"); +$conn->query("CREATE TRIGGER `after_insert_user` AFTER INSERT ON `T_S_USER_USR` FOR EACH ROW INSERT INTO T_J_OWN_SKIN_OWN VALUES(NEW.PK_ID,1); END;"); $conn->query("ALTER TABLE `T_E_GAME_GAM` diff --git a/bob_party/src/components/LobbyComponent.tsx b/bob_party/src/components/LobbyComponent.tsx index 11b8090..e13b738 100644 --- a/bob_party/src/components/LobbyComponent.tsx +++ b/bob_party/src/components/LobbyComponent.tsx @@ -66,7 +66,7 @@ FC<{nav: any}> = getUsers(); return( - Match ID : {MANAGER_MATCH.getCurrentMatch()?.getCode()} + Match ID : {useMatchStore().match?.getCode()} usr?.getUsername() || usr} diff --git a/bob_party/src/components/UserPreview.tsx b/bob_party/src/components/UserPreview.tsx index 3d6ed28..c2212da 100644 --- a/bob_party/src/components/UserPreview.tsx +++ b/bob_party/src/components/UserPreview.tsx @@ -19,7 +19,6 @@ export const UserPreview : FC<{user: User | null}> = ({user}) => { - console.log(user); if(user !== null){ return ( diff --git a/bob_party/src/screens/GameChoice.tsx b/bob_party/src/screens/GameChoice.tsx index 01cabf5..4ceed55 100644 --- a/bob_party/src/screens/GameChoice.tsx +++ b/bob_party/src/screens/GameChoice.tsx @@ -1,5 +1,5 @@ import { StatusBar } from 'expo-status-bar' -import {View, FlatList, Text} from 'react-native' +import {View, FlatList, Text, Alert} from 'react-native' import React, { useState } from 'react'; import { TopBar } from '../components/TopBar'; import { BotBar } from '../components/BotBar'; @@ -8,13 +8,25 @@ import { ScreenIndicator } from '../components/ScreenIndicator'; import { TextInput } from 'react-native-gesture-handler'; import stylesScreen from './style/screens.style' import styles from './style/GameChoice.style' -import { MANAGER_GAME } from '../../appManagers'; +import { MANAGER_GAME, MANAGER_MATCH, MANAGER_USER } from '../../appManagers'; import { GameList } from '../components/GameList'; function GameChoice(props: { navigation: any}) { const { navigation} = props const [matchId, setMatchId] = useState(''); + + async function joinMatch(id:string){ + const newId = parseInt(id); + const tmp=MANAGER_USER.getCurrentUser(); + if (tmp !== null){ + await MANAGER_MATCH.getsaverMatch().joinMatch(tmp, newId).then((res) =>{ + if (res===null){ + Alert.alert() + } + }); + } + } if(MANAGER_GAME.currentGameType === "solo" ){ return ( @@ -48,7 +60,7 @@ function GameChoice(props: { navigation: any}) { /> Rejoindre un match - setMatchId(val)} autoCapitalize='none' /> + setMatchId(val)} onSubmitEditing={(val) => {joinMatch(val)}} autoCapitalize='none' /> { let tab: Game[]=[]; - const url=this.baseUrl+"http://localhost:8888/api-rest/index.php/getGames"; + const url=this.baseUrl+"getGames"; await this.axios({ method: 'get', url: url, }) .then(function (response: any) { - if (response.data != null || response.data != undefined){ - + if (response.data != null && response.data != undefined){ response.data.forEach(game => { + switch(game.type){ case "GameSolo": let mapSolo = new Map(); From 64b6ac2c31f9fdab9caf73ab0af5977267e5f775 Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 14:04:30 +0100 Subject: [PATCH 08/40] =?UTF-8?q?De=20m=C3=AAme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-rest/initBdd.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/api-rest/initBdd.php b/api-rest/initBdd.php index bb58654..901443e 100644 --- a/api-rest/initBdd.php +++ b/api-rest/initBdd.php @@ -29,8 +29,7 @@ $conn->query("CREATE TABLE `T_H_CONVERSATION_COV` ( $conn->query("CREATE TRIGGER `before_delete_conversation` BEFORE DELETE ON `T_H_CONVERSATION_COV` FOR EACH ROW DELETE FROM T_H_MESSAGE_MSG WHERE PK_ID = (SELECT FK_MESSAGE FROM T_J_CONTAIN_MESSAGE_CMG -WHERE FK_CONVERSATION=OLD.PK_ID); -END;"); +WHERE FK_CONVERSATION=OLD.PK_ID);"); $conn->query("CREATE TABLE `T_H_MESSAGE_MSG` ( `PK_ID` int(11) NOT NULL, @@ -85,7 +84,7 @@ $conn->query("CREATE TABLE `T_S_USER_USR` ( );"); -$conn->query("CREATE TRIGGER `after_insert_user` AFTER INSERT ON `T_S_USER_USR` FOR EACH ROW INSERT INTO T_J_OWN_SKIN_OWN VALUES(NEW.PK_ID,1); END;"); +$conn->query("CREATE TRIGGER `after_insert_user` AFTER INSERT ON `T_S_USER_USR` FOR EACH ROW INSERT INTO T_J_OWN_SKIN_OWN VALUES(NEW.PK_ID,1);"); $conn->query("ALTER TABLE `T_E_GAME_GAM` From c74b54465a4e6c89b6ec076ba7bdd1ed4e625244 Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 14:07:41 +0100 Subject: [PATCH 09/40] Les triggers ne marchent pas... --- api-rest/initBdd.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api-rest/initBdd.php b/api-rest/initBdd.php index 901443e..2fb3b6f 100644 --- a/api-rest/initBdd.php +++ b/api-rest/initBdd.php @@ -29,7 +29,7 @@ $conn->query("CREATE TABLE `T_H_CONVERSATION_COV` ( $conn->query("CREATE TRIGGER `before_delete_conversation` BEFORE DELETE ON `T_H_CONVERSATION_COV` FOR EACH ROW DELETE FROM T_H_MESSAGE_MSG WHERE PK_ID = (SELECT FK_MESSAGE FROM T_J_CONTAIN_MESSAGE_CMG -WHERE FK_CONVERSATION=OLD.PK_ID);"); +WHERE FK_CONVERSATION=OLD.PK_ID); END;"); $conn->query("CREATE TABLE `T_H_MESSAGE_MSG` ( `PK_ID` int(11) NOT NULL, @@ -84,7 +84,7 @@ $conn->query("CREATE TABLE `T_S_USER_USR` ( );"); -$conn->query("CREATE TRIGGER `after_insert_user` AFTER INSERT ON `T_S_USER_USR` FOR EACH ROW INSERT INTO T_J_OWN_SKIN_OWN VALUES(NEW.PK_ID,1);"); +$conn->query("CREATE TRIGGER `after_insert_user` AFTER INSERT ON `T_S_USER_USR` FOR EACH ROW INSERT INTO T_J_OWN_SKIN_OWN VALUES(NEW.PK_ID,1); END;"); $conn->query("ALTER TABLE `T_E_GAME_GAM` From fad7dae4e04ca4e2ee41bf0cbd1d96a8b7a609de Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 14:13:34 +0100 Subject: [PATCH 10/40] Changement des triggers par modifs dans gateway --- api-rest/gateways/userGateway.php | 6 ++++++ api-rest/initBdd.php | 3 --- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/api-rest/gateways/userGateway.php b/api-rest/gateways/userGateway.php index 04fc029..1f71579 100644 --- a/api-rest/gateways/userGateway.php +++ b/api-rest/gateways/userGateway.php @@ -128,12 +128,18 @@ class UserGateway{ /// Returning TRUE if the user has been added succesfully, FALSE otherwise public function postUser(string $username, string $password, string $nationality, string $sex, string $dateOfBirth) { $insertUserQuery = "INSERT INTO T_S_USER_USR VALUES (NULL, :username, :password, :nationality, :sex, :dateOfBirth, 0, 0, 0, 1)"; + $getLastIdQuery = "SELECT max(PK_ID) FROM T_S_USER_USR"; $argUser=array('username' => array($username, PDO::PARAM_STR), 'password' => array($password, PDO::PARAM_STR), 'nationality' => array($nationality, PDO::PARAM_STR), 'sex' => array($sex, PDO::PARAM_STR), 'dateOfBirth' => array($dateOfBirth, PDO::PARAM_STR)); $this->connection->execQuery($insertUserQuery, $argUser); + $this->connection->execQuery($getLastIdQuery, array()); + $res=$this->connection->getResults(); + foreach($res as $row){ + $this->putSkinList($row['PK_ID'], 1); + } } /// Brief : Modifying an EXISTING user in database diff --git a/api-rest/initBdd.php b/api-rest/initBdd.php index 2fb3b6f..c34c900 100644 --- a/api-rest/initBdd.php +++ b/api-rest/initBdd.php @@ -84,9 +84,6 @@ $conn->query("CREATE TABLE `T_S_USER_USR` ( );"); -$conn->query("CREATE TRIGGER `after_insert_user` AFTER INSERT ON `T_S_USER_USR` FOR EACH ROW INSERT INTO T_J_OWN_SKIN_OWN VALUES(NEW.PK_ID,1); END;"); - - $conn->query("ALTER TABLE `T_E_GAME_GAM` ADD PRIMARY KEY (`PK_ID`), ADD UNIQUE KEY `GAM_NAME` (`GAM_NAME`);"); From d8cd6b9a5a1a24acef3867a16e69eec8f5505a65 Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 14:16:03 +0100 Subject: [PATCH 11/40] celui des conversations --- api-rest/gateways/conversationGateway.php | 4 ++++ api-rest/initBdd.php | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/api-rest/gateways/conversationGateway.php b/api-rest/gateways/conversationGateway.php index f513fbb..7c5e343 100644 --- a/api-rest/gateways/conversationGateway.php +++ b/api-rest/gateways/conversationGateway.php @@ -155,8 +155,12 @@ public function deleteUserFromConversation(int $idConv, int $idUser){ public function deleteConversation(int $id):void{ $deleteConv = "DELETE FROM T_H_CONVERSATION_COV WHERE PK_ID=:idConv"; + $deleteMessages="DELETE FROM T_H_MESSAGE_MSG WHERE PK_ID = (SELECT FK_MESSAGE + FROM T_J_CONTAIN_MESSAGE_CMG + WHERE FK_CONVERSATION=:id)"; $argIdConv = array('idConv'=>array($id,PDO::PARAM_INT)); $this->connection->execQuery($deleteConv,$argIdConv); + $this->connection->execQuery($deleteMessages,$argIdConv); } } diff --git a/api-rest/initBdd.php b/api-rest/initBdd.php index c34c900..644ef16 100644 --- a/api-rest/initBdd.php +++ b/api-rest/initBdd.php @@ -27,9 +27,6 @@ $conn->query("CREATE TABLE `T_H_CONVERSATION_COV` ( `COV_NAME` varchar(20) DEFAULT NULL ) ;"); -$conn->query("CREATE TRIGGER `before_delete_conversation` BEFORE DELETE ON `T_H_CONVERSATION_COV` FOR EACH ROW DELETE FROM T_H_MESSAGE_MSG WHERE PK_ID = (SELECT FK_MESSAGE -FROM T_J_CONTAIN_MESSAGE_CMG -WHERE FK_CONVERSATION=OLD.PK_ID); END;"); $conn->query("CREATE TABLE `T_H_MESSAGE_MSG` ( `PK_ID` int(11) NOT NULL, From a682a76776ce9a7dbd83e7fcd905c9a47c15923f Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 14:19:24 +0100 Subject: [PATCH 12/40] test --- api-rest/gateways/userGateway.php | 1 + api-rest/index.php | 1 + 2 files changed, 2 insertions(+) diff --git a/api-rest/gateways/userGateway.php b/api-rest/gateways/userGateway.php index 1f71579..7f78c34 100644 --- a/api-rest/gateways/userGateway.php +++ b/api-rest/gateways/userGateway.php @@ -138,6 +138,7 @@ class UserGateway{ $this->connection->execQuery($getLastIdQuery, array()); $res=$this->connection->getResults(); foreach($res as $row){ + echo "la je met le premier"; $this->putSkinList($row['PK_ID'], 1); } } diff --git a/api-rest/index.php b/api-rest/index.php index a58696e..ece5077 100644 --- a/api-rest/index.php +++ b/api-rest/index.php @@ -192,6 +192,7 @@ $sex = !empty($url[6]) ? (string) $url[6] : null; $dateOfBirth = !empty($url[7]) ? (string) $url[7] : null; $usergw->postUser($username,$password,$nationality,$sex,$dateOfBirth); + echo "je le met"; http_response_code(200); } elseif($method_name === "postMatch"){ // test : OK From 15cf3a1101da164f2579d460062ba92f8df45e5c Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 14:24:58 +0100 Subject: [PATCH 13/40] test 2 --- api-rest/index.php | 1 + 1 file changed, 1 insertion(+) diff --git a/api-rest/index.php b/api-rest/index.php index ece5077..5fe13b3 100644 --- a/api-rest/index.php +++ b/api-rest/index.php @@ -182,6 +182,7 @@ break; case 'POST': if($method_name === "postUser"){ // test : OK + echo count($url); if (count($url)<7){ //header("HTTP/1.0 400 Invalid number of arguments"); http_response_code(400); From 55f297ca1c4d59b2e67e787e0e856a7e6a3b26a2 Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 14:27:12 +0100 Subject: [PATCH 14/40] test --- api-rest/gateways/userGateway.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-rest/gateways/userGateway.php b/api-rest/gateways/userGateway.php index 7f78c34..4fb4717 100644 --- a/api-rest/gateways/userGateway.php +++ b/api-rest/gateways/userGateway.php @@ -136,7 +136,7 @@ class UserGateway{ 'dateOfBirth' => array($dateOfBirth, PDO::PARAM_STR)); $this->connection->execQuery($insertUserQuery, $argUser); $this->connection->execQuery($getLastIdQuery, array()); - $res=$this->connection->getResults(); + $res=$this->connection->getRes(); foreach($res as $row){ echo "la je met le premier"; $this->putSkinList($row['PK_ID'], 1); From 0f1439c8d24fdbe3753cca26c509020df10a8ddd Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 14:29:10 +0100 Subject: [PATCH 15/40] correction d'erreurs --- api-rest/gateways/userGateway.php | 5 ++--- api-rest/index.php | 2 -- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/api-rest/gateways/userGateway.php b/api-rest/gateways/userGateway.php index 4fb4717..8b26fbc 100644 --- a/api-rest/gateways/userGateway.php +++ b/api-rest/gateways/userGateway.php @@ -128,7 +128,7 @@ class UserGateway{ /// Returning TRUE if the user has been added succesfully, FALSE otherwise public function postUser(string $username, string $password, string $nationality, string $sex, string $dateOfBirth) { $insertUserQuery = "INSERT INTO T_S_USER_USR VALUES (NULL, :username, :password, :nationality, :sex, :dateOfBirth, 0, 0, 0, 1)"; - $getLastIdQuery = "SELECT max(PK_ID) FROM T_S_USER_USR"; + $getLastIdQuery = "SELECT max(PK_ID) id FROM T_S_USER_USR"; $argUser=array('username' => array($username, PDO::PARAM_STR), 'password' => array($password, PDO::PARAM_STR), 'nationality' => array($nationality, PDO::PARAM_STR), @@ -138,8 +138,7 @@ class UserGateway{ $this->connection->execQuery($getLastIdQuery, array()); $res=$this->connection->getRes(); foreach($res as $row){ - echo "la je met le premier"; - $this->putSkinList($row['PK_ID'], 1); + $this->putSkinList($row['id'], 1); } } diff --git a/api-rest/index.php b/api-rest/index.php index 5fe13b3..a58696e 100644 --- a/api-rest/index.php +++ b/api-rest/index.php @@ -182,7 +182,6 @@ break; case 'POST': if($method_name === "postUser"){ // test : OK - echo count($url); if (count($url)<7){ //header("HTTP/1.0 400 Invalid number of arguments"); http_response_code(400); @@ -193,7 +192,6 @@ $sex = !empty($url[6]) ? (string) $url[6] : null; $dateOfBirth = !empty($url[7]) ? (string) $url[7] : null; $usergw->postUser($username,$password,$nationality,$sex,$dateOfBirth); - echo "je le met"; http_response_code(200); } elseif($method_name === "postMatch"){ // test : OK From f7970d35b2447bcc051e27c39d0ddd19fd3fc9b1 Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 17:54:41 +0100 Subject: [PATCH 16/40] =?UTF-8?q?Add:=20R=C3=A9seau:=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20-Match=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20-Conversation=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20-TicTacToeOnline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-rest/index.php | 18 +-- bob_party/server.js | 17 ++- .../Games/Tic-Tac-Toe/tic_tac_toe_online.tsx | 129 +++++++++--------- .../ConversationPreviewComponent.tsx | 29 ++-- bob_party/src/components/GameComponent.tsx | 1 + bob_party/src/components/LobbyComponent.tsx | 37 ++++- bob_party/src/components/TopBar.tsx | 5 +- bob_party/src/core/Match/match.ts | 2 +- bob_party/src/core/Match/matchCasino.ts | 4 +- bob_party/src/core/Match/matchMulti.ts | 4 +- bob_party/src/core/Match/matchSolo.ts | 4 +- bob_party/src/screens/AddConversation.tsx | 3 +- bob_party/src/screens/ConversationScreen.tsx | 2 +- bob_party/src/screens/GameChoice.tsx | 20 ++- bob_party/src/screens/SignIn.tsx | 14 +- .../loaderConversationApi.ts | 5 +- .../src/services/gameService/loaderGameApi.ts | 6 +- .../src/services/userServices/saverUserApi.ts | 1 + 18 files changed, 183 insertions(+), 118 deletions(-) diff --git a/api-rest/index.php b/api-rest/index.php index a58696e..4db498e 100644 --- a/api-rest/index.php +++ b/api-rest/index.php @@ -230,15 +230,15 @@ //header("HTTP/1.0 400 Invalid number of arguments"); http_response_code(400); } - $id = !empty($url[4]) ? (int) $url[4] : null; - $username = !empty($url[5]) ? (string) $url[5] : null; - $password = !empty($url[6]) ? (string) $url[6] : null; - $sexe = !empty($url[7]) ? (string) $url[7] : null; - $nationality = !empty($url[8]) ? (string) $url[8] : null; - $nbCurrentCoins = (int) $url[9]; - $totalnbCoins = (int) $url[10]; - $nbGames = (int) $url[11]; - $currentSkin = !empty($url[12]) ? (int) $url[12] : null; + $id = !empty($url[3]) ? (int) $url[3] : null; + $username = !empty($url[4]) ? (string) $url[4] : null; + $password = !empty($url[5]) ? (string) $url[5] : null; + $sexe = !empty($url[6]) ? (string) $url[6] : null; + $nationality = !empty($url[7]) ? (string) $url[7] : null; + $nbCurrentCoins = (int) $url[8]; + $totalnbCoins = (int) $url[9]; + $nbGames = (int) $url[10]; + $currentSkin = !empty($url[11]) ? (int) $url[11] : null; $usergw->putUser($id,$username,$password,$sexe, $nationality, $nbCurrentCoins,$totalnbCoins,$nbGames,$currentSkin); http_response_code(200); } diff --git a/bob_party/server.js b/bob_party/server.js index 9be4546..de4c167 100644 --- a/bob_party/server.js +++ b/bob_party/server.js @@ -7,7 +7,7 @@ const { Server } = require("socket.io"); const io = new Server(server); io.on('connection', (socket) => { - console.log(socket.id) + console.log(socket.id); socket.on('signIn', (id) => { socket.join("U"+id); @@ -26,23 +26,28 @@ io.on('connection', (socket) => { console.log("Message envoyé"); }); - socket.on("createConversation", (tabId) =>{ + socket.on("createConversation", (tabId, conv) =>{ tabId.forEach(id => { - socket.to("U"+id).emit("messageReceived"); + socket.to("U"+id).emit("addedToConv", conv); }); }); socket.on('joinMatch', (match) => { - socket.join("M" + match); + socket.join("M" + match.code); + socket.to("M"+ match.code).emit("matchUsersChanged"); + }); + + socket.on('launchMatch', (match) => { + socket.to("M"+ match.code).emit("matchLaunched"); }); socket.on('quitMatch', (match) => { - socket.off("M" + match); + socket.to("M"+ match.code).emit("matchUsersChanged") }); socket.on("playTicTacToe", (match, rowIndex, columnIndex, turn) =>{ - socket.to("M"+match).emit("oppPlayTicTacToe", rowIndex, columnIndex, turn); + socket.to("M"+match.code).emit("oppPlayTicTacToe", rowIndex, columnIndex, turn); }); }); diff --git a/bob_party/src/Games/Tic-Tac-Toe/tic_tac_toe_online.tsx b/bob_party/src/Games/Tic-Tac-Toe/tic_tac_toe_online.tsx index 06d5996..df73a10 100644 --- a/bob_party/src/Games/Tic-Tac-Toe/tic_tac_toe_online.tsx +++ b/bob_party/src/Games/Tic-Tac-Toe/tic_tac_toe_online.tsx @@ -7,11 +7,15 @@ import { ScreenIndicator } from "../../components/ScreenIndicator"; import { TopBar } from "../../components/TopBar"; import { socket } from "../../../socketConfig"; import { MANAGER_MATCH, MANAGER_USER } from "../../../appManagers"; +import { useUserStore } from "../../context/userContext"; export default function TicTacToeOnline(props: { navigation: any }){ - const [init, setInit]=useState(0); + const [initTic, setInitTic]=useState(0); + + const setUser = useUserStore((state) => state.setUser); + setUpTicTacToeOnline(); @@ -29,7 +33,7 @@ export default function TicTacToeOnline(props: { navigation: any }){ const [currentTurn,setCurrentTurn] = useState("x"); - const onPressCell = (rowIndex:number,columnIndex:number) => { + const onPressCell = async (rowIndex:number,columnIndex:number) => { if (turnUser!==currentTurn){ Alert.alert("ce n'est pas à votre tour de jouer"); return; @@ -40,9 +44,9 @@ export default function TicTacToeOnline(props: { navigation: any }){ updateMap[rowIndex][columnIndex]=currentTurn; return updateMap; }); - socket.emit("playTicTacToe", 1, rowIndex, columnIndex, currentTurn); + socket.emit("playTicTacToe", MANAGER_MATCH.getCurrentMatch(), rowIndex, columnIndex, currentTurn); setCurrentTurn(currentTurn === "x"? "o" : "x"); - const retour=checkWinning(); + const retour= await checkWinning(); if(retour!=true){ checkComplete(); } @@ -54,9 +58,8 @@ export default function TicTacToeOnline(props: { navigation: any }){ }; function setUpTicTacToeOnline() { - if (init===0){ - setInit(1); - socket.emit("inMatch", 1); + if (initTic===0){ + setInitTic(1); socket.on("oppPlayTicTacToe", (rowIndex, columnIndex, turn) =>{ setMap((existingMap) =>{ @@ -80,36 +83,42 @@ export default function TicTacToeOnline(props: { navigation: any }){ } } - const checkWinning = () =>{ + async function endGame(win: number){ + socket.off("oppPlayTicTacToe"); + navigation.goBack(); + const tmp=MANAGER_USER.getCurrentUser(); + if (tmp!==null){ + await MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, win); + MANAGER_USER.setCurrentUser(tmp); + setUser(tmp); + } + } + + const checkWinning = async () =>{ const tmp=MANAGER_USER.getCurrentUser() // Checks rows for (let i=0; i<3; i++){ const isRowXWinning = map[i].every((cell)=> cell==="x"); const isRowOWinning = map[i] .every((cell)=>cell==="o"); if(isRowXWinning==true){ - if (tmp!==null){ - if (turnUser==="x"){ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 2); - } - else{ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 0); - } - } Alert.alert("X won !"); - navigation.goBack(); + if (turnUser==="x"){ + await endGame(2); + } + else{ + await endGame(0); + } return true; } else if(isRowOWinning==true){ - if (tmp!==null){ - if (turnUser==="x"){ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 0); - } - else{ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 2); - } - } + Alert.alert("O won !"); - navigation.goBack(); + if (turnUser==="x"){ + await endGame(0); + } + else{ + await endGame(2); + } return true; } } @@ -127,29 +136,23 @@ export default function TicTacToeOnline(props: { navigation: any }){ } } if (isColumnXWinning == true){ - if (tmp!==null){ - if (turnUser==="x"){ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 2); - } - else{ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 0); - } - } Alert.alert("X won !"); - navigation.goBack(); + if (turnUser==="x"){ + await endGame(2); + } + else{ + await endGame(0); + } return true; } if(isColumnOWinning==true){ - if (tmp!==null){ - if (turnUser==="x"){ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 0); - } - else{ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 2); - } - } Alert.alert("O won !"); - navigation.goBack(); + if (turnUser==="x"){ + await endGame(0); + } + else{ + await endGame(2); + } return true; } @@ -174,44 +177,34 @@ export default function TicTacToeOnline(props: { navigation: any }){ } } if(isDiag1OWinning==true || isDiag2OWinning==true){ - if (tmp!==null){ - if (turnUser==="x"){ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 0); - } - else{ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 2); - } - } Alert.alert("O won !"); - navigation.goBack(); + if (turnUser==="x"){ + await endGame(0); + } + else{ + await endGame(2); + } return true; } if(isDiag1XWinning==true || isDiag2XWinning==true){ - if (tmp!==null){ - if (turnUser==="x"){ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 2); - } - else{ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 0); - } - } Alert.alert("X won !"); - navigation.goBack(); + if (turnUser==="x"){ + await endGame(2); + } + else{ + await endGame(0); + } return true; } }; - const checkComplete = () =>{ + const checkComplete = async () =>{ const isRow0Full = map[0].every((cell)=> cell!==""); const isRow1Full = map[1] .every((cell)=>cell!==""); const isRow2Full = map[2] .every((cell)=>cell!==""); if(isRow0Full==true && isRow1Full==true && isRow2Full==true){ - const tmp=MANAGER_USER.getCurrentUser(); - if (tmp!==null){ - MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, 1); - } Alert.alert("Draw !"); - navigation.goBack(); + await endGame(1); return false; } }; diff --git a/bob_party/src/components/ConversationPreviewComponent.tsx b/bob_party/src/components/ConversationPreviewComponent.tsx index 45e2c7d..a6093dd 100644 --- a/bob_party/src/components/ConversationPreviewComponent.tsx +++ b/bob_party/src/components/ConversationPreviewComponent.tsx @@ -1,4 +1,4 @@ -import { FC, ReactNode } from "react" +import { FC, ReactNode, useState } from "react" import { Pressable, Image, ImageStyle, Text, View, Alert, ImageSourcePropType, TextStyle } from "react-native" import React from "react" import { Skin } from "../core/skin" @@ -22,24 +22,33 @@ FC<{conv: Conversation, navigation: any}> = { const setCurrentConv = useConversationStore((state) => state.setCurrentConv); + const [user,setUser]=useState(MANAGER_USER.getCurrentUser()); + const [initVar,setInitVar]=useState(0); - const user1 = MANAGER_USER.getCurrentUser(); - let tmp; - if (conv.getTabMessage().length<2){ - tmp=conv.getTabUser()[0]; - } - else if (user1?.isEqual(conv.getTabUser()[0])) tmp = conv.getTabUser()[1]; - else tmp = conv.getTabUser()[0]; - const user2 = tmp; + init(); + function init(){ + if (initVar===0){ + setInitVar(1); + if (conv.getTabUser().length<2){ + setUser(MANAGER_USER.getCurrentUser()); + } + else if (MANAGER_USER.getCurrentUser()?.isEqual(conv.getLastMessage().getMessageSender())){ + setUser(conv.getLastMessage().getMessageSender()); + } + else{ + setUser(conv.getTabUser()[1]); + } + } + } return( {MANAGER_CONVERSATION.setCurrentConv(conv); setCurrentConv(conv); navigation.navigate(Conversation)}}> - + {conv.getName()} diff --git a/bob_party/src/components/GameComponent.tsx b/bob_party/src/components/GameComponent.tsx index f181c13..d636554 100644 --- a/bob_party/src/components/GameComponent.tsx +++ b/bob_party/src/components/GameComponent.tsx @@ -41,6 +41,7 @@ FC<{game: Game, nav: any}> = nav.navigate("GameSolo"); } }, []); + return ( diff --git a/bob_party/src/components/LobbyComponent.tsx b/bob_party/src/components/LobbyComponent.tsx index e13b738..edf6e38 100644 --- a/bob_party/src/components/LobbyComponent.tsx +++ b/bob_party/src/components/LobbyComponent.tsx @@ -17,6 +17,7 @@ import { useMatchStore } from '../context/matchContext'; import { MANAGER_MATCH } from '../../appManagers'; import { ScreenIndicator } from '../components/ScreenIndicator'; import { UserPreview } from "./UserPreview" +import { socket } from "../../socketConfig" export const LobbyComponent : @@ -24,8 +25,12 @@ FC<{nav: any}> = ({nav}) => { const setTabUser = useMatchStore((state) => state.setTabUser); + const setMatch = useMatchStore((state) => state.setMatch); + const [initUsers, setInitUsers] = useState(0); + const [init, setInit] = useState(0); + function getUsers(){ if (initUsers===0){ @@ -45,6 +50,36 @@ FC<{nav: any}> = } + async function launchMatch(){ + + } + + + function initMatchSocket(){ + if (init===0){ + setInit(1); + socket.on("matchUsersChanged", async () =>{ + const match=MANAGER_MATCH.getCurrentMatch(); + if (match !==null){ + await MANAGER_MATCH.getLoaderMatch().loadByID(match.code).then((res) =>{ + MANAGER_MATCH.setCurrentMatch(res); + setMatch(res); + setInitUsers(0); + getUsers(); + }); + } + + }); + + socket.on("matchLaunched", async () =>{ + nav.navigate(MANAGER_MATCH.getCurrentMatch()?.getGame().getName().replace(/\s/g, '')); + }); + } + } + + initMatchSocket(); + + if(MANAGER_MATCH.getCurrentMatch()?.getGame().getNbPlayerMax()==1){ return ( @@ -75,7 +110,7 @@ FC<{nav: any}> = /> nav.navigate(MANAGER_MATCH.getCurrentMatch()?.getGame().getName().replace(/\s/g, ''))} + onPress={() => {socket.emit("launchMatch", MANAGER_MATCH.getCurrentMatch()); nav.navigate(MANAGER_MATCH.getCurrentMatch()?.getGame().getName().replace(/\s/g, ''))}} > Lancer la partie diff --git a/bob_party/src/components/TopBar.tsx b/bob_party/src/components/TopBar.tsx index f1277b4..48bf5b1 100644 --- a/bob_party/src/components/TopBar.tsx +++ b/bob_party/src/components/TopBar.tsx @@ -52,7 +52,7 @@ FC<{nav: any, state?: string}> = await MANAGER_CONVERSATION.getsaverConversation().deleteUserToConversation(tmpConv, tmp); const trouveIndex = (element: Conversation) => element.getId()===tmpConv.getId(); const index=MANAGER_CONVERSATION.getTabConv().findIndex(trouveIndex); - MANAGER_CONVERSATION.getTabConv().splice(index); + MANAGER_CONVERSATION.getTabConv().splice(index, 1); if (tmpConv.getTabUser().length===1){ await MANAGER_CONVERSATION.getsaverConversation().deleteConversation(tmpConv); } @@ -70,6 +70,7 @@ FC<{nav: any, state?: string}> = const m=new MatchModifier(); if (tmp!==null && tmpMatch!==null){ socket.emit("quitMatch", tmpMatch); + socket.off("M" + tmpMatch.code); await m.quitMatch(tmp, tmpMatch); resetMatch(); resetTabUserMatch(); @@ -111,7 +112,7 @@ FC<{nav: any, state?: string}> = case 'conversation': return ( - { resetCurrentConv; MANAGER_CONVERSATION.setCurrentConv(null); nav.goBack()}}> + { resetCurrentConv(); MANAGER_CONVERSATION.setCurrentConv(null); nav.goBack()}}> {useConversationStore().currentConv?.getName()} diff --git a/bob_party/src/core/Match/match.ts b/bob_party/src/core/Match/match.ts index 3265e5c..9fa0685 100644 --- a/bob_party/src/core/Match/match.ts +++ b/bob_party/src/core/Match/match.ts @@ -67,6 +67,6 @@ export abstract class Match{ } - abstract updatePostMatch(user:User, points:number):void; + abstract updatePostMatch(user:User, points:number):Promise; } \ No newline at end of file diff --git a/bob_party/src/core/Match/matchCasino.ts b/bob_party/src/core/Match/matchCasino.ts index b8dec35..20e9253 100644 --- a/bob_party/src/core/Match/matchCasino.ts +++ b/bob_party/src/core/Match/matchCasino.ts @@ -10,9 +10,9 @@ export default class MatchCasino extends Match{ super(code, inGame, tabUser, game); } - updatePostMatch(user:User, points: number): void { + async updatePostMatch(user:User, points: number): Promise { const manage= new UserCoinsModifier(); - manage.addCoins(user, this.getGame().coinsCalculator(points)); + await manage.addCoins(user, this.getGame().coinsCalculator(points)); } } \ No newline at end of file diff --git a/bob_party/src/core/Match/matchMulti.ts b/bob_party/src/core/Match/matchMulti.ts index b028777..e220b24 100644 --- a/bob_party/src/core/Match/matchMulti.ts +++ b/bob_party/src/core/Match/matchMulti.ts @@ -10,8 +10,8 @@ export default class MatchMulti extends Match{ super(code, inGame, tabUser, game); } - updatePostMatch(user:User, points: number): void { + async updatePostMatch(user:User, points: number): void { const manage= new UserCoinsModifier(); - manage.addCoins(user, this.getGame().coinsCalculator(points)); + await manage.addCoins(user, this.getGame().coinsCalculator(points)); } } \ No newline at end of file diff --git a/bob_party/src/core/Match/matchSolo.ts b/bob_party/src/core/Match/matchSolo.ts index b74b2c6..8545f27 100644 --- a/bob_party/src/core/Match/matchSolo.ts +++ b/bob_party/src/core/Match/matchSolo.ts @@ -10,8 +10,8 @@ export default class MatchSolo extends Match{ super(code, inGame, tabUser, game); } - updatePostMatch(user:User, points: number): void { + async updatePostMatch(user:User, points: number): void { const manage= new UserCoinsModifier(); - manage.addCoins(user, this.getGame().coinsCalculator(points)); + await manage.addCoins(user, this.getGame().coinsCalculator(points)); } } \ No newline at end of file diff --git a/bob_party/src/screens/AddConversation.tsx b/bob_party/src/screens/AddConversation.tsx index 5ce525a..d9920dc 100644 --- a/bob_party/src/screens/AddConversation.tsx +++ b/bob_party/src/screens/AddConversation.tsx @@ -66,7 +66,8 @@ export default function AddConversation(props: {navigation:any}){ (objA, objB) => objB.getLastMessage().getMessageDate().getTime() - objA.getLastMessage().getMessageDate().getTime(), ); setTabConv(MANAGER_CONVERSATION.getTabConv()); - socket.emit("createConversation", tabId); + socket.emit("createConversation", tabId, res); + socket.emit("inConv", res); navigation.goBack(); } }); diff --git a/bob_party/src/screens/ConversationScreen.tsx b/bob_party/src/screens/ConversationScreen.tsx index c2ec7cf..99e6100 100644 --- a/bob_party/src/screens/ConversationScreen.tsx +++ b/bob_party/src/screens/ConversationScreen.tsx @@ -26,7 +26,7 @@ function ConversationScreen(props: { navigation: any; }) { await MANAGER_CONVERSATION.getsaverConversation().addMessage(tmpConv.getId(), e.nativeEvent.text, new Date(), tmpUs).then((res) => { if (res!==null){ const trouveIndex = (element: Conversation) => element.getId()===tmpConv.getId(); - MANAGER_CONVERSATION.getCurrentConv()?.getTabMessage().push(res); + MANAGER_CONVERSATION.getCurrentConv()?.ajouterMessage(res); const index=MANAGER_CONVERSATION.getTabConv().findIndex(trouveIndex); const tmp=MANAGER_CONVERSATION.getCurrentConv(); if (tmp!==null){ diff --git a/bob_party/src/screens/GameChoice.tsx b/bob_party/src/screens/GameChoice.tsx index 4ceed55..46508bb 100644 --- a/bob_party/src/screens/GameChoice.tsx +++ b/bob_party/src/screens/GameChoice.tsx @@ -1,5 +1,5 @@ import { StatusBar } from 'expo-status-bar' -import {View, FlatList, Text, Alert} from 'react-native' +import {View, FlatList, Text, Alert, NativeSyntheticEvent, TextInputSubmitEditingEventData} from 'react-native' import React, { useState } from 'react'; import { TopBar } from '../components/TopBar'; import { BotBar } from '../components/BotBar'; @@ -10,23 +10,35 @@ import stylesScreen from './style/screens.style' import styles from './style/GameChoice.style' import { MANAGER_GAME, MANAGER_MATCH, MANAGER_USER } from '../../appManagers'; import { GameList } from '../components/GameList'; +import { useMatchStore } from '../context/matchContext'; +import { socket } from '../../socketConfig'; function GameChoice(props: { navigation: any}) { const { navigation} = props const [matchId, setMatchId] = useState(''); - async function joinMatch(id:string){ - const newId = parseInt(id); + const setMatch = useMatchStore((state) => state.setMatch); + + + async function joinMatch(id:NativeSyntheticEvent){ + const newId = parseInt(id.nativeEvent.text); const tmp=MANAGER_USER.getCurrentUser(); if (tmp !== null){ await MANAGER_MATCH.getsaverMatch().joinMatch(tmp, newId).then((res) =>{ if (res===null){ - Alert.alert() + Alert.alert("L'id du match n'existe pas ou un jeu est déjà lancé ou il y a trop de joueurs");//changer ça avec d'autre codes de retour + } + else{ + MANAGER_MATCH.setCurrentMatch(res); + setMatch(res); + socket.emit("joinMatch", res); + navigation.navigate("GameSolo"); } }); } } + if(MANAGER_GAME.currentGameType === "solo" ){ return ( diff --git a/bob_party/src/screens/SignIn.tsx b/bob_party/src/screens/SignIn.tsx index 45ce430..33f2fbc 100644 --- a/bob_party/src/screens/SignIn.tsx +++ b/bob_party/src/screens/SignIn.tsx @@ -32,6 +32,8 @@ function SignIn(props: { navigation: any; }) { const setTabSkin = useSkinStore((state) => state.setTabSkin); + const [waitConnect, setWaitConnect] = useState(0); + const errorList = useSelector((state: RootState) => state.credentialErrors.loginErrorList); @@ -44,12 +46,11 @@ function SignIn(props: { navigation: any; }) { dispatch(updateIncorrectCredentials(true)); } - let waitConnect=0; async function handleUserConnect(username: string, password: string){ if (waitConnect==0){ - waitConnect=1; + setWaitConnect(-1); await MANAGER_USER.getLoaderUser().loadByUsernamePassword(username, password).then(async (res) => { if (res!=null){ @@ -67,10 +68,10 @@ function SignIn(props: { navigation: any; }) { } else{ Alert.alert("Incorrect Username or Password"); + setWaitConnect(0); } }); - waitConnect=0; } return; } @@ -83,6 +84,10 @@ function SignIn(props: { navigation: any; }) { socket.on("messageReceived", async () =>{ await handleConversationLoad(); }); + socket.on("addedToConv", async (conv) =>{ + socket.emit("inConv", conv); + await handleConversationLoad(); + }); } async function handleConversationLoad(){ @@ -96,9 +101,6 @@ function SignIn(props: { navigation: any; }) { if (tmpConv!==null){ const trouveIndex = (element: Conversation) => element.getId()===tmpConv.getId(); const index=MANAGER_CONVERSATION.getTabConv().findIndex(trouveIndex); - MANAGER_CONVERSATION.getTabConv()?.sort( - (objA, objB) => objB.getLastMessage().getMessageDate().getTime() - objA.getLastMessage().getMessageDate().getTime(), - ); MANAGER_CONVERSATION.setCurrentConv(MANAGER_CONVERSATION.getTabConv()[index]); setCurrentConv(MANAGER_CONVERSATION.getCurrentConv()); } diff --git a/bob_party/src/services/conversationService/loaderConversationApi.ts b/bob_party/src/services/conversationService/loaderConversationApi.ts index 3290e8a..4781b5e 100644 --- a/bob_party/src/services/conversationService/loaderConversationApi.ts +++ b/bob_party/src/services/conversationService/loaderConversationApi.ts @@ -63,7 +63,10 @@ async function jsonToConversation(response:any) { const sender:User | null= await MANAGER_USER.getLoaderUser().loadByID(message.idSender); if (sender!=null){ - tabMessage.push(new Message(message.id, message.content, sender, new Date(message.dateEnvoie))); + const tab=message.dateEnvoie.split(' '); + const tabDate=tab[0].split('-'); + const tabPrecis=tab[1].split(":"); + tabMessage.push(new Message(message.id, message.content, sender, new Date(tabDate[0],parseInt(tabDate[1])-1,tabDate[2],tabPrecis[0], tabPrecis[1], tabPrecis[2]))); } if(conv.tabMessages.length===tabMessage.length){ resolve(); diff --git a/bob_party/src/services/gameService/loaderGameApi.ts b/bob_party/src/services/gameService/loaderGameApi.ts index 322d94e..2312091 100644 --- a/bob_party/src/services/gameService/loaderGameApi.ts +++ b/bob_party/src/services/gameService/loaderGameApi.ts @@ -21,7 +21,6 @@ export default class LoaderGameApi implements ILoaderGame{ .then(function (response: any) { if (response.data != null && response.data != undefined){ response.data.forEach(game => { - switch(game.type){ case "GameSolo": let mapSolo = new Map(); @@ -54,7 +53,7 @@ export default class LoaderGameApi implements ILoaderGame{ method: 'get', url: url, }).then(function (response: any){ - if (response.data!=undefined || response.data!==null){ + if (response.data!=undefined && response.data!==null){ switch(response.data.type){ case "GameSolo": let mapSolo = new Map(); @@ -62,14 +61,17 @@ export default class LoaderGameApi implements ILoaderGame{ mapSolo.set(new Number(response.data.keys[i]), new Number(response.data.values[i])) } game = new GameSolo(response.data.id, response.data.name, response.data.image, response.data.nbPlayerMin, response.data.nbPlayerMax, mapSolo); + break; case "GameMulti": const mapMulti = new Map(); for (let i=0; i { let us:User|null=null; const url=this.baseUrl + 'putUser/'+ u.getId() + "/" + u.getUsername() + "/" + u.getPassword() + "/" + u.getSexe() + "/" + u.getNationality() + "/" + u.getCurrentCoins() + "/" + u.getTotalCoins() + "/" + u.getGamesPlayed() + "/" + u.getCurrentSkin().getSkinId(); + console.log(url); await this.axios({ method: 'put', url: url, From 1acc475741ce109e58718dda343db6775d59a65c Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 18:11:51 +0100 Subject: [PATCH 17/40] =?UTF-8?q?signUp=20initialis=C3=A9=20comme=20signIn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/src/screens/SignUp.tsx | 77 +++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 2 deletions(-) diff --git a/bob_party/src/screens/SignUp.tsx b/bob_party/src/screens/SignUp.tsx index f0d5ad7..e3642e7 100644 --- a/bob_party/src/screens/SignUp.tsx +++ b/bob_party/src/screens/SignUp.tsx @@ -13,11 +13,15 @@ import { RootState } from '../redux/store'; import { updateImpossibleBirthDate, updateInvalidPassword, updateInvalidPseudo, updateTooLongPseudo, updateTooShortPassword, updateUndefinedBirthDate, updateUndefinedNationality, updateUndefinedPassword, updateUndefinedPseudo, updateUndefinedSex } from '../redux/features/credentialErrorsSlice'; import { getSystemErrorMap } from 'util'; import RNDateTimePicker from '@react-native-community/datetimepicker'; -import { MANAGER_USER } from '../../appManagers'; +import { MANAGER_CONVERSATION, MANAGER_GAME, MANAGER_SKIN, MANAGER_USER } from '../../appManagers'; import { Dispatch, AnyAction } from '@reduxjs/toolkit'; import { User } from '../core/User/user'; import { useUserStore } from '../context/userContext'; import { socket } from '../../socketConfig'; +import { useConversationStore } from '../context/conversationContext'; +import { useGameStore } from '../context/gameContext'; +import { Conversation } from '../core/conversation'; +import { useSkinStore } from '../context/storeContext' function SignUp(props: { navigation: any; }) { const { navigation } = props @@ -29,6 +33,17 @@ function SignUp(props: { navigation: any; }) { const setUser = useUserStore((state) => state.setUser); + const setTabConv = useConversationStore((state) => state.setTabConv); + const setCurrentConv = useConversationStore((state) => state.setCurrentConv); + + const setTabGame = useGameStore((state) => state.setTabGame); + const setTabGameSolo = useGameStore((state) => state.setTabGameSolo); + const setTabGameMulti = useGameStore((state) => state.setTabGameMulti); + + const setTabSkin = useSkinStore((state) => state.setTabSkin); + + + function onDateSelected(event : DateTimePickerEvent, value : Date | undefined) { if (value != undefined) { setDate(value); @@ -141,14 +156,72 @@ function SignUp(props: { navigation: any; }) { if (tmp!=null){ Alert.alert("Ce pseudo existe déjà"); } - await MANAGER_USER.getsaverUser().saveUser(pseudo, password, selectedNationality, selectedSex, date).then((res)=>{ + await MANAGER_USER.getsaverUser().saveUser(pseudo, password, selectedNationality, selectedSex, date).then(async (res)=>{ MANAGER_USER.setCurrentUser(res); setUser(MANAGER_USER.getCurrentUser()); socket.emit("signIn", res); + initSocket(); + await handleSkinLoad(); + await handleGameLoad(); navigation.navigate('HomeTab'); }) } } + + function initSocket(){ + socket.emit("signIn", MANAGER_USER.getCurrentUser()?.id); + MANAGER_CONVERSATION.getTabConv()?.forEach( conv =>{ + socket.emit("inConv", conv); + }); + socket.on("messageReceived", async () =>{ + await handleConversationLoad(); + }); + socket.on("addedToConv", async (conv) =>{ + socket.emit("inConv", conv); + await handleConversationLoad(); + }); + } + + async function handleSkinLoad(){ + MANAGER_SKIN.setTabSkin(await MANAGER_SKIN.getLoaderSkin().loadAllSkin()); + setTabSkin(MANAGER_SKIN.getTabSkin()); + } + + async function handleGameLoad(){ + MANAGER_GAME.setTabGame(await MANAGER_GAME.getLoaderGame().loadAllGames()); + MANAGER_GAME.getTabGame().forEach(game => { + if (game.getNbPlayerMin()>1){ + MANAGER_GAME.getTabGameMulti().push(game); + } + else{ + MANAGER_GAME.getTabGameSolo().push(game); + } + }); + setTabGame(MANAGER_GAME.getTabGame()); + setTabGameMulti(MANAGER_GAME.getTabGameMulti()) + setTabGameSolo(MANAGER_GAME.getTabGameSolo()); + } + + async function handleConversationLoad(){ + const tmp = MANAGER_USER.getCurrentUser(); + if (tmp !== null) { + await MANAGER_CONVERSATION.getLoaderConversation().loadByUser(tmp).then((res) => { + const tmp=MANAGER_USER.getCurrentUser() + MANAGER_CONVERSATION.setTabConv(res); + if (tmp!==null){ + const tmpConv=MANAGER_CONVERSATION.getCurrentConv(); + if (tmpConv!==null){ + const trouveIndex = (element: Conversation) => element.getId()===tmpConv.getId(); + const index=MANAGER_CONVERSATION.getTabConv().findIndex(trouveIndex); + MANAGER_CONVERSATION.setCurrentConv(MANAGER_CONVERSATION.getTabConv()[index]); + setCurrentConv(MANAGER_CONVERSATION.getCurrentConv()); + } + setTabConv(MANAGER_CONVERSATION.getTabConv()); + } + }); + } + } } export default SignUp + From b5ecdb455b45ce18c8457e824d440b26d4894c24 Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 19:16:07 +0100 Subject: [PATCH 18/40] quitter match marche + tentative hashage --- api-rest/gateways/userGateway.php | 10 ++++++++-- bob_party/src/core/Match/matchMulti.ts | 2 +- bob_party/src/core/Match/matchSolo.ts | 2 +- bob_party/src/services/matchServices/saverMatchApi.ts | 5 +++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/api-rest/gateways/userGateway.php b/api-rest/gateways/userGateway.php index 8b26fbc..734d496 100644 --- a/api-rest/gateways/userGateway.php +++ b/api-rest/gateways/userGateway.php @@ -110,12 +110,16 @@ class UserGateway{ public function getUserForConnection(string $username,string $password):?User{ $userQuery = "SELECT * FROM T_S_USER_USR - WHERE USR_USERNAME=:username - AND USR_PASSWORD=:password"; + WHERE USR_USERNAME=:username"; $argUsernamePassword=(array('username'=>array($username,PDO::PARAM_STR), 'password'=>array($password,PDO::PARAM_STR))); $this->connection->execQuery($userQuery,$argUsernamePassword); $res=$this->connection->getRes(); + foreach($res as $row){ + if(!password_verify($password,$row["USR_USERNAME"])){ + return null; + } + } $usr=$this->convertResToUser($res); if ($usr != null){ $usr->tabSkin=$this->getSkinList($usr->id); @@ -127,6 +131,7 @@ class UserGateway{ /// Parameters : * $u (User): user we want to insert in database /// Returning TRUE if the user has been added succesfully, FALSE otherwise public function postUser(string $username, string $password, string $nationality, string $sex, string $dateOfBirth) { + $password=password_hash($password,PASSWORD_DEFAULT); $insertUserQuery = "INSERT INTO T_S_USER_USR VALUES (NULL, :username, :password, :nationality, :sex, :dateOfBirth, 0, 0, 0, 1)"; $getLastIdQuery = "SELECT max(PK_ID) id FROM T_S_USER_USR"; $argUser=array('username' => array($username, PDO::PARAM_STR), @@ -146,6 +151,7 @@ class UserGateway{ /// Parameters : * $u (User): user we want to update in database /// Returning TRUE if the modifications has been done succesfully, FALSE otherwise public function putUser(int $id,string $username, string $password, string $sex, string $nationality, int $currentBobCoins,int $totalBobCoins,int $nbGamesPlayed, int $currentSkin){ + $password=password_hash($password,PASSWORD_DEFAULT); $updateUserQuery="UPDATE T_S_USER_USR SET USR_USERNAME = :username, USR_PASSWORD=:password, diff --git a/bob_party/src/core/Match/matchMulti.ts b/bob_party/src/core/Match/matchMulti.ts index e220b24..1eaf8e5 100644 --- a/bob_party/src/core/Match/matchMulti.ts +++ b/bob_party/src/core/Match/matchMulti.ts @@ -10,7 +10,7 @@ export default class MatchMulti extends Match{ super(code, inGame, tabUser, game); } - async updatePostMatch(user:User, points: number): void { + async updatePostMatch(user:User, points: number): Promise { const manage= new UserCoinsModifier(); await manage.addCoins(user, this.getGame().coinsCalculator(points)); } diff --git a/bob_party/src/core/Match/matchSolo.ts b/bob_party/src/core/Match/matchSolo.ts index 8545f27..8eaf62d 100644 --- a/bob_party/src/core/Match/matchSolo.ts +++ b/bob_party/src/core/Match/matchSolo.ts @@ -10,7 +10,7 @@ export default class MatchSolo extends Match{ super(code, inGame, tabUser, game); } - async updatePostMatch(user:User, points: number): void { + async updatePostMatch(user:User, points: number): Promise { const manage= new UserCoinsModifier(); await manage.addCoins(user, this.getGame().coinsCalculator(points)); } diff --git a/bob_party/src/services/matchServices/saverMatchApi.ts b/bob_party/src/services/matchServices/saverMatchApi.ts index c79183f..9087c27 100644 --- a/bob_party/src/services/matchServices/saverMatchApi.ts +++ b/bob_party/src/services/matchServices/saverMatchApi.ts @@ -44,7 +44,7 @@ export default class SaverMatchApi implements ISaverMatch{ } async deleteUserFromMatch(u: User): Promise { - let url=this.baseUrl + 'deleteUserFromMatch.php/' + u.id; + let url=this.baseUrl + 'deleteUserFromMatch/' + u.id; await this.axios({ method: 'put', url: url, @@ -61,7 +61,8 @@ export default class SaverMatchApi implements ISaverMatch{ await MANAGER_MATCH.getLoaderMatch().loadByID(id).then(async (response)=>{ if (response!==undefined && response !== null){ - if (response.getTabUsers().length Date: Tue, 10 Jan 2023 19:21:44 +0100 Subject: [PATCH 19/40] Correction erreur --- api-rest/gateways/userGateway.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/api-rest/gateways/userGateway.php b/api-rest/gateways/userGateway.php index 734d496..a65f780 100644 --- a/api-rest/gateways/userGateway.php +++ b/api-rest/gateways/userGateway.php @@ -111,8 +111,7 @@ class UserGateway{ $userQuery = "SELECT * FROM T_S_USER_USR WHERE USR_USERNAME=:username"; - $argUsernamePassword=(array('username'=>array($username,PDO::PARAM_STR), - 'password'=>array($password,PDO::PARAM_STR))); + $argUsernamePassword=(array('username'=>array($username,PDO::PARAM_STR))); $this->connection->execQuery($userQuery,$argUsernamePassword); $res=$this->connection->getRes(); foreach($res as $row){ From f704fa7ea4c1de85a0a8d5ad2e891c16e7ed1296 Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 19:25:02 +0100 Subject: [PATCH 20/40] Augmentation de la taille des mdp pour hashage --- api-rest/initBdd.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-rest/initBdd.php b/api-rest/initBdd.php index 644ef16..df1af69 100644 --- a/api-rest/initBdd.php +++ b/api-rest/initBdd.php @@ -70,7 +70,7 @@ $conn->query("CREATE TABLE `T_J_PLAY_MATCH_PLM` ( $conn->query("CREATE TABLE `T_S_USER_USR` ( `PK_ID` int(11) NOT NULL, `USR_USERNAME` varchar(50) NOT NULL, - `USR_PASSWORD` varchar(50) NOT NULL, + `USR_PASSWORD` varchar(200) NOT NULL, `USR_NATIONALITY` varchar(20) NOT NULL, `USR_SEX` varchar(30) NOT NULL, `USR_DATE_OF_BIRTH` date DEFAULT NULL, From 21b231d54895d9d21bd9a8acfec52fe897ca2a76 Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Tue, 10 Jan 2023 19:27:52 +0100 Subject: [PATCH 21/40] Correction d'une faute de frappe --- api-rest/gateways/userGateway.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-rest/gateways/userGateway.php b/api-rest/gateways/userGateway.php index a65f780..30d4fd6 100644 --- a/api-rest/gateways/userGateway.php +++ b/api-rest/gateways/userGateway.php @@ -115,7 +115,7 @@ class UserGateway{ $this->connection->execQuery($userQuery,$argUsernamePassword); $res=$this->connection->getRes(); foreach($res as $row){ - if(!password_verify($password,$row["USR_USERNAME"])){ + if(!password_verify($password,$row["USR_PASSWORD"])){ return null; } } From d3c83d08acbde7363e93a826109c3d003311b662 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 20:51:43 +0100 Subject: [PATCH 22/40] Ajouter 'bob_party/Dockerfile' --- bob_party/Dockerfile | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 bob_party/Dockerfile diff --git a/bob_party/Dockerfile b/bob_party/Dockerfile new file mode 100644 index 0000000..3752807 --- /dev/null +++ b/bob_party/Dockerfile @@ -0,0 +1,19 @@ +FROM node:latest + +# Create app directory +WORKDIR /bob_party + +# Install app dependencies +# A wildcard is used to ensure both package.json AND package-lock.json are copied +# where available (npm@5+) +COPY package*.json ./ + +RUN npm install +# If you are building your code for production +# RUN npm ci --only=production + +# Bundle app source +COPY bob_party . + +EXPOSE 8080 +CMD [ "node", "server.js" ] \ No newline at end of file From e3bb8a808ddbaea8ed61058759f706255ee860d8 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 20:53:23 +0100 Subject: [PATCH 23/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.drone.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/.drone.yml b/.drone.yml index 8fe8504..3c7f93d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -66,6 +66,33 @@ steps: ADMINS: thomaschazot2,mathildejean3,lilianbreton,luciebedouret,albanguilhot,cedricbouhours depends_on: [ deploy-container-mysql, container-api ] + # docker image build + - name: container-server + image: plugins/docker + settings: + dockerfile: ./bob_party/Dockerfile + context: . + registry: hub.codefirst.iut.uca.fr + repo: hub.codefirst.iut.uca.fr/bob_parteam/bob_party + username: + from_secret: SECRET_REGISTRY_USERNAME + password: + from_secret: SECRET_REGISTRY_PASSWORD + + + +#container deployment + - name: deploy-server-containers + image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dockerproxy-clientdrone:latest + environment: + IMAGENAME: hub.codefirst.iut.uca.fr/bob_parteam/bob_party:latest + CONTAINERNAME: server-bobParty + COMMAND: create + OVERWRITE: true + #PRIVATE: true + ADMINS: thomaschazot2,mathildejean3,lilianbreton,luciebedouret,albanguilhot,cedricbouhours + depends_on: [ deploy-container-mysql, container-api ] + From a33e92fbec39e1fe20a9de896dc0d6620d57fdb4 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 20:54:42 +0100 Subject: [PATCH 24/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'bob=5Fparty/?= =?UTF-8?q?Dockerfile'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bob_party/Dockerfile b/bob_party/Dockerfile index 3752807..092adef 100644 --- a/bob_party/Dockerfile +++ b/bob_party/Dockerfile @@ -8,7 +8,7 @@ WORKDIR /bob_party # where available (npm@5+) COPY package*.json ./ -RUN npm install +RUN yarn # If you are building your code for production # RUN npm ci --only=production From 0b98e57ec7b2737a02ca419744e75ae108c2d34c Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 20:57:46 +0100 Subject: [PATCH 25/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'bob=5Fparty/?= =?UTF-8?q?Dockerfile'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bob_party/Dockerfile b/bob_party/Dockerfile index 092adef..fa5f74b 100644 --- a/bob_party/Dockerfile +++ b/bob_party/Dockerfile @@ -1,7 +1,6 @@ FROM node:latest # Create app directory -WORKDIR /bob_party # Install app dependencies # A wildcard is used to ensure both package.json AND package-lock.json are copied @@ -13,7 +12,8 @@ RUN yarn # RUN npm ci --only=production # Bundle app source -COPY bob_party . +COPY bob_party/server.js . EXPOSE 8080 +CMD [ "ls" ] CMD [ "node", "server.js" ] \ No newline at end of file From 2faa9ecffb19e0d520a2d9ca359eb29b7aaf6ca8 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:01:26 +0100 Subject: [PATCH 26/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'api-rest/ind?= =?UTF-8?q?ex.php'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-rest/index.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/api-rest/index.php b/api-rest/index.php index 4db498e..109d216 100644 --- a/api-rest/index.php +++ b/api-rest/index.php @@ -81,6 +81,10 @@ $i++; } + if (empty($url)){ + exit; + } + //echo json_encode($url); $method_name = !empty($url[2]) ? (string)$url[2] : null; From 4624b3cc05abb169bad719409d32309e03d987c9 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:04:34 +0100 Subject: [PATCH 27/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'api-rest/ind?= =?UTF-8?q?ex.php'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-rest/index.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/api-rest/index.php b/api-rest/index.php index 109d216..e253759 100644 --- a/api-rest/index.php +++ b/api-rest/index.php @@ -75,6 +75,10 @@ $url = filter_var($url, FILTER_SANITIZE_URL); $url = explode('/', $url); + if (empty($url)){ + exit; + } + $i=0; while ($url[$i]!=="index.php"){ unset($url[$i]); From 39b05d799ce8e2cc86fb085d8e427f4dad2fcafd Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:07:06 +0100 Subject: [PATCH 28/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'api-rest/ind?= =?UTF-8?q?ex.php'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-rest/index.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/api-rest/index.php b/api-rest/index.php index e253759..5ed9c12 100644 --- a/api-rest/index.php +++ b/api-rest/index.php @@ -75,12 +75,8 @@ $url = filter_var($url, FILTER_SANITIZE_URL); $url = explode('/', $url); - if (empty($url)){ - exit; - } - $i=0; - while ($url[$i]!=="index.php"){ + while ($url[$i]!=="index.php" && count($url)>0){ unset($url[$i]); $i++; } From fa4ce968a3e2da3de30e858ce10b86a9836725ac Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:09:35 +0100 Subject: [PATCH 29/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.drone.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 3c7f93d..36e686f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -73,7 +73,7 @@ steps: dockerfile: ./bob_party/Dockerfile context: . registry: hub.codefirst.iut.uca.fr - repo: hub.codefirst.iut.uca.fr/bob_parteam/bob_party + repo: hub.codefirst.iut.uca.fr/bob_parteam/bob_party/server username: from_secret: SECRET_REGISTRY_USERNAME password: @@ -85,7 +85,7 @@ steps: - name: deploy-server-containers image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dockerproxy-clientdrone:latest environment: - IMAGENAME: hub.codefirst.iut.uca.fr/bob_parteam/bob_party:latest + IMAGENAME: hub.codefirst.iut.uca.fr/bob_parteam/bob_party/server:latest CONTAINERNAME: server-bobParty COMMAND: create OVERWRITE: true From 2d8fa25a121ba540296faa70d0f21927b3e5dc05 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:10:41 +0100 Subject: [PATCH 30/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.drone.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 36e686f..93526a5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -91,7 +91,7 @@ steps: OVERWRITE: true #PRIVATE: true ADMINS: thomaschazot2,mathildejean3,lilianbreton,luciebedouret,albanguilhot,cedricbouhours - depends_on: [ deploy-container-mysql, container-api ] + depends_on: [ container-server ] From 33b0f68a99e051c2d526ba43c64fea954c6797b0 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:12:18 +0100 Subject: [PATCH 31/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'bob=5Fparty/?= =?UTF-8?q?Dockerfile'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bob_party/Dockerfile b/bob_party/Dockerfile index fa5f74b..2f464ac 100644 --- a/bob_party/Dockerfile +++ b/bob_party/Dockerfile @@ -16,4 +16,4 @@ COPY bob_party/server.js . EXPOSE 8080 CMD [ "ls" ] -CMD [ "node", "server.js" ] \ No newline at end of file +#CMD [ "node", "server.js" ] \ No newline at end of file From 990d866ec4e6b9cb31d92fff71858393371e5fe0 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:12:53 +0100 Subject: [PATCH 32/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'.drone.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 93526a5..4e374d2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -36,7 +36,7 @@ steps: dockerfile: ./api-rest/Dockerfile context: . registry: hub.codefirst.iut.uca.fr - repo: hub.codefirst.iut.uca.fr/bob_parteam/bob_party + repo: hub.codefirst.iut.uca.fr/bob_parteam/bob_party/api username: from_secret: SECRET_REGISTRY_USERNAME password: @@ -48,7 +48,7 @@ steps: - name: deploy-api-containers image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dockerproxy-clientdrone:latest environment: - IMAGENAME: hub.codefirst.iut.uca.fr/bob_parteam/bob_party:latest + IMAGENAME: hub.codefirst.iut.uca.fr/bob_parteam/bob_party/api:latest CONTAINERNAME: api-bobParty COMMAND: create OVERWRITE: true From a4de36f886b5df82c53a46dc318c921860abc0ce Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:14:50 +0100 Subject: [PATCH 33/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'bob=5Fparty/?= =?UTF-8?q?Dockerfile'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bob_party/Dockerfile b/bob_party/Dockerfile index 2f464ac..2fe3e5b 100644 --- a/bob_party/Dockerfile +++ b/bob_party/Dockerfile @@ -15,5 +15,4 @@ RUN yarn COPY bob_party/server.js . EXPOSE 8080 -CMD [ "ls" ] -#CMD [ "node", "server.js" ] \ No newline at end of file +CMD [ "node", "server.js" ] \ No newline at end of file From 3f2f62ca3e65fda648e75e40f1af3d22b2b06494 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:15:57 +0100 Subject: [PATCH 34/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'bob=5Fparty/?= =?UTF-8?q?Dockerfile'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bob_party/Dockerfile b/bob_party/Dockerfile index 2fe3e5b..7a49595 100644 --- a/bob_party/Dockerfile +++ b/bob_party/Dockerfile @@ -5,7 +5,7 @@ FROM node:latest # Install app dependencies # A wildcard is used to ensure both package.json AND package-lock.json are copied # where available (npm@5+) -COPY package*.json ./ +COPY package*.json . RUN yarn # If you are building your code for production From 40f20f68f18bbec1e35941eec8b4b7bc08cf15e0 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:16:54 +0100 Subject: [PATCH 35/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'bob=5Fparty/?= =?UTF-8?q?Dockerfile'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bob_party/Dockerfile b/bob_party/Dockerfile index 7a49595..7d65d9c 100644 --- a/bob_party/Dockerfile +++ b/bob_party/Dockerfile @@ -15,4 +15,5 @@ RUN yarn COPY bob_party/server.js . EXPOSE 8080 -CMD [ "node", "server.js" ] \ No newline at end of file +CMD [ "ls" ] +#CMD [ "node", "server.js" ] \ No newline at end of file From a1ba063570d44de1fb89d514113a71a59b4806a3 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:17:10 +0100 Subject: [PATCH 36/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'bob=5Fparty/?= =?UTF-8?q?Dockerfile'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bob_party/Dockerfile b/bob_party/Dockerfile index 7d65d9c..e7f2b4a 100644 --- a/bob_party/Dockerfile +++ b/bob_party/Dockerfile @@ -5,7 +5,7 @@ FROM node:latest # Install app dependencies # A wildcard is used to ensure both package.json AND package-lock.json are copied # where available (npm@5+) -COPY package*.json . +COPY bob_party/package*.json . RUN yarn # If you are building your code for production From db27e273516ae583a257a97f6afb183125a0c3c9 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:18:19 +0100 Subject: [PATCH 37/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'bob=5Fparty/?= =?UTF-8?q?Dockerfile'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bob_party/Dockerfile b/bob_party/Dockerfile index e7f2b4a..8b19375 100644 --- a/bob_party/Dockerfile +++ b/bob_party/Dockerfile @@ -12,7 +12,7 @@ RUN yarn # RUN npm ci --only=production # Bundle app source -COPY bob_party/server.js . +COPY bob_party/server.js ./ EXPOSE 8080 CMD [ "ls" ] From f33313b1ee25820ec4e756b17c93b00ff98d97b1 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:19:30 +0100 Subject: [PATCH 38/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'bob=5Fparty/?= =?UTF-8?q?Dockerfile'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bob_party/Dockerfile b/bob_party/Dockerfile index 8b19375..668bbab 100644 --- a/bob_party/Dockerfile +++ b/bob_party/Dockerfile @@ -5,14 +5,14 @@ FROM node:latest # Install app dependencies # A wildcard is used to ensure both package.json AND package-lock.json are copied # where available (npm@5+) -COPY bob_party/package*.json . +COPY bob_party/package*.json ./ RUN yarn # If you are building your code for production # RUN npm ci --only=production # Bundle app source -COPY bob_party/server.js ./ +COPY bob_party/server.js . EXPOSE 8080 CMD [ "ls" ] From edd1e50a11305c26e4e65c86517cd3e5b4970b88 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:22:11 +0100 Subject: [PATCH 39/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'bob=5Fparty/?= =?UTF-8?q?Dockerfile'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bob_party/Dockerfile b/bob_party/Dockerfile index 668bbab..da49e43 100644 --- a/bob_party/Dockerfile +++ b/bob_party/Dockerfile @@ -15,5 +15,4 @@ RUN yarn COPY bob_party/server.js . EXPOSE 8080 -CMD [ "ls" ] -#CMD [ "node", "server.js" ] \ No newline at end of file +CMD [ "node", "server.js" ] \ No newline at end of file From 6156b5fec7191f2a1a55e5f463de8d12fe0a8140 Mon Sep 17 00:00:00 2001 From: Thomas CHAZOT Date: Tue, 10 Jan 2023 21:35:35 +0100 Subject: [PATCH 40/40] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'bob=5Fparty/?= =?UTF-8?q?Dockerfile'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bob_party/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bob_party/Dockerfile b/bob_party/Dockerfile index da49e43..04e680c 100644 --- a/bob_party/Dockerfile +++ b/bob_party/Dockerfile @@ -14,5 +14,6 @@ RUN yarn # Bundle app source COPY bob_party/server.js . -EXPOSE 8080 -CMD [ "node", "server.js" ] \ No newline at end of file +EXPOSE 3000 +CMD [ "node", "server.js" ] +CMD [ "cat", "server.js" ] \ No newline at end of file