v0.1.45 - 로그인 유지 옵션과 랜딩 문구 정리

This commit is contained in:
2026-04-23 13:42:53 +09:00
parent 1f2d9ddc54
commit e847ddd227
5 changed files with 57 additions and 17 deletions

View File

@@ -28,29 +28,39 @@ async function request(path, { method = 'GET', token, body } = {}) {
export function readAuthState() {
if (typeof window === 'undefined') {
return { token: '', user: null }
return { token: '', user: null, persist: false }
}
try {
return JSON.parse(window.localStorage.getItem(AUTH_STORAGE_KEY) ?? '{"token":"","user":null}')
const localState = JSON.parse(window.localStorage.getItem(AUTH_STORAGE_KEY) ?? 'null')
if (localState?.token) {
return { ...localState, persist: true }
}
const sessionState = JSON.parse(window.sessionStorage.getItem(AUTH_STORAGE_KEY) ?? 'null')
if (sessionState?.token) {
return { ...sessionState, persist: false }
}
return { token: '', user: null, persist: false }
} catch (error) {
console.warn('저장된 인증 상태를 불러오지 못했습니다.', error)
return { token: '', user: null }
return { token: '', user: null, persist: false }
}
}
export function persistAuthState({ token, user }) {
export function persistAuthState({ token, user, persist = false }) {
if (typeof window === 'undefined') {
return
}
window.localStorage.setItem(
AUTH_STORAGE_KEY,
JSON.stringify({
token,
user,
}),
)
const targetStorage = persist ? window.localStorage : window.sessionStorage
const unusedStorage = persist ? window.sessionStorage : window.localStorage
unusedStorage.removeItem(AUTH_STORAGE_KEY)
targetStorage.setItem(AUTH_STORAGE_KEY, JSON.stringify({ token, user }))
}
export function clearAuthState() {
@@ -59,6 +69,7 @@ export function clearAuthState() {
}
window.localStorage.removeItem(AUTH_STORAGE_KEY)
window.sessionStorage.removeItem(AUTH_STORAGE_KEY)
}
export async function signup({ email, password, nickname }) {