Authoring Roles and Permissions

Authoring Roles and Permissions

Status

This is a draft for scope alignment. Feedback is welcome.

Purpose

Define the permissions expected for Studio Authoring, what each permission covers, and which roles should have it. Items that still need validation are listed at the end.

These roles are proposed for Studio Authoring and map to the permission catalog below. They are meant to introduce clearer boundaries than the current broad legacy Staff patterns, without changing legacy authorization outside the authoring scope.


1. Permission catalog

Course access, creation, and content

  • courses.view_course
    View course in the course list, access the course outline in read only mode, includes the “View Live” entry point.

  • courses.create_course
    Create a new course in Studio.

  • courses.edit_course_content
    Edit course content, outline, units, components.

  • courses.publish_course_content
    Publish course content.

Library updates

  • courses.manage_library_updates
    Accept or reject library updates in Studio.

Course updates and handouts

  • courses.view_course_updates
    View course updates and handouts.

  • courses.manage_course_updates
    Manage course updates and handouts, create, edit, delete.

Pages and Resources

  • courses.view_pages_and_resources
    View Pages and Resources.

  • courses.manage_pages_and_resources
    Edit Pages and Resources, including toggles and content managed from that section.

Files

  • courses.view_files
    View the Files page.

  • courses.create_files
    Upload files.

  • courses.edit_files
    Non destructive file actions, for example lock or unlock, exact actions depend on implementation.

  • courses.delete_files
    Delete files.

Schedule and Details

  • courses.view_schedule
    View course schedule.

  • courses.edit_schedule
    Edit course schedule.

  • courses.view_details
    View course details.

  • courses.edit_details
    Edit course details, includes Course Summary, Course Pacing, Course Details, Course Pre requisite.

Grading settings

  • courses.view_grading_settings
    View grading settings page.

  • courses.edit_grading_settings
    Edit grading settings.

Course team and groups

  • courses.view_course_team
    View the course team roster.

  • courses.manage_course_team
    Edit course team membership and roles.

  • courses.manage_group_configurations
    Manage content groups.

Tags and taxonomies

  • courses.manage_tags (placeholder name)
    Create, edit, delete tags.

  • courses.manage_taxonomies (placeholder name)
    Create, edit, delete taxonomies.

Advanced and certificates

  • courses.manage_advanced_settings
    Access and edit Advanced Settings.

  • courses.manage_certificates
    Access and edit Certificates.

Import and export

  • courses.import_course
    Show Import in Studio, this is treated as a high privilege action and effectively implies most authoring permissions.

  • courses.export_course
    Show Export in Studio.

  • courses.export_tags
    Export tags.

Other

  • courses.view_checklists
    View checklists.

  • view_global_staff_and_superadmins (placeholder name)
    Allow course or library admins to view the list of global Staff and Super Admin users.

Explicitly out of scope for this iteration

  • courses.delete_course
    Not currently supported in Studio, and out of scope for Authoring AuthZ.


2. Roles and permission sets

These roles are proposed for Studio Authoring. They map to the permissions above and define boundaries between content work, course operations, and course administration.

Course Auditor

What this role is for: QA, compliance review, content review, and general oversight, no changes in Studio.
Permissions:

  • courses.view_course

  • courses.view_course_updates

  • courses.view_pages_and_resources

  • courses.view_files

  • courses.view_grading

  • courses.view_checklists

  • courses.view_course_team

  • courses.view_schedule

  • courses.view_details

Course Editor (name TBD)

What this role is for: building and maintaining course content and supporting assets, without operational controls or high impact actions that can affect a live course.
Permissions:

  • Everything in Course Auditor, plus:

    • courses.edit_course_content

    • courses.manage_library_updates

    • courses.manage_course_updates

    • courses.manage_pages_and_resources

    • courses.create_files

    • courses.edit_files

    • courses.edit_grading

    • courses.manage_group_configurations

    • courses.edit_details

    • courses.manage_tags (placeholder)

Explicit exclusions:

  • courses.publish_course_content

  • courses.delete_files

  • courses.edit_schedule

  • courses.manage_advanced_settings

  • courses.manage_certificates

  • courses.import_course

  • courses.export_course

Course Staff

What this role is for: operating the course lifecycle in Studio, publishing content, handling scheduling, and managing high impact configuration for the course.
Permissions:

  • Everything in Course Editor, plus:

    • courses.publish_course_content

    • courses.delete_files

    • courses.edit_schedule

    • courses.manage_advanced_settings

    • courses.manage_certificates

    • courses.import_course

    • courses.export_course

    • courses.export_tags

Course Admin

What this role is for: course level administration, including access and role management for the course team, plus all Staff capabilities.
Permissions:

  • Everything in Course Staff, plus:

    • courses.manage_course_team

    • courses.manage_taxonomies (placeholder)


3. Items to validate

A) Create course, granting model

  • courses.create_course stays as an independent permission, separate from library creation.

  • Granting flow decision:

    • Option 1: keep granting via Django admin

    • Option 2: grant via a Console flow, gated by a platform level role, for example Super Admin. If we go this route, this should land at the end of development since it requires new UI work.

B) Files and publish coupling

  • Decision needed: keep courses.delete_files separate, or unify it with courses.publish_course_content as a single high impact permission.

  • Rationale: file deletion is the only permission related to publishing that can affect a published course, breaking course content by removing referenced assets.

  • Update: there is a “currently in use“ state, maybe we can create some rules using that.

C) Schedule and Details split, enforcement feasibility

  • We will split Schedule and Details into separate permissions:

    • courses.edit_schedule for course scheduling controls

    • courses.edit_details for Course Summary, Course Pacing, Course Details, Course Pre requisite

  • Flow review needed to confirm Studio enforcement points support this split cleanly.

D) Advanced settings, certificates, proctored exams

  • courses.manage_advanced_settings, courses.manage_certificates need a full flow review to decide:

    • whether Course Editor should have any access

    • whether finer grained permissions are needed

  • Proctored exam enable and disable should be reviewed as a flow, including external tool dependencies, then mapped to a permission.

E) Re run course

  • Not included in the catalog or role sets yet.

  • Flow review needed to confirm:

    • whether Staff and Admin can do it today

    • whether it is related to courses.create_course, for example if users who can create courses can also re run courses

    • whether re run requires a dedicated permission, or should be treated as part of create course

F) Tags and taxonomies

  • courses.manage_tags and courses.manage_taxonomies are placeholders.

  • We need to review tags and taxonomies in more detail to align on:

    • final permission IDs and scope, course scoped vs platform scoped

    • the Studio surfaces they gate

    • whether Course Editor should have them by default, or if they stay Staff and Admin only