Frontend/pages/index.vue

87 lines
2.3 KiB
Vue
Raw Permalink Normal View History

2025-01-21 19:18:28 +08:00
<template></template>
2025-01-19 15:20:49 +08:00
<script setup>
2025-02-22 12:26:58 +08:00
import { useHead } from "#app"; // 匯入 Head
import { ref, onMounted } from "vue"; // 開機自啟
import { useRouter } from "vue-router"; // 匯入路由
2025-02-25 20:49:51 +08:00
const config = useRuntimeConfig();
const $api_host = config.public.apiHost;
2025-02-22 12:26:58 +08:00
const router = useRouter(); // 匯入路由
2025-01-19 15:20:49 +08:00
definePageMeta({
layout: false, // 禁用 layout
});
2025-02-22 12:26:58 +08:00
// 設置 Head
2025-01-19 15:20:49 +08:00
useHead({
2025-01-21 19:18:28 +08:00
title: "Lamiter",
meta: [
{ charset: "utf-8" },
{ "http-equiv": "X-UA-Compatible", content: "IE=edge" },
2025-02-22 12:26:58 +08:00
{ name: "viewport", content: "width=device-width, initial-scale=1, shrink-to-fit=no" },
2025-01-21 19:18:28 +08:00
{ name: "description", content: "" },
{ name: "author", content: "" },
],
link: [
{
rel: "stylesheet",
href: "https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i",
2025-02-22 12:26:58 +08:00
},
2025-01-21 19:18:28 +08:00
{ rel: "stylesheet", href: "/css/sb-admin-2.min.css" },
{ rel: "stylesheet", href: "/vendor/fontawesome-free/css/all.min.css" },
],
script: [
{ src: "/vendor/jquery/jquery.min.js" },
{ src: "/vendor/bootstrap/js/bootstrap.bundle.min.js" },
{ src: "/vendor/jquery-easing/jquery.easing.min.js" },
{ src: "/js/sb-admin-2.min.js" },
],
});
2025-02-22 12:26:58 +08:00
// 🔐 Token 狀態管理(確保 SSR 不報錯)
const authToken = useState("authToken", () => process.client ? localStorage.getItem("token_TCM") || "" : "");
// 🔍 檢查 Token
async function token_check() {
if (!process.client) return; // 確保在 client-side 執行
const token = localStorage.getItem("token_TCM");
console.log("Token:", token);
if (!token) {
console.log("無 Token轉跳首頁");
2025-02-22 22:06:05 +08:00
router.push("/Home_pages/").then(() => {
window.location.reload();
});
2025-02-22 12:26:58 +08:00
return;
}
2025-01-21 19:18:28 +08:00
2025-02-22 12:26:58 +08:00
try {
const response = await fetch(`${$api_host}/Users/token_check_user`, {
method: "GET",
2025-01-21 19:18:28 +08:00
headers: {
Authorization: token,
},
});
2025-02-22 12:26:58 +08:00
if (!response.ok) throw new Error("Token 驗證失敗");
const data = await response.json();
console.log("驗證成功:", data);
if (data.level >= 9) {
router.push("/Lamiter_pages/");
} else if (data.level == 8) {
router.push("/Manage_pages/");
}
} catch (error) {
console.error("Token 驗證失敗", error);
2025-01-21 19:18:28 +08:00
router.push("/Home_pages/");
}
}
2025-02-22 12:26:58 +08:00
// 🔄 開機執行
onMounted(token_check);
2025-01-19 15:20:49 +08:00
</script>
2025-02-22 12:26:58 +08:00