From a778ddf361ee208d1e19d4f5c0ed157be1e75ba8 Mon Sep 17 00:00:00 2001 From: Peter Date: Sat, 9 Sep 2023 20:59:45 -0400 Subject: [PATCH] Have auth check if discord user id is an active manager id --- src/components/NavBar.vue | 9 +++++---- src/services/authenticationService.ts | 8 ++++++-- src/views/PlayerView.vue | 5 ++--- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue index afe7048..4676107 100644 --- a/src/components/NavBar.vue +++ b/src/components/NavBar.vue @@ -81,6 +81,7 @@ export default { name: 'NavBar', data() { return { + isAuthenticated: false as Boolean, userTeam: undefined as Team | undefined, players: [] as Player[], searchPlayerName: undefined @@ -281,9 +282,6 @@ export default { sortedPlayerNames(): string[] { return this.players.sort((p1, p2) => p2.wara - p1.wara).map(p => p.name) }, - isAuthenticated(): boolean { - return isDiscordAuthenticated() - }, ownerId(): string | undefined { return getOwnerId() } @@ -302,7 +300,10 @@ export default { authenticate() }, async completeAuthentication(): Promise { - if (this.ownerId) return + if (await isDiscordAuthenticated() || this.isAuthenticated) { + this.isAuthenticated = true + return + } completeAuthentication() }, diff --git a/src/services/authenticationService.ts b/src/services/authenticationService.ts index bbca375..6730235 100644 --- a/src/services/authenticationService.ts +++ b/src/services/authenticationService.ts @@ -1,3 +1,4 @@ +import { fetchActiveTeamByOwnerId } from './teamsService' import { SITE_URL } from './utilities' export function authenticate(): void { @@ -9,8 +10,11 @@ export function authenticate(): void { window.location.href = `https://discord.com/oauth2/authorize?client_id=${clientID}&redirect_uri=${redirectURI}&response_type=token&scope=${scope}` } -export function isDiscordAuthenticated(): boolean { - return !!getOwnerId() +export async function isDiscordAuthenticated(): Promise { + const ownerId: string | undefined = getOwnerId() + if (!ownerId) return false + + return !!(await fetchActiveTeamByOwnerId(ownerId)) } export function getOwnerId(): string | undefined { diff --git a/src/views/PlayerView.vue b/src/views/PlayerView.vue index 6d7ccfb..be4bfcb 100644 --- a/src/views/PlayerView.vue +++ b/src/views/PlayerView.vue @@ -308,6 +308,7 @@ export default { name: "PlayerView", data() { return { + isAuthenticated: false as Boolean, player: undefined as Player | undefined, last2Decisions: [] as Decision[], regularSeasonBattingStats: [] as BattingStat[], @@ -330,9 +331,6 @@ export default { isBatter(): boolean { return !this.player?.pos_1.includes('P') }, - isAuthenticated(): boolean { - return isDiscordAuthenticated() - }, teamAbbreviation(): string | undefined { return this.player?.team?.abbrev }, @@ -429,6 +427,7 @@ export default { }, methods: { async fetchData(): Promise { + this.isAuthenticated = await isDiscordAuthenticated() this.player = await this.tryFetchPlayerByNameForAnySeason(this.seasonNumber, this.playerName) if (!this.player) return