up
This commit is contained in:
@@ -1,20 +1,22 @@
|
||||
<script setup>
|
||||
import { useUserStore } from "@/stores/user";
|
||||
|
||||
import { RouterLink } from "vue-router";
|
||||
import { RouterLink, useRouter } from "vue-router";
|
||||
|
||||
import { useI18n } from "vue-i18n";
|
||||
|
||||
import { myfuncs } from "@/myfunc.js";
|
||||
import { onMounted, ref } from "vue";
|
||||
|
||||
|
||||
// import { Tooltip } from "@tabler/core";
|
||||
// import { Dropdown } from 'bootstrap'
|
||||
|
||||
// 使用 vue-i18n 的 Composition API
|
||||
const { t, locale } = useI18n();
|
||||
const userStore = useUserStore();
|
||||
const theTeme = ref("light");
|
||||
const lang_sele = ref(null);
|
||||
const router = useRouter();
|
||||
|
||||
function set_them(temp) {
|
||||
theTeme.value = temp;
|
||||
@@ -30,6 +32,12 @@ function changeLanguage(lang) {
|
||||
//console.log("selectedLang:",selectedLang);
|
||||
}
|
||||
|
||||
function logOut() {
|
||||
//console.log("logout");
|
||||
userStore.logout();
|
||||
router.push("/login");
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
const savedTheme = myfuncs.getThemefromStorge();
|
||||
theTeme.value = savedTheme;
|
||||
@@ -42,10 +50,8 @@ onMounted(() => {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//userlogin
|
||||
userStore.loginFromStoreCookie()
|
||||
|
||||
userStore.loginFromStoreCookie();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -169,30 +175,32 @@ onMounted(() => {
|
||||
</router-link>
|
||||
</div>
|
||||
|
||||
<div v-if="userStore.isLoggedIn" class="nav-item dropdown">
|
||||
<a
|
||||
href="#"
|
||||
class="nav-link d-flex lh-1 p-0 px-2"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-label="Open user menu"
|
||||
>
|
||||
<span
|
||||
class="avatar avatar-sm"
|
||||
style="background-image: url(./static/avatars/000m.jpg)"
|
||||
<div v-else class="nav-item">
|
||||
<div class="dropdown">
|
||||
<div
|
||||
|
||||
class="nav-link d-flex lh-1 p-0 px-2"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-label="Open user menu"
|
||||
>
|
||||
</span>
|
||||
<div class="d-none d-xl-block ps-2">
|
||||
<div>Paweł Kuna</div>
|
||||
<div class="mt-1 small text-secondary">UI Designer</div>
|
||||
<span
|
||||
class="avatar avatar-sm"
|
||||
style="background-image: url(./static/avatars/000m.jpg)"
|
||||
>
|
||||
</span>
|
||||
<div class="d-none d-xl-block ps-2">
|
||||
<div>Paweł Kuna</div>
|
||||
<div class="mt-1 small text-secondary">UI Designer</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
|
||||
<a href="#" class="dropdown-item">Status</a>
|
||||
<a href="./profile.html" class="dropdown-item">Profile</a>
|
||||
<a href="#" class="dropdown-item">Feedback</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a href="./settings.html" class="dropdown-item">Settings</a>
|
||||
<div @click="logOut" class="dropdown-item">Logout</div>
|
||||
</div>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
|
||||
<a href="#" class="dropdown-item">Status</a>
|
||||
<a href="./profile.html" class="dropdown-item">Profile</a>
|
||||
<a href="#" class="dropdown-item">Feedback</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a href="./settings.html" class="dropdown-item">Settings</a>
|
||||
<a href="./sign-in.html" class="dropdown-item">Logout</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<script setup>
|
||||
import { onMounted, ref } from "vue";
|
||||
import { Offcanvas } from "bootstrap";
|
||||
import { Offcanvas } from "@tabler/core";
|
||||
|
||||
const offcanvasTop = ref(null);
|
||||
let ov;
|
||||
|
||||
@@ -26,10 +26,14 @@ export const my_network_func = {
|
||||
//把cookie插入json
|
||||
var data = {};
|
||||
data["data"] = json;
|
||||
|
||||
var userstore=useUserStore()
|
||||
|
||||
//console.log(userstore.cookieValue)
|
||||
|
||||
// if (useUserStore.cookieValue!="") {
|
||||
// data["cookie"] = useUserStore.cookieValue;
|
||||
// }
|
||||
if (userstore.userCookie) {
|
||||
data["userCookie"] = userstore.userCookie
|
||||
}
|
||||
|
||||
var re_data = {};
|
||||
|
||||
|
||||
@@ -1,35 +1,62 @@
|
||||
// stores/user.js
|
||||
import { defineStore } from "pinia";
|
||||
import { ref, computed } from "vue";
|
||||
import { myfuncs } from '@/myfunc.js'
|
||||
import { myfuncs } from "@/myfunc.js";
|
||||
|
||||
// 组合式 API 写法 (推荐)
|
||||
export const useUserStore = defineStore("user", () => {
|
||||
// 状态 (State)
|
||||
const userInfo = ref(null);
|
||||
const cookieValue = ref("");
|
||||
const userCookie = ref(null);
|
||||
const isLoggedIn = ref(false);
|
||||
|
||||
const logout = () => {
|
||||
isLoggedIn.value = false;
|
||||
const cookiesQualified = () => {
|
||||
//返回一个合格的cookie 就是没过期的cookie
|
||||
//如果cookie没过期直接返回,如果过期 顺便logout
|
||||
var cookieTimeout = userCookie.value.ExpiresAt;
|
||||
if (new Date(cookieTimeout) < new Date()) {
|
||||
//过期了
|
||||
logout();
|
||||
}
|
||||
return userCookie.value;
|
||||
};
|
||||
const logout = () => {
|
||||
userCookie.value = null;
|
||||
isLoggedIn.value = false;
|
||||
myfuncs.dele("userCookie");
|
||||
myfuncs.deleT("userCookie");
|
||||
};
|
||||
const login = (cookie) => {
|
||||
userCookie.value = cookie;
|
||||
isLoggedIn.value = true;
|
||||
//这里应该判读cookie的实效性
|
||||
userCookie.value = cookiesQualified();
|
||||
};
|
||||
|
||||
const loginFromStoreCookie = () => {
|
||||
//从store获取cookie
|
||||
var cookie=myfuncs.loadJson("userCookie")
|
||||
console.log(cookie)
|
||||
//isLoggedIn.value = true;
|
||||
};
|
||||
const loginUpdata = (cookie) => {
|
||||
console.log(cookie)
|
||||
cookieValue.value=cookie.value
|
||||
|
||||
var cookie = myfuncs.loadJsonT("userCookie");
|
||||
if (cookie) {
|
||||
login(cookie);
|
||||
} else {
|
||||
cookie = myfuncs.loadJson("userCookie");
|
||||
if (cookie) {
|
||||
login(cookie);
|
||||
} else {
|
||||
logout();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
return {
|
||||
userInfo,
|
||||
cookieValue,
|
||||
userCookie,
|
||||
isLoggedIn,
|
||||
logout,
|
||||
login,
|
||||
loginFromStoreCookie,
|
||||
loginUpdata,
|
||||
|
||||
};
|
||||
});
|
||||
|
||||
@@ -20,6 +20,6 @@ const user = useUserStore()
|
||||
<main>
|
||||
1112
|
||||
<button @click="t">222</button>
|
||||
{{ user.isLoggedIn }}
|
||||
{{ user.userCookie }}
|
||||
</main>
|
||||
</template>
|
||||
|
||||
@@ -91,7 +91,7 @@ function login() {
|
||||
}
|
||||
|
||||
//更新用户信息
|
||||
userStore.loginUpdata(r.data.return.cookie)
|
||||
userStore.login(r.data.return.cookie)
|
||||
|
||||
|
||||
mos.value?.showAlert(
|
||||
|
||||
Reference in New Issue
Block a user