- 웹훅 URL을 https://admin.youtooplay.com/webhook로 변경 - Nginx 리버스 프록시 설정 파일 추가 - 배포 가이드 업데이트
This commit is contained in:
76
app.vue
Normal file
76
app.vue
Normal file
@@ -0,0 +1,76 @@
|
||||
<script setup lang="ts">
|
||||
import UpgradeToPro from '@/components/UpgradeToPro.vue'
|
||||
|
||||
const { isMobile } = useDevice()
|
||||
if (isMobile)
|
||||
configStore.appContentLayoutNav = 'vertical'
|
||||
|
||||
// 인증 상태 관리
|
||||
const token = useCookie('auth-token')
|
||||
const userInfo = useCookie('user-info')
|
||||
|
||||
// 사용자 정보 상태
|
||||
const currentUser = ref(null)
|
||||
|
||||
// 앱 초기화 시 사용자 정보 설정
|
||||
onMounted(() => {
|
||||
if (userInfo.value) {
|
||||
try {
|
||||
currentUser.value = JSON.parse(userInfo.value)
|
||||
} catch (error) {
|
||||
console.error('사용자 정보 파싱 오류:', error)
|
||||
// 잘못된 사용자 정보가 있으면 삭제
|
||||
userInfo.value = null
|
||||
token.value = null
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// 로그아웃 함수
|
||||
const logout = () => {
|
||||
token.value = null
|
||||
userInfo.value = null
|
||||
currentUser.value = null
|
||||
navigateTo('/login')
|
||||
}
|
||||
|
||||
// 전역으로 사용할 수 있도록 provide
|
||||
provide('currentUser', currentUser)
|
||||
provide('logout', logout)
|
||||
|
||||
// 라우터 가드 설정 (클라이언트 사이드에서만)
|
||||
if (process.client) {
|
||||
const router = useRouter()
|
||||
|
||||
// 라우트 변경 시 인증 체크
|
||||
router.beforeEach((to, from, next) => {
|
||||
// 로그인/회원가입 페이지는 인증 체크 제외
|
||||
if (to.path === '/login' || to.path === '/register') {
|
||||
// 이미 로그인된 사용자는 대시보드로 리다이렉션
|
||||
if (token.value) {
|
||||
next('/dashboard')
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 토큰이 없으면 로그인 페이지로 리다이렉션
|
||||
if (!token.value) {
|
||||
next('/login')
|
||||
return
|
||||
}
|
||||
|
||||
next()
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<VApp>
|
||||
<NuxtLayout>
|
||||
<NuxtPage />
|
||||
</NuxtLayout>
|
||||
<UpgradeToPro />
|
||||
</VApp>
|
||||
</template>
|
||||
Reference in New Issue
Block a user