Project

General

Profile

Actions

Feature #1510

closed
CD

Implement internal user roles with ticket progression and assignment controls

Feature #1510: Implement internal user roles with ticket progression and assignment controls

Added by Client Dashboard 5 days ago. Updated 4 days ago.

Status:
Shipped
Priority:
Normal
Assignee:
-
Start date:
07/31/2026
Due date:
% Done:

100%

Estimated time:
(Total: 0:00 h)
spec_ref:

docs/superpowers/specs/2026-07-31-internal-roles-design.md

build_status:
passed
build_number:
ci_run_url:
https://ci.omdev.tech/job/pipeliner-client/job/master/107/
scan_status:
scan_report_url:
deploy_status:
deployed
preprod_url:
deployed_at:
07/31/2026
branch:
feat/1510-internal-roles
pr_url:
security_key:
severity:
paused:

Description

### Problem
Currently, Pipeliner lacks role-based controls for internal users (e.g., CTOs, Developers) to manage ticket progression and assignments. This creates inefficiencies where:
- Developers cannot manually advance their assigned tickets.
- CTOs cannot assign tickets to Developers or move any ticket forward.
- Admins cannot configure these permissions without manual overrides.

### Context
To streamline workflows, Pipeliner needs:
1. **Internal user roles** (CTO, Developer) with distinct permissions:
- **CTO**: Can move **any** ticket forward to the next logical status **and** assign tickets to Developers.
- **Developer**: Can only move **their own assigned tickets** forward.
2. **UI controls** in the ticket panel:
- A "Move Forward" button (advances to next logical status).
- A "Change Status" dropdown (lets users pick any allowed status).
- An "Assign to Developer" dropdown (visible only to CTOs).
3. **Admin configuration**: Assign roles to internal users/teams in the existing admin dashboard.
4. **Integration**: All roles connect to Pipeliner with the same login flow as clients but with additional controls.

### Proposed Behaviour
- **Ticket Panel**: Add the following controls:
- "Move Forward" button (visible to CTOs and assigned Developers; disabled for others with a tooltip explaining permissions).
- "Change Status" dropdown (shows all allowed statuses; defaults to next logical status).
- "Assign to Developer" dropdown (visible only to CTOs; lists all Developers in the project/team).
- **Permissions**: Enforce role-based access server-side (e.g., 403 error if a Developer tries to move an unassigned ticket).
- **Admin Dashboard**: Extend the existing user management section to assign roles (CTO/Developer) to internal users or teams.

## Acceptance criteria
['- [ ] **Role-Based Permissions**: CTOs can move any ticket forward and assign tickets to Developers; Developers can only move their own assigned tickets forward.', '- [ ] **UI Controls in Ticket Panel**:\n - "Move Forward" button advances the ticket to the next logical status (visible to CTOs/assigned Developers; disabled for others with a tooltip).\n - "Change Status" dropdown lets users pick any allowed status (defaults to next logical status).\n - "Assign to Developer" dropdown (visible only to CTOs) lists all Developers in the project/team.', '- [ ] **Admin Role Assignment**: Admins can assign CTO/Developer roles to internal users or teams in the existing admin dashboard.', '- [ ] **Permission Enforcement**: Server-side validation returns a 403 error if a user attempts an unauthorized action (e.g., a Developer moving an unassigned ticket).', '- [ ] **Integration**: Internal users (CTO/Developer) log in via the same flow as clients but see additional controls (e.g., assignment dropdown).', '- [ ] **Testing**: Verify:\n - CTOs can move any ticket forward and assign tickets to Developers.\n - Developers can only move their own assigned tickets forward.\n - Admins can assign roles without errors.\n - Unauthorized actions trigger appropriate error messages/tooltips.']

## Classification
- feature

## Complexity
- 7/10 — Requires new role-based permission logic, UI controls, and admin configuration, but leverages existing auth and ticket management systems.


Subtasks 7 (0 open7 closed)

Feature #1522: Domain foundation: internal role columns + target-aware progression moduleShipped07/31/2026

Actions
Feature #1523: Redmine port + adapter: write ticket assignee, with clean upstream-error mappingShipped07/31/2026

Actions
Feature #1524: Role-gated transition on REST + MCP, and the MCP capability-parity fixShipped07/31/2026

Actions
Feature #1525: Assign route, project developers list, and the can_assign capability flagShipped07/31/2026

Actions
Feature #1526: Admin dashboard: set internal role and a validated redmine_user_idShipped07/31/2026

Actions
Feature #1527: Ticket panel: Move Forward and a role-correct Change Status controlShipped07/31/2026

Actions
Feature #1528: Ticket panel: Assign to Developer and assignee visibilityShipped07/31/2026

Actions
Actions

Also available in: PDF Atom