diff --git a/containers/api/src/app.controller.ts b/containers/api/src/app.controller.ts index 6104ba99..208ea123 100644 --- a/containers/api/src/app.controller.ts +++ b/containers/api/src/app.controller.ts @@ -34,11 +34,11 @@ export class AppController { kFactor = 36; scaleFactor = 400; -//======================================================================================================== -//======================================================================================================== -// User -//======================================================================================================== -//======================================================================================================== + //======================================================================================================== + //======================================================================================================== + // User + //======================================================================================================== + //======================================================================================================== @UseGuards(JwtAuthGuard) @Get('/profile') @@ -46,6 +46,20 @@ export class AppController { return await this.userService.findOne(req.user.username); } + @UseGuards(JwtAuthGuard) + @Post('/logout') + async logout(@Request() req, @Body() data: any) { + const user = await this.userService.findOne(req.user.username) + // return await this.userService.refuseInvite(user, data.username); + if (!user) + return; + if (user.sessionNumber === 1) { + user.status = 0; + } + user.sessionNumber--; + this.userService.save(user); + } + @UseGuards(JwtAuthGuard) @Post('/user') async getUser(@Body() data: any) { @@ -138,16 +152,16 @@ export class AppController { await this.userService.save(user); } - @UseGuards(JwtAuthGuard) - @Post('/nickname') - async setNickname(@Request() req, @Body() data: any) { - const taken = await this.userService.findNickname(data.nickname) - if (taken) - return (0); - let user = await this.userService.findOne(req.user.username) - user.nickname = data.nickname; - return await this.userService.save(user); - } + @UseGuards(JwtAuthGuard) + @Post('/nickname') + async setNickname(@Request() req, @Body() data: any) { + const taken = await this.userService.findNickname(data.nickname) + if (taken) + return (0); + let user = await this.userService.findOne(req.user.username) + user.nickname = data.nickname; + return await this.userService.save(user); + } @UseGuards(JwtAuthGuard) @Post('/picture') @@ -161,21 +175,21 @@ export class AppController { return await this.userService.save(user); } - @UseGuards(JwtAuthGuard) - @Post('/getPicture') - async getProfilPicture(@Body() data: any) { - return await this.userService.getPic(data.username) - } + @UseGuards(JwtAuthGuard) + @Post('/getPicture') + async getProfilPicture(@Body() data: any) { + return await this.userService.getPic(data.username) + } - @UseGuards(JwtAuthGuard) - @Post('/addSession') - async addSession(@Request() req) { - const user = await this.userService.findOne(req.user.username); - user.sessionNumber += 1; - if (user.status !== 2) - user.status = 1; - await this.userService.save(user); - } + @UseGuards(JwtAuthGuard) + @Post('/addSession') + async addSession(@Request() req) { + const user = await this.userService.findOne(req.user.username); + user.sessionNumber += 1; + if (user.status !== 2) + user.status = 1; + await this.userService.save(user); + } //======================================================================================================== //======================================================================================================== @@ -183,37 +197,38 @@ export class AppController { //======================================================================================================== //======================================================================================================== - @UseGuards(JwtAuthGuard) - @Post('/win') - async addWin(@Request() req, @Body() data: any) { - const user = await this.userService.findOne(req.user.username); - user.win++; - const Esp = 1 / (1 + Math.pow(10, (data.opRank - user.rank) / this.scaleFactor)) - const newRank = user.rank + this.kFactor * (1 - Esp); - user.rank = newRank; - const newMatch = new MatchLog; - newMatch.myScore = data.myScore; - newMatch.opScore = data.opScore; - newMatch.opponent = data.opName; - newMatch.parent = user; - await this.userService.saveChild(user, newMatch); - } + @UseGuards(JwtAuthGuard) + @Post('/win') + async addWin(@Request() req, @Body() data: any) { + const user = await this.userService.findOne(req.user.username); + user.win++; + const Esp = 1 / (1 + Math.pow(10, (data.opRank - user.rank) / this.scaleFactor)) + const newRank = user.rank + this.kFactor * (1 - Esp); + user.rank = newRank; + const newMatch = new MatchLog; + newMatch.myScore = data.myScore; + newMatch.opScore = data.opScore; + newMatch.opponent = data.opName; + newMatch.parent = user; + await this.userService.saveChild(user, newMatch); + } - @UseGuards(JwtAuthGuard) - @Post('/loss') - async addLoss(@Request() req, @Body() data: any) { - const user = await this.userService.findOne(req.user.username); - user.loss++; - const Esp = 1 / (1 + Math.pow(10, (data.opRank - user.rank) / this.scaleFactor)) - const newRank = user.rank + this.kFactor * (0 - Esp); - user.rank = newRank; - const newMatch = new MatchLog; - newMatch.myScore = data.myScore; - newMatch.opScore = data.opScore; - newMatch.opponent = data.opName; - newMatch.parent = user; - await this.userService.saveChild(user, newMatch); - } + @UseGuards(JwtAuthGuard) + @Post('/loss') + async addLoss(@Request() req, @Body() data: any) { + const user = await this.userService.findOne(req.user.username); + user.loss++; + user.status = 1; + const Esp = 1 / (1 + Math.pow(10, (data.opRank - user.rank) / this.scaleFactor)) + const newRank = user.rank + this.kFactor * (0 - Esp); + user.rank = newRank; + const newMatch = new MatchLog; + newMatch.myScore = data.myScore; + newMatch.opScore = data.opScore; + newMatch.opponent = data.opName; + newMatch.parent = user; + await this.userService.saveChild(user, newMatch); + } @UseGuards(JwtAuthGuard) @Get('/rank') @@ -222,127 +237,119 @@ export class AppController { return user.rank; } - @Get('/ranking') - async getRanking() - { - return await this.userService.getRanking(); - } + @Get('/ranking') + async getRanking() { + return await this.userService.getRanking(); + } - @UseGuards(JwtAuthGuard) - @Post('/partyInvite') - async partyInvite(@Request() req, @Body() data: any) - { + @UseGuards(JwtAuthGuard) + @Post('/partyInvite') + async partyInvite(@Request() req, @Body() data: any) { const user = await this.userService.findOne(data.username); user.partyInvite = user.partyInvite || []; user.partyInvite.push({ username: req.user.username, gameId: data.gameId }); await this.userService.save(user); - } + } - @UseGuards(JwtAuthGuard) - @Get('/partyInvite') - async getPartyInvite(@Request() req) - { + @UseGuards(JwtAuthGuard) + @Get('/partyInvite') + async getPartyInvite(@Request() req) { const user = await this.userService.findOne(req.user.username); user.partyInvite = user.partyInvite || []; return user.partyInvite; } - @UseGuards(JwtAuthGuard) - @Post('/deleteInvite') - async deleteInvite(@Request() req, @Body() data: any) - { - const user = await this.userService.findOne(req.user.username); - user.partyInvite = user.partyInvite.filter((item) => Object.values(item)[1] !== data.username); - this.userService.save(user); - } + @UseGuards(JwtAuthGuard) + @Post('/deleteInvite') + async deleteInvite(@Request() req, @Body() data: any) { + const user = await this.userService.findOne(req.user.username); + user.partyInvite = user.partyInvite.filter((item) => Object.values(item)[1] !== data.username); + this.userService.save(user); + } - @UseGuards(JwtAuthGuard) - @Post('/history') - async getHistory(@Body() data: any) - { - return await this.userService.getHistory(data.username); - } + @UseGuards(JwtAuthGuard) + @Post('/history') + async getHistory(@Body() data: any) { + return await this.userService.getHistory(data.username); + } - @UseGuards(JwtAuthGuard) - @Post('/quit') - async setOffline(@Request() req) { - const user = await this.userService.findOne(req.user.username); - user.sessionNumber--; - if (!user.sessionNumber) - user.status = 0; - await this.userService.save(user); - } + @UseGuards(JwtAuthGuard) + @Post('/quit') + async setOffline(@Request() req) { + const user = await this.userService.findOne(req.user.username); + if (!user) + return; + user.sessionNumber--; + if (!user.sessionNumber) + user.status = 0; + await this.userService.save(user); + } -//======================================================================================================== -//======================================================================================================== -// Auth -//======================================================================================================== -//======================================================================================================== + //======================================================================================================== + //======================================================================================================== + // Auth + //======================================================================================================== + //======================================================================================================== -@Redirect('http://' + process.env.BASE_URL + '/token', 302) -@Get('auth/login') - async login2(@Req() request: Request) { - const url = request.url; - const user = await this.loginClass.Login42(url); - const data = await this.authService.login(user); - const myJSON = JSON.stringify(data); - const token = (await data).access_token; - await this.userService.save(user); - return { url: 'http://' + process.env.BASE_URL + `/token?data=${encodeURIComponent(JSON.stringify(token))}` }; - } + @Redirect('http://' + process.env.BASE_URL + '/token', 302) + @Get('auth/login') + async login2(@Req() request: Request) { + const url = request.url; + const user = await this.loginClass.Login42(url); + const data = await this.authService.login(user); + const myJSON = JSON.stringify(data); + const token = (await data).access_token; + await this.userService.save(user); + return { url: 'http://' + process.env.BASE_URL + `/token?data=${encodeURIComponent(JSON.stringify(token))}` }; + } - @UseGuards(JwtAuthGuard) - @Get('/2fa') - async get2fa(@Request() req) - { - const user = await this.userService.findOne(req.user.username); - return user.otp_enabled; - } + @UseGuards(JwtAuthGuard) + @Get('/2fa') + async get2fa(@Request() req) { + const user = await this.userService.findOne(req.user.username); + return user.otp_enabled; + } - @UseGuards(JwtAuthGuard) - @Post('/otp') - async createOTP(@Request() req) - { - const user = await this.userService.findOne(req.user.username); - const res = await generateOTP(user); - await this.userService.save(user); - return res; - } + @UseGuards(JwtAuthGuard) + @Post('/otp') + async createOTP(@Request() req) { + const user = await this.userService.findOne(req.user.username); + const res = await generateOTP(user); + await this.userService.save(user); + return res; + } - @UseGuards(JwtAuthGuard) - @Post('/verifyOtp') - async verifyOTP(@Request() req, @Body() data: any) - { - const user = await this.userService.findOne(req.user.username); - const res = await VerifyOTP(user, data.token) - await this.userService.save(user); - return res - } + @UseGuards(JwtAuthGuard) + @Post('/verifyOtp') + async verifyOTP(@Request() req, @Body() data: any) { + const user = await this.userService.findOne(req.user.username); + const res = await VerifyOTP(user, data.token) + await this.userService.save(user); + return res + } - @UseGuards(JwtAuthGuard) - @Post('/validateOtp') - async validateOTP(@Request() req, @Body() data: any) - { - const user = await this.userService.findOne(req.user.username); - const res = await ValidateOTP(user, data.token) - return res - } + @UseGuards(JwtAuthGuard) + @Post('/validateOtp') + async validateOTP(@Request() req, @Body() data: any) { + const user = await this.userService.findOne(req.user.username); + const res = await ValidateOTP(user, data.token) + return res + } - @UseGuards(JwtAuthGuard) - @Post('/deleteOtp') - async deleteOTP(@Request() req, @Body() data: any) - { - const user = await this.userService.findOne(req.user.username); - user.otp_verified = false; - await this.userService.save(user); - } + @UseGuards(JwtAuthGuard) + @Post('/deleteOtp') + async deleteOTP(@Request() req, @Body() data: any) { + const user = await this.userService.findOne(req.user.username); + user.otp_verified = false; + await this.userService.save(user); + } -//======================================================================================================== -//======================================================================================================== -// Chat -//======================================================================================================== -//======================================================================================================== + //======================================================================================================== + //======================================================================================================== + // Chat + //======================================================================================================== + //======================================================================================================== @UseGuards(JwtAuthGuard) @Post('/conv') @@ -418,9 +425,12 @@ export class AppController { @UseGuards(JwtAuthGuard) @Post('/verifyPassword') - async verifyPassword(@Body() data: any) { - return await this.chatService.verifyPassword(data.convId, data.password) + async verifyPassword(@Request() req, @Body() data: any) { + return await this.chatService.verifyPassword(data.convId, data.password, req.user.username) } + // async verifyPassword(@Body() data: any) { + // return await this.chatService.verifyPassword(data.convId, data.password) + // } @UseGuards(JwtAuthGuard) @Post('/inviteConv') diff --git a/containers/api/src/chat/chat.service.ts b/containers/api/src/chat/chat.service.ts index 39bd418a..df00b6db 100644 --- a/containers/api/src/chat/chat.service.ts +++ b/containers/api/src/chat/chat.service.ts @@ -17,159 +17,167 @@ import { Conv } from '../model/chat.entity'; import { Message } from '../model/chat.entity'; import * as bcrypt from 'bcrypt'; - + @Injectable() export class ChatService { - constructor(@InjectRepository(Conv) private chatRepository: Repository, - @InjectRepository(Message) private messageRepository: Repository, - ) {} - - async save(conv: Conv): Promise { - return await this.chatRepository.save(conv); -} + constructor(@InjectRepository(Conv) private chatRepository: Repository, + @InjectRepository(Message) private messageRepository: Repository, + ) { } -async findAll(): Promise { - return await this.chatRepository.find(); -} - - async createConv(conv: Conv): Promise { - return await this.chatRepository.save(conv); - } - - async getConv(username: string): Promise{ - const convs = await this.chatRepository.query("SELECT * FROM \"conv\" WHERE $1 = ANY (ARRAY[members]);", [username]) - return convs; -} - -async findConv(number: number){ - const conv = await this.chatRepository.findOneBy({id: number}) - return conv; -} - - async createMessage(message: Message, username: string): Promise { - const conv = await this.findConv(message.convid); - if (conv.banned && conv.banned.find(item => item === username)) - return ; - if (conv.muted && conv.muted.find(item => item === username)) - return ; - return await this.messageRepository.save(message); - } - - async isAllowed(convId: number, username: string) { - const conv = await this.findConv(convId); - if (conv.banned && conv.banned.find(item => item === username)) - return (0); - if (conv.muted && conv.muted.find(item => item === username)) - return (0); - return (1); - } - - async getMessages(convId: number): Promise { - const convs = await this.chatRepository - .query("SELECT * FROM \"message\" WHERE $1 = message.convid;", [convId]) - - return (convs) -} - -async banUser(convId: number, username: string) { - const conv = await this.findConv(convId); - - if (conv.owner === username) - return (0); - conv.banned = conv.banned || []; - if (conv.banned.find(item => item === username)) - { - conv.banned = conv.banned.filter((item) => item !== username); - this.save(conv); - return (2); + async save(conv: Conv): Promise { + return await this.chatRepository.save(conv); } - conv.members = conv.members.filter((item) => item !== username); - conv.banned.push(username); - this.save(conv); - return (1); -} -async inviteUser(convId: number, username: string) { - const conv = await this.findConv(convId); + async findAll(): Promise { + return await this.chatRepository.find(); + } - if (conv.members.find(item => item === username)) - return (1); - conv.members.push(username); - this.save(conv); -} + async createConv(conv: Conv): Promise { + return await this.chatRepository.save(conv); + } + async getConv(username: string): Promise { + const convs = await this.chatRepository.query("SELECT * FROM \"conv\" WHERE $1 = ANY (ARRAY[members]);", [username]) + return convs; + } + async findConv(number: number) { + const conv = await this.chatRepository.findOneBy({ id: number }) + return conv; + } -async setPassword(convId: number, password: string) { - const conv = await this.findConv(convId); - const saltRounds = 10; - const hashedPassword = await bcrypt.hash(password, saltRounds); - conv.password = hashedPassword - this.save(conv); -} + async createMessage(message: Message, username: string): Promise { + const conv = await this.findConv(message.convid); + if (conv.banned && conv.banned.find(item => item === username)) + return; + if (conv.muted && conv.muted.find(item => item === username)) + return; + return await this.messageRepository.save(message); + } -async verifyPassword(convId: number, password: string) { - const conv = await this.findConv(convId); - return await bcrypt.compare(password, conv.password); -} - -async muteUser(convId: number, username: string, time: string) { - const conv = await this.findConv(convId); - const intTime = parseInt(time) * 1000; - if (conv.owner === username) - return (0); - conv.muted = conv.muted || []; - if (conv.muted.find(item => item === username)) + async isAllowed(convId: number, username: string) { + const conv = await this.findConv(convId); + if (conv.banned && conv.banned.find(item => item === username)) + return (0); + if (conv.muted && conv.muted.find(item => item === username)) + return (0); return (1); - conv.muted.push(username); - this.save(conv); + } - setTimeout(() => { - conv.muted = conv.muted.filter((item) => item !== username) + async getMessages(convId: number): Promise { + const convs = await this.chatRepository + .query("SELECT * FROM \"message\" WHERE $1 = message.convid;", [convId]) + + return (convs) + } + + async banUser(convId: number, username: string) { + const conv = await this.findConv(convId); + + if (conv.owner === username) + return (0); + conv.banned = conv.banned || []; + if (conv.banned.find(item => item === username)) { + conv.banned = conv.banned.filter((item) => item !== username); + this.save(conv); + return (2); + } + conv.members = conv.members.filter((item) => item !== username); + conv.banned.push(username); this.save(conv); - }, intTime); -} - -async setAdmin(convId: number, username: string) { - const conv = await this.findConv(convId); - - conv.admin = conv.admin || []; - if (conv.admin.find(item => item === username)) return (1); - conv.admin.push(username); - this.save(conv); -} + } -async isAdmin(convId: number, username: string) { - const conv = await this.findConv(convId); + async inviteUser(convId: number, username: string) { + const conv = await this.findConv(convId); - conv.admin = conv.admin || []; - if (conv.admin.find(item => item === username)) - return (1); - console.log("nope"); - return (0); -} + if (conv.members.find(item => item === username)) + return (1); + conv.members.push(username); + this.save(conv); + } -async setPrivate(convId: number, bool: boolean) { - const conv = await this.findConv(convId); - console.log("bool= ", bool); - conv.private = bool; - this.save(conv); -} -async setName(convId: number, name: string) { - const conv = await this.findConv(convId); - conv.name = name; - this.save(conv); -} -async joinChannel(convId: number, username: string) { - const conv = await this.findConv(convId); - conv.members = conv.members || []; - if (conv.members.find(item => item === username)) - return ; - conv.members.push(username); - this.save(conv); -} + async setPassword(convId: number, password: string) { + const conv = await this.findConv(convId); + const saltRounds = 10; + const hashedPassword = await bcrypt.hash(password, saltRounds); + conv.password = hashedPassword + this.save(conv); + } + + // async verifyPassword(convId: number, password: string) { + async verifyPassword(convId: number, password: string, username: string) { + const conv = await this.findConv(convId); + // return await bcrypt.compare(password, conv.password); + const ret = await bcrypt.compare(password, conv.password); + if (ret === true) { + conv.members = conv.members || []; + conv.members.push(username); + this.save(conv); + } + return ret; + } +yy + + async muteUser(convId: number, username: string, time: string) { + const conv = await this.findConv(convId); + const intTime = parseInt(time) * 1000; + if (conv.owner === username) + return (0); + conv.muted = conv.muted || []; + if (conv.muted.find(item => item === username)) + return (1); + conv.muted.push(username); + this.save(conv); + + setTimeout(() => { + conv.muted = conv.muted.filter((item) => item !== username) + this.save(conv); + }, intTime); + } + + async setAdmin(convId: number, username: string) { + const conv = await this.findConv(convId); + + conv.admin = conv.admin || []; + if (conv.admin.find(item => item === username)) + return (1); + conv.admin.push(username); + this.save(conv); + } + + async isAdmin(convId: number, username: string) { + const conv = await this.findConv(convId); + + conv.admin = conv.admin || []; + if (conv.admin.find(item => item === username)) + return (1); + console.log("nope"); + return (0); + } + + async setPrivate(convId: number, bool: boolean) { + const conv = await this.findConv(convId); + console.log("bool= ", bool); + conv.private = bool; + this.save(conv); + } + + async setName(convId: number, name: string) { + const conv = await this.findConv(convId); + conv.name = name; + this.save(conv); + } + + async joinChannel(convId: number, username: string) { + const conv = await this.findConv(convId); + conv.members = conv.members || []; + if (conv.members.find(item => item === username)) + return; + conv.members.push(username); + this.save(conv); + } } diff --git a/containers/react/src/DataBase/DataRank.js b/containers/react/src/DataBase/DataRank.js deleted file mode 100644 index 1bdcaf5e..00000000 --- a/containers/react/src/DataBase/DataRank.js +++ /dev/null @@ -1,58 +0,0 @@ -export const Rank = [ - { - rank: '1', - name: 'jean', - }, - { - rank: '2', - name: 'marc', - }, - { - rank: '3', - name: 'dujardain', - }, - { - rank: '4', - name: 'mom', - }, - { - rank: '5', - name: 'fary', - }, - { - rank: '6', - name: 'aba', - }, - { - rank: '7', - name: 'preach', - }, - { - rank: '1', - name: 'jean', - }, - { - rank: '2', - name: 'marc', - }, - { - rank: '3', - name: 'dujardain', - }, - { - rank: '4', - name: 'mom', - }, - { - rank: '5', - name: 'fary', - }, - { - rank: '6', - name: 'aba', - }, - { - rank: '7', - name: 'preach', - }, -] \ No newline at end of file diff --git a/containers/react/src/DataBase/DataUserProfile.js b/containers/react/src/DataBase/DataUserProfile.js deleted file mode 100644 index 7563a575..00000000 --- a/containers/react/src/DataBase/DataUserProfile.js +++ /dev/null @@ -1,8 +0,0 @@ -import DefaultPic from '../assets/profile.jpg'; - -export const UserProfile = { - Pic: DefaultPic, - UserName: 'Dipper Ratman', - } - -// export default UserProfile \ No newline at end of file diff --git a/containers/react/src/DataBase/DummyDBWinLoss.js b/containers/react/src/DataBase/DummyDBWinLoss.js deleted file mode 100644 index c14f4fb3..00000000 --- a/containers/react/src/DataBase/DummyDBWinLoss.js +++ /dev/null @@ -1,37 +0,0 @@ -export const DBWinLoss = [ - { - title: 'Victory', - score: '10 - 6', - opponent: 'chef bandit' - }, - { - title: 'Defeat', - score: '9 - 10', - opponent: 'ex tueur' - }, - { - title: 'Victory', - score: '10 - 0', - opponent: 'tueur' - }, - { - title: 'Victory', - score: '10 - 9', - opponent: 'boulanger' - }, - { - title: 'Defeat', - score: '3 - 10', - opponent: 'charcutier' - }, - { - title: 'Deafet', - score: '9 - 10', - opponent: 'preach' - }, - { - title: 'Victory', - score: '10 - 9', - opponent: 'aba' - }, -] \ No newline at end of file diff --git a/containers/react/src/components/Profile/Logout.tsx b/containers/react/src/components/Profile/Logout.tsx index 81da718b..6f3e52cd 100644 --- a/containers/react/src/components/Profile/Logout.tsx +++ b/containers/react/src/components/Profile/Logout.tsx @@ -1,9 +1,18 @@ import React from "react"; - +import api from "../../script/axiosApi" function Logout(){ + const logout = async () =>{ + try { + await api.post("/logout") + } catch (err) { + console.log(err); + } + } + + logout(); localStorage.clear(); const path = 'http://' + process.env.REACT_APP_BASE_URL + '/'; // history(path, { replace: true }); diff --git a/containers/react/src/pages/2fa.tsx b/containers/react/src/pages/2fa.tsx index 166b1130..f417c465 100644 --- a/containers/react/src/pages/2fa.tsx +++ b/containers/react/src/pages/2fa.tsx @@ -1,146 +1,38 @@ -import React, { useCallback, useState, useEffect } from 'react'; +import React, { useState, useEffect } from 'react'; import api from '../script/axiosApi.tsx'; -// function DoubleAuth() { - -// // const enabled = await api.get("/2fa"); - -// // const response = await api.get("/2fa"); -// // const enabled = response.data; -// // console.log(`enable= ${enabled.data}`) -// // const enabled = 0; -// let enabled; - -// useEffect(() => { -// async function get2fa() -// { -// const response = await api.get("/2fa"); -// const enabled = response.data; -// console.log(`enable= ${enabled.data}`) -// } -// // const enabled = 0; -// }, []) - - - - // useEffect(() => { - // async function get2fa() - // { - // api.get('/api/QRcode', { responseType: 'blob' }) - // .then(response => { - // const reader = new FileReader(); - // reader.onloadend = () => { - // setImageSrc(reader.result); - // }; - // reader.readAsDataURL(response.data); - // }) - // .catch(error => { - // console.error(error); - // }); - - // } }, []); - -// // const [verificationCode, setVerificationCode] = useState(''); -// // const [invalidCode, setInvalidCode] = useState(false); - -// const handleSubmit = () => { -// // async (e) => { -// // e.preventDefault(); - -// // const result = await verifyOtp(verificationCode); - -// // if (result) return (window.location = '/'); - -// // setInvalidCode(true); -// // }, -// // [verificationCode] -// }; - -// let sourceCode - -// if (!enabled) -// { -// api.get('/QRcode') -// .then(response => { -// sourceCode = response.data; -// console.log(sourceCode); -// }) -// .catch(error => { -// console.error(error); -// }); -// } - -// return ( -//
-// {!enabled && ( -//
-//

Scan the QR code on your authenticator app

-// -//
-// )} - -//
-// {/* setVerificationCode(e.target.value)} -// /> */} - -// - -// {/* {invalidCode &&

Invalid verification code

} */} -//
-//
-// ); -// } - - -// import { toFileStream } from 'qrcode'; const DoubleAuth = () => { - const [imageSrc, setImageSrc] = useState(''); - + // const [imageSrc, setImageSrc] = useState(''); + const [imageSrc, setImageSrc] = useState(''); useEffect(() => { - async function getCode(){ - await api.get('/QRcode', { responseType: 'blob' }) - .then(response => { - const reader = new FileReader(); - reader.onloadend = () => { - setImageSrc(reader.result); - }; - reader.readAsDataURL(response.data); - }) - .catch(error => { - console.error(error); - }); - } - getCode(); -}, []); - - // return ( - //
- // {imageSrc && QR Code} - //
- // ); - - // + async function getCode() { + await api.get('/QRcode', { responseType: 'blob' }) + .then(response => { + const reader = new FileReader(); + if (!reader) + return; + reader.onloadend = () => { + setImageSrc(reader.result); + }; + reader.readAsDataURL(response.data); + }) + .catch(error => { + console.error(error); + }); + } + getCode(); + }, []); return (
-

