openedx / openedx/openedx-authz

Permission Grouping and Role Inheritance

Open
#91 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
0
Forks
9
Avg merge
13d 9h
Merged PRs (30d)
9

Description

Description

For the MVP, all permissions will be explicitly defined within each role in the default policy file.
Permission grouping and role inheritance will not be implemented at this stage to maintain simplicity and predictability.
In the long term, however, grouping and inheritance are essential to improve maintainability, reduce duplication, and enable scalable management of custom roles.

Problem
  • Duplication: Roles currently repeat many of the same permissions, making updates error-prone and harder to maintain.
  • Scalability: Without grouping or inheritance, adding new roles or permissions will not scale when introducing custom roles or role management APIs.
  • User experience: Administrators will find it difficult to understand or manage large permission sets without hierarchical organization.
  • Consistency: Roles with overlapping functionality (e.g., admin and author) cannot share a common base definition, increasing the risk of divergence.
Requirements
  • Define a clear stance for the MVP:

    • Permission grouping and role inheritance are out of scope for the MVP.
    • All permissions must be explicitly listed per role in the default policy file.
  • Plan a long-term path for:

    • Permission grouping, where high-level actions imply lower-level ones (e.g., manage_library_team includes edit_library and view_library).
    • Role inheritance, where roles can extend other roles (e.g., admin inherits from author).
  • Ensure future extensibility by keeping the policy structure compatible with eventual grouping (g2) and inheritance (g) relationships.

  • Document how this decision will evolve in post-MVP iterations.

Acceptance Criteria
  • The MVP defines all permissions explicitly without relying on implicit grouping or inheritance.
  • Authorization checks remain correct and predictable with the explicit model.
  • The policy format and loading logic remain compatible with future grouping and inheritance extensions.
  • Documentation clearly states the rationale and outlines the planned evolution for post-MVP iterations.
Notes
  • This issue is related to Custom Roles and Role Management APIs, since both will depend on grouping and inheritance for scalability.
  • Permission grouping and role inheritance will become critical once the system supports dynamic role creation through the Console.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the default policy file, policy format, and policy loading logic described in the issue. Confirm that MVP roles list permissions explicitly and that authorization checks remain predictable, while documenting compatibility with future grouping and inheritance and the planned post-MVP evolution.

Written by the indexing model from the issue text.

Assessment

Domain
authorization
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.