lib/ was never committed despite every page importing from it - a fresh clone couldn't build. public/logo-encap.jpg was likewise missing even though app/login/page.tsx already references it. Also gitignore .idea/, which shouldn't be tracked. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017hQcuUQFue2bFvrYw2UQhK
31 lines
808 B
TypeScript
31 lines
808 B
TypeScript
"use client";
|
|
|
|
import { useEffect, useState } from "react";
|
|
import { logout as clearAuthToken } from "./api";
|
|
import type { User } from "./models";
|
|
|
|
export type StoredUser = Pick<User, "email" | "role">;
|
|
|
|
export function useStoredUser() {
|
|
const [user, setUser] = useState<StoredUser | null>(null);
|
|
const [ready, setReady] = useState(false);
|
|
|
|
useEffect(() => {
|
|
const email = localStorage.getItem("user_email");
|
|
const role = localStorage.getItem("user_role") as StoredUser["role"] | null;
|
|
if (email && role) {
|
|
setUser({ email, role });
|
|
}
|
|
setReady(true);
|
|
}, []);
|
|
|
|
return { user, ready };
|
|
}
|
|
|
|
export function clearStoredUser() {
|
|
clearAuthToken();
|
|
localStorage.removeItem("user_role");
|
|
localStorage.removeItem("user_email");
|
|
localStorage.removeItem("association_id");
|
|
}
|