add login fluxo

This commit is contained in:
LeoMortari
2025-09-15 18:27:02 -03:00
parent 54fc9f400b
commit 8577add91e
4 changed files with 49 additions and 24 deletions

View File

@@ -4,14 +4,15 @@
"version": "0.0.1",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
"dev": "cross-env NODE_ENV=development vite",
"build": "cross-env NODE_ENV=production vite build",
"preview": "cross-env NODE_ENV=production vite preview"
},
"dependencies": {
"@quasar/extras": "1.17.0",
"@vee-validate/zod": "4.15.1",
"axios": "1.11.0",
"cross-env": "10.0.0",
"dayjs": "1.11.13",
"js-cookie": "3.0.5",
"lodash": "4.17.21",

18
src/config/axios.js Normal file
View File

@@ -0,0 +1,18 @@
import axios from "axios";
export const API = axios.create({
baseURL:
process.env.NODE_ENV === "development"
? "https://api.clipperia.com.br"
: "http://nestjs:3000",
});
API.interceptors.request.use((config) => {
const token = localStorage.getItem("token");
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});

View File

@@ -13,9 +13,9 @@
<div class="q-pa-md">
<q-form @submit.prevent="handleLogin" class="q-mt-lg">
<q-input
v-model="email"
type="email"
label="E-mail"
v-model="username"
type="text"
label="Username"
lazy-rules
:rules="[(val) => !!val || 'Campo obrigatório']"
class="q-mb-md"
@@ -23,7 +23,7 @@
filled
>
<template v-slot:prepend>
<q-icon name="mail" />
<q-icon name="person" />
</template>
</q-input>
@@ -79,6 +79,7 @@
<script>
import Button from "@components/Button";
import { API } from "@config/axios";
export default {
name: "LoginView",
@@ -88,7 +89,7 @@ export default {
data() {
return {
leftDrawerOpen: true,
email: "",
username: "",
password: "",
showPassword: false,
error: "",
@@ -96,28 +97,32 @@ export default {
};
},
methods: {
handleLogin() {
this.error = "";
if (!this.email || !this.password) {
async handleLogin() {
if (!this.username || !this.password) {
this.error = "Por favor, preencha todos os campos";
return;
}
this.loading = true;
try {
this.loading = true;
// setTimeout(() => {
// try {
// localStorage.setItem("auth_token", "dummy_token");
const form = new FormData();
// const redirectPath = this.$route.query.redirect || "/";
// this.$router.push(redirectPath);
// } catch (err) {
// this.error = err.message || "Erro ao fazer login. Tente novamente.";
// } finally {
// this.loading = false;
// }
// }, 1000);
form.append("username", this.username);
form.append("password", this.password);
const { data } = API.post("/auth/login", form, {
headers: {
"Content-Type": "multipart/form-data",
},
});
console.log(data);
} catch (error) {
console.log(error);
} finally {
this.loading = false;
}
},
},
mounted() {

View File

@@ -9,6 +9,7 @@ export default defineConfig({
resolve: {
alias: {
"@": path.resolve(__dirname, "src/"),
"@config": path.resolve(__dirname, "src/config/"),
"@assets": path.resolve(__dirname, "src/assets/"),
"@components": path.resolve(__dirname, "src/components/"),
"@utils": path.resolve(__dirname, "src/utils/"),