fix: authz compat layer was failing on libraries v2 keys#38131
fix: authz compat layer was failing on libraries v2 keys#38131wgu-taylor-payne merged 6 commits intoopenedx:masterfrom
Conversation
|
Thanks for the pull request, @rodmgwgu! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. DetailsWhere can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
| filtered_assignments = [assignment for assignment in assignments if assignment.scope.NAMESPACE == 'course-v1'] | ||
| return filtered_assignments | ||
|
|
||
| def get_org_from_key(key: str) -> str: |
There was a problem hiding this comment.
Since we filter by the course-v1 namespace before calling this function in each case, is it worth keeping?
There was a problem hiding this comment.
I've removed the Libraries V2 key parsing as it's not needed, but I've kept the function as I think it improves legibility on the implementation, what do you think?
common/djangoapps/student/roles.py
Outdated
| """ | ||
| assignments = authz_api.get_user_role_assignments(user_external_key=user.username) | ||
| # filter courses only | ||
| filtered_assignments = [assignment for assignment in assignments if assignment.scope.NAMESPACE == 'course-v1'] |
There was a problem hiding this comment.
I think I would lean towards checking the class instead. What do you think?
| filtered_assignments = [assignment for assignment in assignments if assignment.scope.NAMESPACE == 'course-v1'] | |
| filtered_assignments = [assignment for assignment in assignments if isinstance(assignment.scope, CourseOverviewData)] |
bmtcril
left a comment
There was a problem hiding this comment.
I agree with Taylor's suggestions, and it would also be good to put in a test to make sure this does't pop up again in some later refactor. Seems like an easy mistake to make.
bmtcril
left a comment
There was a problem hiding this comment.
I agree with Taylor's suggestions, and it would also be good to put in a test to make sure this does't pop up again in some later refactor. Seems like an easy mistake to make.
…trying to parse libv2 keys as its no longer required
2a0515f to
13e0b7b
Compare
|
I'm working on adding the test, will move back to ready for review once that is done |
|
Test added, the PR is now ready for review, thanks! |
BryanttV
left a comment
There was a problem hiding this comment.
Thanks for fixing this! LGTM
Description
Follow up on #38013
The code on the RBAC AuthZ compatibility layer for course authoring was querying for all roles assigned to a user, which also included library v2 permissions, which the CourseKey class was not expecting and causing an exception.
Added filtering so only courses-v1 role assignments are returned.
Supporting information
Bug reported by @BryanttV
Testing instructions
Deadline
Verawood release