Skip to main content

Open edX AuthZ provides the architecture and foundations of the authorization framework.

Project description

openedx-authz

PyPI CI Codecov Documentation Supported Python versions License status-badge

Purpose

Open edX AuthZ provides the architecture and foundations of the authorization framework. It implements the core machinery needed to support consistent authorization across the Open edX ecosystem.

This repository centralizes the architecture, design decisions, and reference implementation of a unified model for roles and permissions. It introduces custom roles, flexible scopes, and policy-based evaluation, aiming to replace the fragmented legacy system with a scalable, extensible, and reusable solution.

See the Product Requirements document for Roles & Permissions for detailed specifications and requirements.

Change Log

Unreleased

0.17.0 - 2025-11-14

Added

  • Signal to clear policies associated to a user when they are retired.

0.16.0 - 2025-11-13

Changed

  • BREAKING: Update permission format to include app namespace prefix.

Added

  • Register CasbinRule model in the Django admin.

  • Register ExtendedCasbinRule model in the Django admin as an inline model of CasbinRule.

0.15.0 - 2025-11-11

Added

  • ExtendedCasbinRule model to extend the base CasbinRule model for additional metadata, and cascade delete support.

0.14.0 - 2025-11-11

Added

  • Implement custom matcher to check for staff and superuser status.

0.13.1 - 2025-11-11

Fixed

  • Avoid duplicates when getting scopes for given user and permissions.

0.13.0 - 2025-11-05

Added

  • Add support for global scopes instead of generic sc scope to support instance-level permissions.

0.12.0 - 2025-10-30

Changed

  • Load authorization policies in permission class.

0.11.2 - 2025-10-30

Added

  • Consider Content Library V2 toggle only in CMS service variant.

0.11.1 - 2025-10-29

Changed

  • Refactor to get permissions’ scopes instead of role.

Fixed

  • Use correct content library toggle to check if Content Library V2 is enabled.

0.11.0 - 2025-10-29

Added

  • Disable auto-save and auto-load of policies if Content Library V2 is disabled.

0.10.1 - 2025-10-28

Fixed

  • Fix constants and test class to be able to use it outside this app.

0.10.0 - 2025-10-28

Added

  • New get_object() method in ScopeData to retrieve underlying domain objects

  • Implementation of get_object() for ContentLibraryData with canonical key validation

Changed

  • Refactor ContentLibraryData.exists() to use get_object() internally

0.9.1 - 2025-10-28

Fixed

  • Fix role user count to accurately filter users assigned to roles within specific scopes instead of across all scopes.

0.9.0 - 2025-10-27

Added

  • Function API to retrieve scopes for a given role and subject.

0.8.0 - 2025-10-24

Added

  • Allow disabling auto-load and auto-save of policies by setting CASBIN_AUTO_LOAD_POLICY_INTERVAL to -1.

Changed

  • Migrate from using pycodestyle and isort to ruff for code quality checks and formatting.

  • Enhance enforcement command with dual operational modes (database and file mode).

0.7.0 - 2025-10-23

Added

  • Initial migration to establish dependency on casbin_adapter for automatic CasbinRule table creation.

0.6.0 - 2025-10-22

Changed

  • Use a SyncedEnforcer with default auto load policy.

Removed

  • Remove Casbin Redis watcher from engine configuration.

0.5.0 - 2025-10-21

Added

  • Default policy for Content Library roles and permissions.

Fixed

  • Add plugin_settings in test settings.

  • Update permissions for RoleListView.

0.4.1 - 2025-10-16

Fixed

  • Load policy before adding policies in the loading script to avoid duplicates.

0.4.0 - 2025-16-10

Changed

  • Initialize enforcer when application is ready to avoid access errors.

0.3.0 - 2025-10-10

Added

  • Implementation of REST API for roles and permissions management.

0.2.0 - 2025-10-10

Added

  • ADRs for key design decisions.

  • Casbin model (CONF) and engine layer for authorization.

  • Implementation of public API for roles and permissions management.

0.1.0 - 2025-08-27

Added

  • Basic repo structure and initial setup.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openedx_authz-0.17.0.tar.gz (96.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openedx_authz-0.17.0-py2.py3-none-any.whl (112.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file openedx_authz-0.17.0.tar.gz.

File metadata

  • Download URL: openedx_authz-0.17.0.tar.gz
  • Upload date:
  • Size: 96.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for openedx_authz-0.17.0.tar.gz
Algorithm Hash digest
SHA256 4633e6bb3abb8b75af1e54a130379c677e289376be768e5b3a9e7b977bd92605
MD5 819e4f701e905a2e5e76523ea9c09118
BLAKE2b-256 e35a75dab1f526c6cef252c2f28e3c08b2566301c8ef8a94562b3a65283f0bff

See more details on using hashes here.

File details

Details for the file openedx_authz-0.17.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for openedx_authz-0.17.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ebc990eaad4bc31115e19e36dcb1ba1441835474c0ef9b5958c61c5e80afb728
MD5 84ad4e71b4086bb07e14b01a40cf0d5e
BLAKE2b-256 4938e20133679995a0b39703dc6fea5fb36a9231ace5394f672b3c2b75daa814

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page