adverse-sapphire•3y ago
access control
Is there a simple way to authorize a set of routes and resources to different role get from JWT token in local storage without using Access Control?
The Casbin, ... seem a little complicated
16 Replies
Hi @tads8799. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
----------------------
Yes, there is a simpler way to handle authorization in refine without using Access Control. You can define an
accessControlProvider inside the <Refine /> component. This provider implements an asynchronous method named "can" which is used to control whether the requested access is granted. This method takes resource and action as parameters.
Here is an example of how you can implement this:
In this example, the role of the logged in user is retrieved from local storage. Then, the refine actions are matched with the accessControl's actions and its authorization is checked with the granted method. The returned result is then resolved.
You can find more details about this in the refine blog (https://refine.dev/blog/how-to-access-control-with-nestjs/).
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@577213996344803338> kapa.ai is still learning and improving, please let us know how it did by reacting below
adverse-sapphireOP•3y ago
@kapa.ai Can you provide an example with 2 role: admin and user?
Let me check the knowledge base for you. One moment! :books:
----------------------
Sure, here's an example of how you can implement an
accessControlProvider with two roles: admin and user. This example assumes that the admin role has all permissions (list, show, create, edit, delete), while the user role only has list and show permissions.
In this example, the can method checks the user's role and the action they are trying to perform. If the user is an admin, they are allowed to perform all actions. If the user is a user, they are only allowed to list and show.
Please note that this is a simplified example and you might need to adjust it according to your specific needs. For more information, you can refer to the refine blog (https://refine.dev/blog/how-to-access-control-with-nestjs/).
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@577213996344803338> kapa.ai is still learning and improving, please let us know how it did by reacting below
adverse-sapphireOP•3y ago
Can you provide an example with 2 role: admin and user?
Admin can access route: users, services (crud)
User can acces route: scores (crud)
I dont use nestJS, I use Vite @kapa.ai
Let me check the knowledge base for you. One moment! :books:
----------------------
Sure, here's an example of how you can implement an
accessControlProvider with two roles: admin and user. This example assumes that the admin role has all permissions (list, show, create, edit, delete) on users and services routes, while the user role only has list, show, create, edit, delete permissions on scores route.
In this example, the can method checks the user's role and the resource they are trying to access. If the user is an admin, they are allowed to access users and services routes. If the user is a user, they are only allowed to access scores route.
Please note that this is a simplified example and you might need to adjust it according to your specific needs. For more information, you can refer to the refine documentation (https://refine.dev/docs/advanced-tutorials/access-control/).
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@577213996344803338> kapa.ai is still learning and improving, please let us know how it did by reacting below
adverse-sapphireOP•3y ago
When login, i will save the token in localstorage, there is only 1 role at a time (admin or user)
If the role is user, I can acces to scoreboard and scores in the sidebar
if the role is admin, I can access route: users, services (crud) @kapa.ai
Let me check the knowledge base for you. One moment! :books:
----------------------
Sure, you can implement this by checking the role stored in local storage and then deciding which routes the user can access. Here's an example of how you can implement this:
In this example, the
can method checks the user's role and the resource they are trying to access. If the user is an admin, they are allowed to access users and services routes. If the user is a user, they are only allowed to access scoreboard and scores routes.
Please note that this is a simplified example and you might need to adjust it according to your specific needs. For more information, you can refer to the refine documentation (https://refine.dev/docs/advanced-tutorials/access-control/).
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@577213996344803338> kapa.ai is still learning and improving, please let us know how it did by reacting below
adverse-sapphireOP•3y ago
Can I use wildcard or regex for the
for example all resource start with admin/ @kapa.ai
Let me check the knowledge base for you. One moment! :books:
----------------------
Yes, you can use a wildcard or regex to match resources that start with a certain string. Here's an example of how you can implement this:
In this example, if the user is an
admin, they are allowed to access any resource that starts with admin/. If the user is a user, they are only allowed to access scoreboard and scores routes.
Please note that this is a simplified example and you might need to adjust it according to your specific needs. For more information, you can refer to the refine documentation (https://refine.dev/docs/advanced-tutorials/access-control/).
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@577213996344803338> kapa.ai is still learning and improving, please let us know how it did by reacting below
adverse-sapphireOP•3y ago
user also start with /user
@kapa.ai
Let me check the knowledge base for you. One moment! :books:
@tads8799 That's a great question, but unfortunately I am only capable of responding to a maximum of five questions per thread. Don't hesitate to create a new thread for any further questions you have though. I'm here to help!