Skip to content

[BUG FIX] [MER-5351] replace exact admin role checks with hierarchical permission helpers#6293

Open
andersweinstein wants to merge 1 commit intomasterfrom
MER-5351-replace-has-admin-role
Open

[BUG FIX] [MER-5351] replace exact admin role checks with hierarchical permission helpers#6293
andersweinstein wants to merge 1 commit intomasterfrom
MER-5351-replace-has-admin-role

Conversation

@andersweinstein
Copy link
Contributor

@andersweinstein andersweinstein commented Mar 13, 2026

This PR replaces exact admin-role checks with hierarchical permission helpers across Torus so higher admin levels inherit lower-level capabilities consistently.

Previously, a number of call sites used has_admin_role?(..., :content_admin), which excluded account_admin users from behavior that was clearly intended to mean “content admin or higher.” This caused erroneous behavior such as account admins missing controls on pages they could otherwise access. This change standardizes permission checks on the level-based functions at_least_content_admin?/1 and at_least_account_admin?/1, adding is_system_admin?/1 for the remaining system-admin-specific cases, and removes has_admin_role?/2 entirely.

Tests
Tests were updated to reflect the level-based model, and a regression test was added for /authoring/projects to verify that account admins now see and can use the same “Show all projects” control available to content admins.
Validation:

  • mix test test/oli/accounts_test.exs test/oli_web/live/projects_live_test.exs

Notes

  1. is_admin?/1 is currently equivalent to at_least_content_admin?/1, since both return true for content_admin, account_admin, and system_admin. This change still uses at_least_content_admin?/1 at authorization sites where the intent appeared to be specifically “content admin or higher,” because that makes the minimum required privilege explicit and preserves the role-level semantics in the code instead of collapsing them into a generic “some admin” check.

  2. The problematic behavior was specifically with has_admin_role?(..., :content_admin). Uses of has_admin_role?(..., :account_admin) were not causing incorrect authorization under the current role model, because system_admin was still included correctly. Those call sites are being replaced anyway withat_least_account_admin?/1to standardize on one consistent pattern for level-based admin checks and to make the hierarchical semantics of admin roles explicit everywhere. has_admin_role?(..., :system_admin) similarly worked correctly, but has been replaced in the interest of standardizing on one set of predicates and removing the potentially error-prone has_admin_role? function.

@github-actions
Copy link
Contributor

Risk score: 7 → risk/medium

Generated by 🚫 dangerJS against 99a2844

@github-actions
Copy link
Contributor

github-actions bot commented Mar 13, 2026

AI Review — security

No issues found

@github-actions
Copy link
Contributor

github-actions bot commented Mar 13, 2026

AI Review — performance

Repeated role map lookups in hot authorization checks

file: lib/oli/accounts.ex
line: 556
Description: at_least_content_admin?/1 and related checks repeatedly call SystemRole.role_id() within a single function execution. These checks are used widely across controllers and LiveViews, so repeated lookups add avoidable CPU overhead on frequently executed request/render paths.
Suggestion: Cache role ids once per function call, e.g. roles = SystemRole.role_id() and then compare against roles.content_admin, roles.account_admin, and roles.system_admin.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 13, 2026

AI Review — ui

No issues found

@github-actions
Copy link
Contributor

github-actions bot commented Mar 13, 2026

AI Review — elixir

No issues found

@github-actions
Copy link
Contributor

PrivSignal Report

Top-level result: HIGH with PR label privacy-high

Score High Medium Low Total
HIGH 103 34 4 141

Links: artifact bundle

Detail Value
Base ref used origin/master
Scan exit 0
Diff exit 0
Score exit 0
Lockfile changed true
Reason events 103
Sample events shown 25

Reason Events

Rule Type Class Source Sink Location
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high cookies_consent_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high conversation_message_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_registration_auth_token_url assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:577
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high author_token_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high user_token_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high collaboration_post_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_usage_request_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_deployment_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high author_token_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high cookies_consent_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high part_attempt_datashop_session_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_pending_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_pending_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high section_context_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high section_context_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high author_identity_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_project_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high activity_attempt_save_file_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high collaboration_user_reaction_post_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high user_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high resource_access_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_project_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_bypassed_by_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high institution_pending_registration_deployment_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high collaboration_post_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high conversation_message_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high resource_access_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high activity_attempt_save_file_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high conversation_message_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_invalidated_by_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_client_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high collaboration_post_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high author_identity_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_provider_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_pending_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_registration_client_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high part_attempt_datashop_session_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high audit_log_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_invalidated_by_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high author_token_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_usage_request_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_registration_client_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high institution_pending_registration_client_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high collaboration_user_reaction_post_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high user_identity_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high audit_log_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_usage_bearer_token_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_params assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:384
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_bypassed_by_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high section_invite_token assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:577
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high audit_log_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_usage_bearer_token_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_registration_client_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high user_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high institution_pending_registration_client_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high audit_log_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_invalidated_by_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_usage_request_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high user_token_token assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:577
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high user_identity_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high author_identity_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high section_context_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_deployment_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high custom_activity_log_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_client_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high user_token_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high institution_pending_registration_client_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high student_exception_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high audit_log_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_context_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high user_identity_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_client_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_bypassed_by_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high collaboration_user_reaction_post_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_provider_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high student_exception_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high custom_activity_log_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_usage_request_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:577
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high resource_access_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high activity_attempt_save_file_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_usage_bearer_token_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:577
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_context_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_provider_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high author_token_token assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:577
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_usage_bearer_token_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high part_attempt_datashop_session_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high audit_log_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high institution_pending_registration_deployment_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_project_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high user_token_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high user_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high custom_activity_log_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high cookies_consent_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high student_exception_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_deployment_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high institution_pending_registration_deployment_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_context_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043

Sample Of All Events

Rule Type Class Source Sink Location
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high cookies_consent_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high conversation_message_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_registration_auth_token_url assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:577
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high author_token_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high user_token_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high collaboration_post_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_usage_request_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high lti_params_deployment_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high author_token_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high cookies_consent_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high part_attempt_datashop_session_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_pending_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_pending_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high section_context_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high section_context_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high author_identity_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_project_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high activity_attempt_save_file_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high collaboration_user_reaction_post_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:412
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high user_author_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high resource_access_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high mcp_bearer_token_project_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:265
R-HIGH-EXTERNAL-FLOW-ADDED edge_added high payment_bypassed_by_user_id assign lib/oli_web/live/delivery/instructor_dashboard/intelligent_dashboard_tab.ex:1043

@github-actions
Copy link
Contributor

Preview deployed to: https://pr-6293.plasma.oli.cmu.edu

@andersweinstein andersweinstein marked this pull request as ready for review March 13, 2026 16:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant