Skip to content

Conversation

@icecrasher321
Copy link
Collaborator

Summary

Need >read perms to reorder workflows.

Type of Change

  • Bug fix

Testing

Tested manually

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

@vercel
Copy link

vercel bot commented Jan 15, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Review Updated (UTC)
docs Skipped Skipped Jan 15, 2026 7:22am

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 15, 2026

Greptile Summary

Fixed permission enforcement for drag-and-drop reordering of workflows and folders in the sidebar. Previously, users with read-only permissions could drag and reorder items. Now, drag operations are properly disabled for read-only users by:

  • Adding a disabled option to useDragDrop that returns noop handlers when true
  • Passing canEdit permission (true for write/admin users) as canReorder prop from Sidebar to WorkflowList
  • Propagating dragDisabled flag to WorkflowItem and FolderItem components
  • Setting draggable={!isEditing && !dragDisabled} on draggable elements

The implementation correctly uses canEdit which is true only for users with write or admin permissions, ensuring read-only users cannot reorder workflows or folders.

Confidence Score: 5/5

  • This PR is safe to merge with no issues found
  • The implementation correctly enforces permission checks throughout the drag-and-drop flow, properly threading the permission state from the context through all affected components, and provides appropriate noop handlers when disabled
  • No files require special attention

Important Files Changed

Filename Overview
apps/sim/app/workspace/[workspaceId]/w/components/sidebar/hooks/use-drag-drop.ts Added disabled option to prevent drag operations when user lacks edit permissions, returns noop handlers when disabled
apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx Passes canEdit permission as canReorder prop to WorkflowList
apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/workflow-list.tsx Accepts canReorder prop, passes it to useDragDrop as disabled flag, propagates dragDisabled to child components
apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/workflow-item/workflow-item.tsx Added dragDisabled prop to prevent drag when user lacks edit permissions
apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/folder-item/folder-item.tsx Added dragDisabled prop to prevent drag when user lacks edit permissions

Sequence Diagram

sequenceDiagram
    participant User
    participant Sidebar
    participant WorkflowList
    participant useDragDrop
    participant WorkflowItem
    participant FolderItem
    
    User->>Sidebar: Render sidebar
    Sidebar->>Sidebar: Get canEdit from useUserPermissionsContext()
    Note over Sidebar: canEdit = true for write/admin<br/>canEdit = false for read-only
    Sidebar->>WorkflowList: Pass canReorder={canEdit}
    WorkflowList->>useDragDrop: Call useDragDrop({disabled: !canReorder})
    
    alt canReorder = false (read-only user)
        useDragDrop->>useDragDrop: Return noop handlers
        useDragDrop->>WorkflowList: Return {disabled: true, ...noopHandlers}
        WorkflowList->>WorkflowItem: Pass dragDisabled={true}
        WorkflowList->>FolderItem: Pass dragDisabled={true}
        WorkflowItem->>WorkflowItem: Set draggable={false}
        FolderItem->>FolderItem: Set draggable={false}
        Note over WorkflowItem,FolderItem: Drag operations blocked
    else canReorder = true (write/admin user)
        useDragDrop->>useDragDrop: Return functional handlers
        useDragDrop->>WorkflowList: Return {disabled: false, ...dragHandlers}
        WorkflowList->>WorkflowItem: Pass dragDisabled={false}
        WorkflowList->>FolderItem: Pass dragDisabled={false}
        WorkflowItem->>WorkflowItem: Set draggable={true}
        FolderItem->>FolderItem: Set draggable={true}
        Note over WorkflowItem,FolderItem: Drag operations enabled
        User->>WorkflowItem: Drag workflow
        WorkflowItem->>useDragDrop: handleDragStart/handleDrop
        useDragDrop->>useDragDrop: Reorder workflows via API
    end
Loading

@icecrasher321 icecrasher321 merged commit e53538d into staging Jan 15, 2026
11 checks passed
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