User Roles
My app currently has two different dashboard setup.
Member and provider, I'm thinking about how to handle the routing and redirection after Auth.
Should I have two different route group declarations for the roles or a single /dashboard route and then render content conditionally based on the roles.
If I have two different route group declarations, how do I handle the redirection to the respective routes after Auth.
For member home /dashboard/member
For provider home /dashboard/provider
Another example might be /dashboard/member/profile and /dashboard/provider/profile.
1 Reply
Hi @Julius_Java#00. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
----------------------
Based on the knowledge sources, Wasp doesn't currently have built-in support for role-based routing or route grouping, but I can suggest some approaches for your use case.
Handling User Roles in Wasp
Currently, Wasp doesn't have native role-based access control (RBAC), but you can implement it yourself by adding a
role
field to your User
entity and checking it in your components and operations.
Option 1: Conditional Rendering Approach
You could have a single /dashboard
route and conditionally render content based on the user's role:
Option 2: Separate Routes with Redirection
For separate routes, you would define them in your Wasp file:
Then in each component, you'd need to check if the user has the appropriate role and redirect if not:
For Nested Routes
For nested routes like /dashboard/member/profile
, you would need to use React Router within your components as Wasp only supports top-level routing. As mentioned in a Discord thread, "Wasp offers only top level routing - beyond that, you can indeed use react router to do your own routing!" Nested routing?.
Future Improvements
There's an open issue (#1362) about grouped/nested routes in Wasp, which would make this kind of routing more elegant in the future Grouped/nested routes.
Additionally, the Wasp team has mentioned plans to add RBAC in future versions: "We do have plans to add a default support for it in Wasp, something like RBAC (role based access control), but that will be in the future versions of Wasp, not super soon." Discord support thread.
For now, I'd recommend the conditional rendering approach for simplicity, unless you have complex nested routing needs that would benefit from separate route declarations.
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------
Sorry @Julius_Java#00, I seem to be having a bit of trouble. Don't worry though, I've pinged my support and they will try to fix me up! :technologist:
Perhaps try again in 15mins?