75 lines
1.8 KiB
TypeScript
Raw Normal View History

2025-07-28 09:51:21 +08:00
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import { useUserStore } from '@/stores/user'
export function useAuth() {
const router = useRouter()
const userStore = useUserStore()
const loginModalVisible = ref(false)
const registerModalVisible = ref(false)
// 检查用户是否已登录,如果未登录则显示登录模态框
const requireAuth = (callback?: () => void) => {
if (userStore.isLoggedIn) {
// 已登录,执行回调
callback?.()
return true
} else {
// 未登录,显示登录模态框
loginModalVisible.value = true
return false
}
}
// 显示登录模态框
const showLoginModal = () => {
loginModalVisible.value = true
}
// 显示注册模态框
const showRegisterModal = () => {
registerModalVisible.value = true
}
// 认证成功处理
const handleAuthSuccess = (callback?: () => void) => {
loginModalVisible.value = false
registerModalVisible.value = false
callback?.()
}
// 跳转到课程详情页(需要登录检查)
const goToCourseDetail = (courseId: string | number) => {
requireAuth(() => {
router.push(`/course/${courseId}`)
})
}
// 报名课程(需要登录检查)
const enrollCourse = (courseId: string | number, successCallback?: () => void) => {
requireAuth(() => {
// 这里可以添加报名逻辑
console.log('报名课程:', courseId)
// 模拟报名成功,跳转到课程学习页面
if (successCallback) {
successCallback()
} else {
router.push(`/course/study/${courseId}`)
}
})
}
return {
loginModalVisible,
registerModalVisible,
requireAuth,
showLoginModal,
showRegisterModal,
handleAuthSuccess,
goToCourseDetail,
enrollCourse
}
}