Handling multiple roles from different keys
jongbonga opened this issue · comments
Hey
I have this structure
user1 = {
name: 'John',
department: ['tech', 'operations'],
tech: { role: 'manager' }
}
user2 = {
name: 'Steve',
department: ['hr'],
hr: { role: 'manager' }
}
My rolesKey is set to department
.
I want to allow all to log in regardless of their departments but go to /unauthorized if they don't have the department tech
. if they do have it, they will still be unauthorized if they don't have the role
of manager
or admin
my options look like this
options: {
rolesKey: "department",
notFoundRedirect: { path: "/dashboard" },
forbiddenRedirect: { path: "/unauthorized" }
}
my router meta looks like this
meta: {
roles: ["manager", "admin"],
rolesKey: "tech.role"
}
my user2 is logged in but not being redirected anywhere, not even to the forbuddenRedirect
.
Is there a way of handling this use case? how do I avoid the error properties of undefined (reading 'role')
when user2 isn't part of tech and thus can't access the tech.role
?
You may just be missing the auth
param in your meta
object, take a look at the demo routes here:
https://github.com/websanova/vue-auth/blob/master/demos/2.x/src/router/index.js#L54
I've implemented it successfully on different projects. But I get an error when the roleskey
tech.role
is not available on user object. Some users do have, some don't. Is there a where to check is a key exist for the roleskey?