From 433c4f42a5fb4d3e70b9ef9acb84e2ecfa368075 Mon Sep 17 00:00:00 2001 From: Mlcarvalho1 Date: Wed, 27 May 2026 21:31:01 -0300 Subject: [PATCH] fix: corrigir auth em game store e evitar logout no refresh - Router usa isAuthenticated (localStorage) em vez de auth.check() que fazia round-trip ao servidor e deslogava se houvesse falha - game.ts e CharacterView substituem fetch raw por api() que injeta Bearer token automaticamente, corrigindo erro 401/failed no personagem Co-Authored-By: Claude Sonnet 4.6 --- apps/web/src/router/index.ts | 5 ++--- apps/web/src/stores/game.ts | 9 ++++----- apps/web/src/views/CharacterView.vue | 14 +++++++------- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/apps/web/src/router/index.ts b/apps/web/src/router/index.ts index f278e0e..0eeef82 100644 --- a/apps/web/src/router/index.ts +++ b/apps/web/src/router/index.ts @@ -54,11 +54,10 @@ const router = createRouter({ ], }) -router.beforeEach(async (to) => { +router.beforeEach((to) => { if (to.meta.public) return true const auth = useAuthStore() - const ok = await auth.check() - if (!ok) return { name: 'login' } + if (!auth.isAuthenticated) return { name: 'login' } }) export default router diff --git a/apps/web/src/stores/game.ts b/apps/web/src/stores/game.ts index ceb020e..e76e7c2 100644 --- a/apps/web/src/stores/game.ts +++ b/apps/web/src/stores/game.ts @@ -1,5 +1,6 @@ import { defineStore } from 'pinia' import { ref, computed } from 'vue' +import { api } from '@/services/api' import spriteData from '@/assets/sprite-data.json' export interface PlayerProfile { @@ -59,21 +60,19 @@ export const useGameStore = defineStore('game', () => { async function fetchSummary() { loading.value = true try { - const res = await fetch('/api/game/summary') - if (!res.ok) throw new Error('failed') - summary.value = await res.json() + summary.value = await api.get('/game/summary') } finally { loading.value = false } } async function claimQuest(playerQuestId: number) { - await fetch(`/api/game/quests/${playerQuestId}/claim`, { method: 'POST' }) + await api.post(`/game/quests/${playerQuestId}/claim`, {}) await fetchSummary() } async function equipCosmetic(cosmeticId: number) { - await fetch(`/api/game/cosmetics/${cosmeticId}/equip`, { method: 'POST' }) + await api.post(`/game/cosmetics/${cosmeticId}/equip`, {}) await fetchSummary() } diff --git a/apps/web/src/views/CharacterView.vue b/apps/web/src/views/CharacterView.vue index 396bd73..c4252ba 100644 --- a/apps/web/src/views/CharacterView.vue +++ b/apps/web/src/views/CharacterView.vue @@ -131,6 +131,7 @@