Scan the QR code on your authenticator app

- {imageSrc && QR Code} -
- {/*
- -
*/} +

Scan the QR code on your authenticator app

+ {/* {imageSrc && QR Code} */} + {imageSrc && QR Code}
- ); + ); +}; - }; - - - export default DoubleAuth; \ No newline at end of file +export default DoubleAuth; \ No newline at end of file diff --git a/containers/react/src/pages/Social.tsx b/containers/react/src/pages/Social.tsx deleted file mode 100644 index df980ece..00000000 --- a/containers/react/src/pages/Social.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from "react"; - -function Social (){ - return ( -
je suis la partie social
- ) -} - -export default Social \ No newline at end of file diff --git a/containers/react/src/pages/canvas.tsx b/containers/react/src/pages/canvas.tsx index 02c03015..1bd43c1f 100644 --- a/containers/react/src/pages/canvas.tsx +++ b/containers/react/src/pages/canvas.tsx @@ -1,3 +1,4 @@ +import { useEffect } from 'react'; import api from '../script/axiosApi.tsx'; import io from 'socket.io-client'; @@ -9,6 +10,21 @@ interface GameProps { function DrawCanvas(option: number, gameParam: GameProps) { + // useEffect(() => { + // const handleBeforeUnload = async (event: { preventDefault: () => void; returnValue: string; }) => { + // try { + // await api.post("/status", {status: 1}); + // } catch (err) { + // console.log(err); + // } + // }; + + // window.addEventListener('beforeunload', handleBeforeUnload); + // return () => { + // window.removeEventListener('beforeunload', handleBeforeUnload); + // }; + // }, []); + console.log(`option= ${option}`); const superpowerModifier = option & 1; // Retrieves the superpower modifier const obstacleModifier = (option >> 1) & 1; // Retrieves the obstacle modifier @@ -38,7 +54,7 @@ function DrawCanvas(option: number, gameParam: GameProps) { } console.log("start function"); - const canvas = document.getElementById('myCanvas') as HTMLCanvasElement | null;; + const canvas = document.getElementById('myCanvas') as HTMLCanvasElement | null; if (!canvas) return ; @@ -433,6 +449,17 @@ socket.on('pong:hisPoint', (data) => { console.log(err) } } + else + { + const data = { + myScore: myScore, + opScore: 5, + opName: opName, + opRank: opRank, + }; + await api.post('/loss', data); + // await api.post('/status', {status: 1}); + } socket.emit('pong:disconnect', {id: myId}); window.location.replace("http://" + process.env.REACT_APP_BASE_URL + "/pong"); };