frontend: Owner management
This commit is contained in:
parent
9df2ee08d2
commit
994ba0bc01
8 changed files with 293 additions and 27 deletions
|
|
@ -1,15 +1,46 @@
|
|||
function decodeJwt(token: string) {
|
||||
try {
|
||||
const payload = token.split(".")[1]
|
||||
const decoded = JSON.parse(atob(payload))
|
||||
return decoded
|
||||
} catch {
|
||||
return null
|
||||
}
|
||||
}
|
||||
export function useAuth() {
|
||||
const token = useState("token", () => null)
|
||||
const token = useState<string | null>("token", () => null)
|
||||
|
||||
function setToken(t: string) {
|
||||
token.value = t
|
||||
localStorage.setItem("token", t)
|
||||
|
||||
if (typeof window !== "undefined") {
|
||||
localStorage.setItem("token", t)
|
||||
}
|
||||
}
|
||||
|
||||
function loadToken() {
|
||||
token.value = localStorage.getItem("token")
|
||||
if (typeof window !== "undefined") {
|
||||
const stored = localStorage.getItem("token")
|
||||
if (!stored) return
|
||||
|
||||
const payload = decodeJwt(stored)
|
||||
if( !payload || !payload.exp || payload.exp * 1000 < Date.now()) {
|
||||
console.info("Token expired - removing it from storage")
|
||||
localStorage.removeItem("token")
|
||||
token.value = null
|
||||
}
|
||||
token.value = stored
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return { token, setToken, loadToken }
|
||||
}
|
||||
function logout() {
|
||||
token.value = null
|
||||
|
||||
if (typeof window !== "undefined") {
|
||||
localStorage.removeItem("token")
|
||||
}
|
||||
}
|
||||
|
||||
return { token, setToken, loadToken, logout }
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue