From 7cba6fc7ef4bf985e54619085e4eb7686f517470 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Tue, 3 Jan 2023 16:15:11 +0000 Subject: [PATCH] fix login flow --- backend/bang/players.py | 3 ++- backend/server.py | 2 +- frontend/src/components/Menu.vue | 19 +++++++++++-------- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/backend/bang/players.py b/backend/bang/players.py index 2b38a47..042c828 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -50,7 +50,8 @@ class Player: if r.status_code == 200: res = r.json() self.avatar = f'https://cdn.discordapp.com/avatars/{res["id"]}/{res["avatar"]}.png' - self.sio.emit('chat_message', room=self.game.name, data=f'_change_username|{self.name}|{res["username"]}') + if self.game: + self.sio.emit('chat_message', room=self.game.name, data=f'_change_username|{self.name}|{res["username"]}') self.name = res['username'] self.discord_id = res['id'] if self.is_admin(): diff --git a/backend/server.py b/backend/server.py index 65ce780..0e98f4e 100644 --- a/backend/server.py +++ b/backend/server.py @@ -96,7 +96,7 @@ def set_username(sid, username): username = username["name"] print(f'{sid} changed username to {username}') prev = ses.name - if len([p for p in ses.game.players if p.name == username]) > 0: + if ses.game and len([p for p in ses.game.players if p.name == username]) > 0: ses.name = f"{username}_{random.randint(0,100)}" else: ses.name = username diff --git a/frontend/src/components/Menu.vue b/frontend/src/components/Menu.vue index 12716c4..7fa622d 100644 --- a/frontend/src/components/Menu.vue +++ b/frontend/src/components/Menu.vue @@ -115,7 +115,7 @@ export default { discord_auth_succ(data) { if (data.access_token) { localStorage.setItem('discord_token', data.access_token) - this.$$router.push({path:'/'}) + this.login() } }, }, @@ -157,13 +157,7 @@ export default { init() { location.reload(); }, - }, - mounted() { - if (this.$route.query.code) { - this.$socket.emit('discord_auth', {code:this.$route.query.code, origin:window.location.origin}) - } - else if (localStorage.getItem('discord_token')) { - //get username from discord + login() { fetch('https://discordapp.com/api/users/@me', { headers: { 'Authorization': 'Bearer ' + localStorage.getItem('discord_token') @@ -179,8 +173,17 @@ export default { }).catch(err => { console.error(err) localStorage.removeItem('discord_token') + this.$router.replace({query: []}) }) } + }, + mounted() { + if (localStorage.getItem('discord_token')) { + this.login() + } else if (this.$route.query.code) { + this.$socket.emit('discord_auth', {code:this.$route.query.code, origin:window.location.origin}) + this.$router.replace({query: []}) + } this.randomTip = `tip_${1+Math.floor(Math.random() * 8)}` if (localStorage.getItem('username')) this.username = localStorage.getItem('username')