1.9 KiB
| title |
|---|
| Roles |
Roles
What is a role?
If authorization is about who has permission to be allowed to do what you want to do. Then Roles are common patterns of authorization across users - reducing the administrative overhead.
Why do I need to know about roles?
Some bugs can only be seen for users with specific roles. You will need to change the role to reproduce a problem.
How do we implement roles in DEV.to?
Roles are implemented in this application using Rolify. The list of roles can be found in app/models/role.rb and you can search for has_role in the codebase to find which pages need which roles.
A new user starts without a any roles and there is no administrative way of adding roles to users yet. To assign a user a role you will have to run commands at the console.
Example of adding permissions to a user
- open the Rails console
rails console
- After verifying the user
test_user_nameis missing theprorole we proceed to add and then verify the role has been added.
User.find_by(username: 'test_user_name').has_role? :pro
=> false
User.find_by(username: 'test_user_name').add_role :pro
=> #<Role:
...
name: "pro"
.. >
User.find_by(username: 'test_user_name').has_role? :pro
=> true
Another common requirement is changing to the administrative role and an example of this is found on the admin page.
Verification
A more complex query to list all the users and their roles:
User.joins(:roles).order(:id).group(:id).pluck(:id, :username,'array_agg(roles.name)')