Skip to content

Conversation

@arnav-makkar
Copy link
Contributor

Brief summary of changes

This PR adds an External Issue ID field to the issue_tracker module, allowing administrators to link LORIS issues to external issue trackers (e.g., GitHub, Jira).

Key Features:

  • New externalIssueID field (varchar 255) in the issues table
  • Permission-based visibility and editing control via issue_tracker_external_id permission
  • Field changes tracked in issue history
  • Security: Backend validation prevents unauthorized edits via direct API calls

img

Implementation Details:

  • Database: Added column to issues table and updated issues_history enum

  • Backend: Permission checks in GET (hide field) and POST (validate edits) endpoints

  • Frontend: Conditional rendering and editing based on user permission

  • Migration: SQL patch for existing databases (2026-01-04-Add_ExternalIssueID_to_issues.sql)

  • Have you updated related documentation?

    • CHANGELOG.md updated
    • Test plan updated with 7 new test cases
    • Raisinbread test data updated

Link(s) to related issue(s)

…es#9795)

This commit adds an ExternalIssueID field to the issue_tracker module,
allowing administrators to link LORIS issues to external issue trackers
(e.g., GitHub, Jira).

Changes:
- Add externalIssueID column to issues table (varchar 255)
- Add externalIssueID to issues_history fieldChanged enum for tracking
- Create new permission: issue_tracker_external_id
- Backend: Hide field from GET response if user lacks permission
- Backend: Validate POST requests to prevent unauthorized edits
- Frontend: Conditionally render field based on permission
- Frontend: Restrict editing to users with specific permission
- Update CommentList to display externalIssueID changes in history
- Update raisinbread test data with new column and permission

Security:
- Users without issue_tracker_external_id permission cannot view the field
- Frontend prevents editing by checking hasExternalIdPermission
- Backend validates POST data and strips externalIssueID if unauthorized
- Prevents bypass attempts via direct API calls

[issue_tracker] Update documentation for External Issue ID feature (aces#9795)

- Add CHANGELOG entry for External Issue ID field
- Update test plan with test cases for External Issue ID visibility and editing
- Add test cases for permission-based access control
- Add security test for backend validation
@github-actions github-actions bot added Language: SQL PR or issue that update SQL code RaisinBread PR or issue introducing/requiring improvements to the Raidinbread dataset Language: PHP PR or issue that update PHP code Language: Javascript PR or issue that update Javascript code Module: issue_tracker PR or issue related to issue tracker module labels Jan 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Language: Javascript PR or issue that update Javascript code Language: PHP PR or issue that update PHP code Language: SQL PR or issue that update SQL code Module: issue_tracker PR or issue related to issue tracker module RaisinBread PR or issue introducing/requiring improvements to the Raidinbread dataset

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[issue_tracker] External Issue ID

1 participant