diff --git a/app/middleware/auth.ts b/app/middleware/auth.ts new file mode 100644 index 0000000..0e49242 --- /dev/null +++ b/app/middleware/auth.ts @@ -0,0 +1,7 @@ +export default defineNuxtRouteMiddleware(() => { + const token = useCookie('token') + + if (!token.value) { + return navigateTo('/login') + } +}) \ No newline at end of file diff --git a/app/pages/(auth)/criar-conta/index.vue b/app/pages/(auth)/criar-conta/index.vue index a746079..bef60f4 100644 --- a/app/pages/(auth)/criar-conta/index.vue +++ b/app/pages/(auth)/criar-conta/index.vue @@ -107,6 +107,7 @@ async function criarConta({ email, password }) { } $toast.success('Conta criada com sucesso!') + await navigateTo('/login') } catch { $toast.error('Erro ao criar conta. Tente novamente.') } finally { diff --git a/app/pages/(auth)/home/index.vue b/app/pages/(auth)/home/index.vue new file mode 100644 index 0000000..88b9d97 --- /dev/null +++ b/app/pages/(auth)/home/index.vue @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/app/pages/(auth)/login/index.vue b/app/pages/(auth)/login/index.vue index 55127e5..772805b 100644 --- a/app/pages/(auth)/login/index.vue +++ b/app/pages/(auth)/login/index.vue @@ -94,18 +94,27 @@ isLoading.value = true try { const res = await fetch('/auth/login', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ email, password }), + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ email, password }), }) + const data = await res.json() + if (!res.ok) { - const data = await res.json().catch(() => ({})) - $toast.error(data.message ?? 'Erro para efetuar o login. Tente novamente.') - return + const data = await res.json().catch(() => ({})) + $toast.error(data.message ?? 'Erro para efetuar o login. Tente novamente.') + return } + const token = useCookie('token') + if(data) token.value = data.access_token + $toast.success('Login realizado com sucesso!') + + await navigateTo('/home') } catch { $toast.error('Erro para efetuar o login. Tente novamente.') } finally {