# Roles in pulpcore
# Goals
* add roles that can be assigned to users or groups of users to transitively grant permissions
* simplicity - initially can be achieved by restricting role creation to plugin writers
* make existence of RBAC completely configurable
# Implementation
* role definitions will live in an access policy. a default policy is provided by plugin writers.
## Todo to support Implementation
* refactor queryset restriction get_queryset() function for filtering objects for a specific user
* TODO: get_objects_for_user() function for filtering objects by permission
* replace the access policy assignment to not be permission based but instead role-based facilities
* e.g. replace add_for_users and add_for_groups to not use guardians
* Remove the django-admin guardian things
* currently ModelAdmin objects inherit from django-guardian
* Need to remove the group permission endpoints
## Timeline
3.16 - Add all the things
3.17 - remove django guardian from the stack
## Future Implementation
* Add facilities in the API to list roles
* Add facilities in the API to add global roles to users
* Add facilities in the API to add global roles to groups
* Add facilities in the API to add global roles to users for specific objects
* Add facilities in the API to add global roles to groups for specific objects
Note: users would not be able to do these operations ^ at a "permission" level
# Use cases
* Access policy is only created/updated before anything exists in Pulp
###### tags: `RBAC`