Soy un principiante en vue y necesito su ayuda, por favor. Estoy creando una aplicación donde el inicio de sesión está conectado a firebase. Me gustaría usar vue-router para redirigir a un usuario a una página en particular. Cuando una persona inicia sesión cuyo user.role = "admin" debe ser redirigido a "/admin". Todas las demás personas registradas en "/" y las personas no registradas son redirigidas a la página "/login". Aquí hay partes de mi código:
principal.js
router.beforeEach((to, from, next) => { const currentUser = firebase.auth().currentUser; const requiresAuth = to.meta.requiresAuth; if (requiresAuth && !currentUser){ next({ name: 'Login' })} else if (!requiresAuth && currentUser) {next({name: 'Dashboard'}), console.log(currentUser)} else next(); });authStore.js
const actions = { logIn({ dispatch,commit,rootGetters }){ firebase.auth().onAuthStateChanged(async (user) => { if (user) { commit('SET_USER', user); var uid = user.uid; db.collection('users').doc(uid) .get() .then((doc)=>{ commit('gutscheinStore/SET_USER_ROLE', doc.data().role, {root:true}) commit('gutscheinStore/SET_USER_STANDORT_ID', doc.data().standortID, {root: true}) commit('gutscheinStore/SET_USER_BETREIBER_ID', doc.data().betreiberID, {root: true}) //console.log(rootGetters['gutscheinStore/getUserRole']) }) router.push('/') } else { console.log("No entry without login") } }) },index.js en el enrutador
const routes = [ { path: '/', name: 'Dashboard', component: Dashboard, meta: { requiresAuth: true, } }, { path: '/login', name: 'Login', component: Login }, { path: '/admin', name:'AdminDashboard', component: AdminDashboard, meta: { requiresAuth: true, }En authStore.js donde actualmente tiene la línea router.push("/") :
const actions = { ... // snipped for clarity router.push('/') } else { console.log("No entry without login") } }) },En su lugar, podría cambiar esto de la siguiente manera:
const actions = { ... // snipped for clarity if(user.role === "admin") { router.push("/admin") } else { router.push("/") } } else { // router.push("/login") router.go() } }) },