WIP #216. The timing is not good. After user password is confirmed, the isLoggedIn boolean is still false, and thus causing the website to stay at the login page

This commit is contained in:
Cindy Chang
2024-06-14 16:17:20 +08:00
parent 8d34b80b5c
commit 5bf98a1b74
3 changed files with 22 additions and 3 deletions

View File

@@ -107,7 +107,7 @@ export default {
// 考慮到使用者可能在未登入的情況下貼入一個頁面網址連結過來瀏覽器
// btoa: 對字串進行 Base64 編碼
if(this.$route.query['return-to']) {
this.setRememberedReturnToUrl(btoa(this.$route.query['return-to']));
this.setRememberedReturnToUrl(this.$route.query['return-to']);
}
},
};

View File

@@ -19,6 +19,7 @@ import Navbar from "@/components/Navbar.vue";
import Loading from '@/components/Loading.vue';
import { leaveFilter, leaveConformance } from '@/module/alertModal.js';
import PageAdminStore from '@/stores/pageAdmin.js';
import LoginStore from "@/stores/login.js";
export default {
name: 'MainContainer',
@@ -46,6 +47,9 @@ export default {
'shouldKeepPreviousPage',
'activePageComputedByRoute'
]),
...mapState(LoginStore, [
'isLoggedIn',
])
},
methods: {
...mapActions(PageAdminStore, [
@@ -60,7 +64,21 @@ export default {
const token = document.cookie.replace(/(?:(?:^|.*;\s*)luciaToken\s*\=\s*([^;]*).*$)|^.*$/, "$1");
this.$http.defaults.headers.common['Authorization'] = `Bearer ${token}`;
},
// Rember, Swal modal handling is called before beforeRouteUpdate
beforeRouteEnter(to, from, next) {
// 重新整理畫面以及第一次進入網頁時beforeRouteEnter這個hook會被執行然而beforeRouteUpdate不會被執行
const loginStore = LoginStore();
if (!loginStore.isLoggedIn) {
next({
path: '/login',
query: {
'return-to': btoa(window.location.href),
}
});
} else {
next();
}
},
// Remember, Swal modal handling is called before beforeRouteUpdate
beforeRouteUpdate(to, from, next) {
// console.log("beforeRouteUpdate", from.name, "to:", to.name);
this.setPrevioiusPage(from.name);