feat(frontend): finished login form with validation
This commit is contained in:
@@ -1,16 +1,14 @@
|
||||
import {useRouter} from "@tanstack/react-router";
|
||||
import {useSessionStore} from "../store/sessionStore";
|
||||
import {useQueryClient} from "@tanstack/react-query";
|
||||
|
||||
export const useLogout = () => {
|
||||
const {clearSession} = useSessionStore();
|
||||
const router = useRouter();
|
||||
const queryClient = useQueryClient();
|
||||
const logout = async () => {
|
||||
router.invalidate();
|
||||
router.clearCache();
|
||||
await clearSession();
|
||||
queryClient.invalidateQueries();
|
||||
clearSession();
|
||||
|
||||
window.location.reload();
|
||||
};
|
||||
|
||||
|
||||
@@ -9,28 +9,31 @@ type User = {
|
||||
export type SessionState = {
|
||||
user: User | null;
|
||||
token: string | null;
|
||||
setSession: (user: SessionState["user"], token: string) => void;
|
||||
setSession: (user: User | null, token: string | null) => void;
|
||||
clearSession: () => void;
|
||||
};
|
||||
|
||||
export const useSessionStore = create<SessionState>((set) => {
|
||||
// Initialize from localStorage
|
||||
const storedUser = localStorage.getItem("user");
|
||||
// Initialize token from localStorage, but user remains in memory only
|
||||
const storedToken = localStorage.getItem("auth_token");
|
||||
|
||||
return {
|
||||
user: storedUser ? JSON.parse(storedUser) : null,
|
||||
user: null, // User is NOT stored in localStorage
|
||||
token: storedToken || null,
|
||||
|
||||
setSession: (user, token) => {
|
||||
localStorage.setItem("auth_token", token);
|
||||
//localStorage.setItem("user", JSON.stringify(user));
|
||||
if (token) {
|
||||
localStorage.setItem("auth_token", token);
|
||||
} else {
|
||||
localStorage.removeItem("auth_token");
|
||||
}
|
||||
|
||||
console.log("Setting session:", {user, token});
|
||||
set({user, token});
|
||||
},
|
||||
|
||||
clearSession: () => {
|
||||
localStorage.removeItem("auth_token");
|
||||
//localStorage.removeItem("user");
|
||||
set({user: null, token: null});
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user