Как отфильтровать маршрут для конкретного пользователя в VUE JS - PullRequest
0 голосов
/ 21 января 2019

Я хочу отфильтровать некоторые из моих маршрутов в зависимости от роли пользователя.

например, у меня есть 2 типа пользователей: admin и viewer.

как можноЯ фильтрую маршрут, поэтому, если у кого логин viewer, он не может получить доступ к маршруту, имеет мета admin.

То, что я пробовал до сих пор.

Это мой general.js

export function initialize(store, router) {
    router.beforeEach((to, from, next) => {
        const requiresAuth = to.matched.some(record => record.meta.requiresAuth);
        const currentUser = store.state.currentUser;
        console.log(currentUser)

        if(requiresAuth && !currentUser) {
            next('/loginadmin');
        } else if(to.path == '/loginadmin' && currentUser) {
            next('/homeadmin');
        } else if(to.path == '/login') {
            next('/homeadmin');
        }else {
            next();
        }
    });

    axios.interceptors.response.use(null, (error) => {
        if (error.response.status == 401) {
            store.commit('logout');
            router.push('/loginadmin');
        }

        return Promise.reject(error);
    });

    if (store.getters.currentUser) {
        setAuthorization(store.getters.currentUser.token);
    }
}

export function setAuthorization(token) {
    axios.defaults.headers.common["Authorization"] = `Bearer ${token}`
}

и это мой маршрут

{
        path: '/homeadmin',
        component: Home,
        meta: {
            requiresAuth: true
            is_admin: 'admin'
        }
    },
{
        path: '/homeadmin',
        component: Home,
        meta: {
            requiresAuth: true
        }
    },

Я сохранил роль в const currentUser = store.state.currentUser;

Полный путь для получения роли пользователя: store.state.currentUser.role

как я могу это сделать?

...