up
This commit is contained in:
Generated
+5
@@ -57,6 +57,7 @@
|
|||||||
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
|
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.27.1",
|
"@babel/code-frame": "^7.27.1",
|
||||||
"@babel/generator": "^7.28.5",
|
"@babel/generator": "^7.28.5",
|
||||||
@@ -1028,6 +1029,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
|
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
|
||||||
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
|
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
"url": "https://opencollective.com/popperjs"
|
"url": "https://opencollective.com/popperjs"
|
||||||
@@ -1741,6 +1743,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"baseline-browser-mapping": "^2.8.19",
|
"baseline-browser-mapping": "^2.8.19",
|
||||||
"caniuse-lite": "^1.0.30001751",
|
"caniuse-lite": "^1.0.30001751",
|
||||||
@@ -2793,6 +2796,7 @@
|
|||||||
"integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==",
|
"integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"esbuild": "^0.25.0",
|
"esbuild": "^0.25.0",
|
||||||
"fdir": "^6.5.0",
|
"fdir": "^6.5.0",
|
||||||
@@ -2971,6 +2975,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.24.tgz",
|
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.24.tgz",
|
||||||
"integrity": "sha512-uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg==",
|
"integrity": "sha512-uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/compiler-dom": "3.5.24",
|
"@vue/compiler-dom": "3.5.24",
|
||||||
"@vue/compiler-sfc": "3.5.24",
|
"@vue/compiler-sfc": "3.5.24",
|
||||||
|
|||||||
@@ -1,20 +1,22 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { useUserStore } from "@/stores/user";
|
import { useUserStore } from "@/stores/user";
|
||||||
|
|
||||||
import { RouterLink } from "vue-router";
|
import { RouterLink, useRouter } from "vue-router";
|
||||||
|
|
||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
|
|
||||||
import { myfuncs } from "@/myfunc.js";
|
import { myfuncs } from "@/myfunc.js";
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
|
|
||||||
|
// import { Tooltip } from "@tabler/core";
|
||||||
|
// import { Dropdown } from 'bootstrap'
|
||||||
|
|
||||||
// 使用 vue-i18n 的 Composition API
|
// 使用 vue-i18n 的 Composition API
|
||||||
const { t, locale } = useI18n();
|
const { t, locale } = useI18n();
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const theTeme = ref("light");
|
const theTeme = ref("light");
|
||||||
const lang_sele = ref(null);
|
const lang_sele = ref(null);
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
function set_them(temp) {
|
function set_them(temp) {
|
||||||
theTeme.value = temp;
|
theTeme.value = temp;
|
||||||
@@ -30,6 +32,12 @@ function changeLanguage(lang) {
|
|||||||
//console.log("selectedLang:",selectedLang);
|
//console.log("selectedLang:",selectedLang);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function logOut() {
|
||||||
|
//console.log("logout");
|
||||||
|
userStore.logout();
|
||||||
|
router.push("/login");
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
const savedTheme = myfuncs.getThemefromStorge();
|
const savedTheme = myfuncs.getThemefromStorge();
|
||||||
theTeme.value = savedTheme;
|
theTeme.value = savedTheme;
|
||||||
@@ -42,10 +50,8 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//userlogin
|
//userlogin
|
||||||
userStore.loginFromStoreCookie()
|
userStore.loginFromStoreCookie();
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -169,30 +175,32 @@ onMounted(() => {
|
|||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="userStore.isLoggedIn" class="nav-item dropdown">
|
<div v-else class="nav-item">
|
||||||
<a
|
<div class="dropdown">
|
||||||
href="#"
|
<div
|
||||||
class="nav-link d-flex lh-1 p-0 px-2"
|
|
||||||
data-bs-toggle="dropdown"
|
class="nav-link d-flex lh-1 p-0 px-2"
|
||||||
aria-label="Open user menu"
|
data-bs-toggle="dropdown"
|
||||||
>
|
aria-label="Open user menu"
|
||||||
<span
|
|
||||||
class="avatar avatar-sm"
|
|
||||||
style="background-image: url(./static/avatars/000m.jpg)"
|
|
||||||
>
|
>
|
||||||
</span>
|
<span
|
||||||
<div class="d-none d-xl-block ps-2">
|
class="avatar avatar-sm"
|
||||||
<div>Paweł Kuna</div>
|
style="background-image: url(./static/avatars/000m.jpg)"
|
||||||
<div class="mt-1 small text-secondary">UI Designer</div>
|
>
|
||||||
|
</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>
|
</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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import { Offcanvas } from "bootstrap";
|
import { Offcanvas } from "@tabler/core";
|
||||||
|
|
||||||
const offcanvasTop = ref(null);
|
const offcanvasTop = ref(null);
|
||||||
let ov;
|
let ov;
|
||||||
|
|||||||
@@ -26,10 +26,14 @@ export const my_network_func = {
|
|||||||
//把cookie插入json
|
//把cookie插入json
|
||||||
var data = {};
|
var data = {};
|
||||||
data["data"] = json;
|
data["data"] = json;
|
||||||
|
|
||||||
|
var userstore=useUserStore()
|
||||||
|
|
||||||
|
//console.log(userstore.cookieValue)
|
||||||
|
|
||||||
// if (useUserStore.cookieValue!="") {
|
if (userstore.userCookie) {
|
||||||
// data["cookie"] = useUserStore.cookieValue;
|
data["userCookie"] = userstore.userCookie
|
||||||
// }
|
}
|
||||||
|
|
||||||
var re_data = {};
|
var re_data = {};
|
||||||
|
|
||||||
|
|||||||
@@ -1,35 +1,62 @@
|
|||||||
// stores/user.js
|
// stores/user.js
|
||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import { ref, computed } from "vue";
|
import { ref, computed } from "vue";
|
||||||
import { myfuncs } from '@/myfunc.js'
|
import { myfuncs } from "@/myfunc.js";
|
||||||
|
|
||||||
// 组合式 API 写法 (推荐)
|
// 组合式 API 写法 (推荐)
|
||||||
export const useUserStore = defineStore("user", () => {
|
export const useUserStore = defineStore("user", () => {
|
||||||
// 状态 (State)
|
// 状态 (State)
|
||||||
const userInfo = ref(null);
|
const userInfo = ref(null);
|
||||||
const cookieValue = ref("");
|
const userCookie = ref(null);
|
||||||
const isLoggedIn = ref(false);
|
const isLoggedIn = ref(false);
|
||||||
|
|
||||||
const logout = () => {
|
const cookiesQualified = () => {
|
||||||
isLoggedIn.value = false;
|
//返回一个合格的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 = () => {
|
const loginFromStoreCookie = () => {
|
||||||
//从store获取cookie
|
//从store获取cookie
|
||||||
var cookie=myfuncs.loadJson("userCookie")
|
|
||||||
console.log(cookie)
|
var cookie = myfuncs.loadJsonT("userCookie");
|
||||||
//isLoggedIn.value = true;
|
if (cookie) {
|
||||||
};
|
login(cookie);
|
||||||
const loginUpdata = (cookie) => {
|
} else {
|
||||||
console.log(cookie)
|
cookie = myfuncs.loadJson("userCookie");
|
||||||
cookieValue.value=cookie.value
|
if (cookie) {
|
||||||
|
login(cookie);
|
||||||
|
} else {
|
||||||
|
logout();
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
userInfo,
|
userInfo,
|
||||||
cookieValue,
|
userCookie,
|
||||||
isLoggedIn,
|
isLoggedIn,
|
||||||
logout,
|
logout,
|
||||||
|
login,
|
||||||
loginFromStoreCookie,
|
loginFromStoreCookie,
|
||||||
loginUpdata,
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -20,6 +20,6 @@ const user = useUserStore()
|
|||||||
<main>
|
<main>
|
||||||
1112
|
1112
|
||||||
<button @click="t">222</button>
|
<button @click="t">222</button>
|
||||||
{{ user.isLoggedIn }}
|
{{ user.userCookie }}
|
||||||
</main>
|
</main>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ function login() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//更新用户信息
|
//更新用户信息
|
||||||
userStore.loginUpdata(r.data.return.cookie)
|
userStore.login(r.data.return.cookie)
|
||||||
|
|
||||||
|
|
||||||
mos.value?.showAlert(
|
mos.value?.showAlert(
|
||||||
|
|||||||
Reference in New Issue
Block a user