import { Middleware } from '@nuxt/types';
|
|
const isLogin: Middleware = (context) => {
|
const isUserLogin = context.store.getters['localStorage/isUserLogin'];
|
const isAdminLogin = context.store.getters['localStorage/isAdminLogin'];
|
const isGuest = !isUserLogin && !isAdminLogin;
|
const currentRouteName = context.route.name;
|
const noNeedLoginFunctionList = [
|
'index', 'login',
|
'myConsultantList-consultantList', 'myConsultantList-contactedList',
|
'faq', 'consultantLogin', 'agentInfo-agentNo',
|
'recommendConsultant', 'recommendConsultant-result',
|
'quickFilter',
|
'questionnaire-agentNo' // NOTE: 這裡會加入不需 authGuard 的原因是,此 route 有自己的機制來導頁到 login。
|
];
|
|
if (isGuest) {
|
const guestCannotAccess = !(noNeedLoginFunctionList.includes(currentRouteName!));
|
if (guestCannotAccess) {
|
context.redirect('/');
|
}
|
} else if(isUserLogin) {
|
const userFunctions = [
|
'notification', 'satisfactionList', 'accountSetting',
|
'userReviews', 'userReviewsRecord',
|
...noNeedLoginFunctionList];
|
const userCannotAccess = !(userFunctions.includes(currentRouteName!));
|
if (userCannotAccess) {
|
context.redirect('/');
|
}
|
} else if(isAdminLogin) {
|
const agentFunctions = [
|
'notification', 'agentInfo-agentNo', 'agentInfo-edit-agentNo', 'record',
|
'myAppointmentList-appointmentList', 'myAppointmentList-contactedList', 'myAppointmentList-closedList',
|
'appointment-appointmentId', 'appointment-appointmentId-close',
|
'appointment-appointmentId-interview-new', 'appointment-appointmentId-interviewList',
|
'appointment-appointmentId-interview-interviewId', 'appointment-appointmentId-recordList',
|
...noNeedLoginFunctionList];
|
const agentCannotAccess = !(agentFunctions.includes(currentRouteName!));
|
if (agentCannotAccess) {
|
context.redirect('/');
|
}
|
}
|
|
}
|
|
export default isLogin
|