46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
import { defineStore } from "pinia";
|
|
|
|
import { fetchWrapper } from "@/api";
|
|
// import { router } from "@/router";
|
|
import { useAlertStore } from "@/stores";
|
|
|
|
const baseUrl = `${import.meta.env.VITE_API_URL}/api`;
|
|
|
|
export const useAuthStore = defineStore({
|
|
id: "auth",
|
|
state: () => ({
|
|
// initialize state from local storage to enable user to stay logged in
|
|
user: JSON.parse(localStorage.getItem("user")),
|
|
returnUrl: null,
|
|
}),
|
|
actions: {
|
|
async login(email, password) {
|
|
return fetchWrapper
|
|
.post(`${baseUrl}/login`, { email, password })
|
|
.then((response) => {
|
|
console.log("response: " + response);
|
|
|
|
console.log("user: " + response["success"]["token"]["plainTextToken"]);
|
|
|
|
// update pinia state
|
|
this.user = user;
|
|
|
|
// store user details and jwt in local storage to keep user logged in between page refreshes
|
|
// localStorage.setItem("user", JSON.stringify(user));
|
|
|
|
// redirect to previous url or default to home page
|
|
// router.push(this.returnUrl || "/");
|
|
})
|
|
.catch((error) => {
|
|
const alertStore = useAlertStore();
|
|
alertStore.error(error);
|
|
});
|
|
},
|
|
logout() {
|
|
// this.user = null;
|
|
// localStorage.removeItem("user");
|
|
// router.push("/account/login");
|
|
},
|
|
},
|
|
});
|