login functionality + home page mock
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import { defineStore } from "pinia";
|
||||
|
||||
export const useAuthStore = defineStore("authStore", () => {
|
||||
const token = useCookie("auth_token", { maxAge: 60 * 15 });
|
||||
const user = useCookie("auth_user", { maxAge: 60 * 15 });
|
||||
|
||||
if (process.client) {
|
||||
token.value = localStorage.getItem("auth_token");
|
||||
|
||||
const savedUser = localStorage.getItem("auth_user");
|
||||
if (savedUser) {
|
||||
try {
|
||||
user.value = JSON.parse(savedUser);
|
||||
} catch (e) {
|
||||
console.error("Failed to parse user from storage", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
watch([token, user], ([newToken, newUser]) => {
|
||||
if (!process.client) return;
|
||||
|
||||
if (newToken) {
|
||||
localStorage.setItem("auth_token", newToken);
|
||||
} else {
|
||||
localStorage.removeItem("auth_token");
|
||||
}
|
||||
|
||||
if (newUser) {
|
||||
localStorage.setItem("auth_user", JSON.stringify(newUser));
|
||||
} else {
|
||||
localStorage.removeItem("auth_user");
|
||||
}
|
||||
}, { deep: true });
|
||||
|
||||
function logout() {
|
||||
token.value = null;
|
||||
user.value = null;
|
||||
}
|
||||
|
||||
return { token, user, logout };
|
||||
});
|
||||
Reference in New Issue
Block a user