The Project Users table already has a trash icon on each row to remove a user from the project. As part of moving role management onto the project page, removal needs guardrails so a Project Manager can't accidentally remove themselves, leave a project with no PM, or strand a user's assigned work. This ticket adds a confirmation step to every removal and blocks the three unsafe cases.
Functional Requirements
Removing a User
- Keep the existing trash icon on each user row as the remove action.
- Require a confirmation step before removing: "Remove [Name] from this project?" with confirm/cancel.
- Removing a user revokes their access to this project only; it does not affect their org account or other projects.
- A Project Manager may not remove themselves. The remove action is hidden or disabled on the PM's own row.
- If removing a user would leave the project with no Project Manager, block the removal and show an explanatory message.
- If the user being removed has active drafter or peer checker assignments, block the removal and show a message "[Name] still has assigned work." There is no auto-unassign; the PM must go reassign that work before removal is allowed.
Note: This applies even if other PMs exist on the project — a PM can never remove or demote themselves; only a different Project Manager can remove or change the role of another PM.
The Project Users table already has a trash icon on each row to remove a user from the project. As part of moving role management onto the project page, removal needs guardrails so a Project Manager can't accidentally remove themselves, leave a project with no PM, or strand a user's assigned work. This ticket adds a confirmation step to every removal and blocks the three unsafe cases.
Functional Requirements
Removing a User