Skip to content

Conversation

@hudsonhrh
Copy link
Member

Summary

  • Fixes bug where users couldn't create projects despite having executive/admin roles
  • Uses creatorHatIds from TaskManager subgraph entity to check project creation permission
  • Adds project-level permission helpers for task operations (create/claim/review/assign)
  • Adds fallback for backwards compatibility with orgs deployed before subgraph update

Problem

The TaskManager has TWO permission levels that were being conflated:

  1. creatorHatIds (TaskManager-level): Who can CREATE PROJECTS
  2. rolePermProj (Project-level): Who can CREATE/CLAIM/REVIEW/ASSIGN TASKS

Changes

File Change
queries.js Add creatorHatIds to GraphQL queries
POContext.js Expose creatorHatIds from taskManager
ProjectSidebar.js Use creatorHatIds for canManageProjects check
MainLayout.js Pass roleHatIds when creating projects for default permissions
TaskColumn.js Use project rolePermissions for task operations
permissions.js New util with TaskPermission constants and helpers
ErrorParser.js Add TaskManager custom error messages (NotCreator, etc)

Dependencies

Requires subgraph PR to be merged first:
PerpetualOrganizationArchitect/subgraph-pop#24

Test plan

  • Create new org and verify admin can create projects
  • Verify member without admin role cannot create projects
  • Verify proper error message shown when permission denied
  • Test backwards compatibility with existing orgs

🤖 Generated with Claude Code

## Problem
Users couldn't create projects despite having executive/admin roles because
the frontend was checking the wrong permission level. The TaskManager has
TWO permission levels:
1. creatorHatIds (TaskManager-level): Who can CREATE PROJECTS
2. rolePermProj (Project-level): Who can CREATE/CLAIM/REVIEW/ASSIGN TASKS

The frontend was conflating these two levels.

## Solution
- Fetch `creatorHatIds` from TaskManager entity in subgraph
- Use `creatorHatIds` to check project creation permission
- Add fallback for orgs deployed before subgraph update
- Add project-level permission helpers for task operations

## Changes
- queries.js: Add creatorHatIds to FETCH_ORG_FULL_DATA and FETCH_PROJECTS_DATA_NEW
- POContext.js: Expose creatorHatIds from taskManager
- ProjectSidebar.js: Use creatorHatIds for canManageProjects check
- MainLayout.js: Pass roleHatIds when creating projects for default permissions
- TaskColumn.js: Use project rolePermissions for task operations
- permissions.js: New util with TaskPermission constants and helpers
- ErrorParser.js: Add TaskManager custom error messages (NotCreator, etc)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants