Skip to content

스토어 (Pinia) 개요

앱의 전역 상태는 Pinia 스토어로 관리됩니다. apps/web-ui/src/stores/ 아래에 정의되어 있습니다.

주요 스토어

스토어파일역할
authauth.ts로그인·로그아웃, 사용자 정보, 관리자 여부, 비밀번호 재설정, Supabase 세션 관리
featureBuilderfeatureBuilder.ts기능 빌더 데이터 (카테고리, 그리드 레이아웃, slotProps, undo/redo, 저장)
settingssettings.ts전역 설정 (점검 모드 maintenanceMode 등)
rolesroles.ts역할별 관리자 메뉴 접근 제어 (canAccess(routeName, role))
noticesnotices.ts공지사항 (목록, 팝업용) — Supabase notices 테이블
bannersbanners.ts배너 (점검, 이벤트) — Supabase banners 테이블
supportsupport.ts제보·문의 관련 — Supabase support 테이블
changelogchangelog.ts변경 내역 — Supabase changelog 테이블
auditLogauditLog.ts감사 로그
i18nOverridesi18nOverrides.ts다국어 오버라이드 (관리자 i18n에서 설정, ko/en)
adminUIadminUI.ts관리자 UI 상태
toasttoast.ts토스트 알림 (useToast 컴포저블과 연동)
loadingloading.ts전역 로딩 상태
globalErrorglobalError.ts전역 에러 처리
featureFlagsfeatureFlags.ts기능 플래그

auth 스토어 주요 기능

Supabase와 직접 연동하는 핵심 스토어입니다.

함수/상태설명
user현재 로그인 사용자 (AuthUser 타입)
isLoggedIn로그인 여부
isSupabaseReadySupabase 환경변수 설정 여부
profileAvatarUrl아바타 URL (없으면 ui-avatars.com 기반 placeholder)
sessionExpired세션 만료 여부 (만료 시 모달 표시)
pendingPasswordRecovery비밀번호 재설정 링크로 진입한 경우
initAuth()앱 시작 시 세션 복원 + onAuthStateChange 구독
login(email, password)Supabase signInWithPassword
logout()Presence 정리 후 Supabase signOut
fetchRoleFromApp()get_my_role RPC로 역할 조회 후 user에 반영
getAccessToken()현재 Supabase access_token 반환
setNewPasswordAfterRecovery()비밀번호 재설정 완료 처리

featureBuilder 스토어 주요 기능

  • 그리드 위젯 배열, 카테고리 메타, getSlotProps / setSlotProps, getGridLayout / setGridLayout
  • 캔버스·설정 패널·실제 기능 페이지(FeaturePageContent)가 이 스토어를 구독
  • 현재 로컬 스토리지(loafacto-feature-builder)에 저장 — 추후 Supabase 백엔드 연동 예정