保誠-保戶業務員媒合平台
Tomas
2023-07-31 7b64d5337254349b32ce91f30bb36eab6ba8231f
PAMapp/middleware/isLogin.ts
@@ -1,29 +1,46 @@
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', 'faq', 'consultantLogin', 'agentInfo-agentNo'];
    const noNeedLoginFunctionList = [
        'index', 'login',
        'myConsultantList-consultantList', 'myConsultantList-contactedList',
        'faq', 'consultantLogin', 'agentInfo-agentNo',
        'recommendConsultant', 'recommendConsultant-result',
        'quickFilter',
        'questionnaire-agentNo' // NOTE: 這裡會加入不需 authGuard 的原因是,此 route 有自己的機制來導頁到 login。
    ];
    if (!isUserLogin && !isAdminLogin) {
        if (!(noNeedLoginFunctionList.some((routeName) => routeName === currentRouteName))) {
    if (isGuest) {
        const guestCannotAccess = !(noNeedLoginFunctionList.includes(currentRouteName!));
        if (guestCannotAccess) {
            context.redirect('/');
        } 
    } else if(isUserLogin) {
        const userFunctions = ['accountSetting', 'userReviewsRecord', 'myConsultantList-consultantList', 'questionnaire-agentNo', ...noNeedLoginFunctionList];
        if (!(userFunctions.some((routeName) => routeName === currentRouteName))) {
        const userFunctions = [
            'notification', 'satisfactionList', 'accountSetting',
            'userReviews', 'userReviewsRecord',
            ...noNeedLoginFunctionList];
        const userCannotAccess = !(userFunctions.includes(currentRouteName!));
        if (userCannotAccess) {
            context.redirect('/');
        }
    } else if(isAdminLogin) {
        const agentFunctions = ['agentInfo-agentNo', 'agentInfo-edit-agentNo', 'record', 'myAppointmentList-appointmentList', 'myAppointmentList-contactedList', 'myAppointmentList-closedList', 'appointment-appointmentId', 'appointment-appointmentId-close',...noNeedLoginFunctionList ];
        if (!(agentFunctions.some((routeName) => routeName === currentRouteName))) {
        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('/');
        }
    }
    console.log('isLogin_currentRouteName', currentRouteName);
}