diff --git a/apps/sim/app/api/workspaces/invitations/route.ts b/apps/sim/app/api/workspaces/invitations/route.ts index 7e2a2041f7..c87889d10f 100644 --- a/apps/sim/app/api/workspaces/invitations/route.ts +++ b/apps/sim/app/api/workspaces/invitations/route.ts @@ -24,7 +24,7 @@ export async function GET(req: NextRequest) { } try { - // First get all workspaces where the user is a member with owner role + // Get all workspaces where the user is a member (any role) const userWorkspaces = await db .select({ id: workspace.id }) .from(workspace) @@ -32,8 +32,7 @@ export async function GET(req: NextRequest) { workspaceMember, and( eq(workspaceMember.workspaceId, workspace.id), - eq(workspaceMember.userId, session.user.id), - eq(workspaceMember.role, 'owner') + eq(workspaceMember.userId, session.user.id) ) ) @@ -41,7 +40,7 @@ export async function GET(req: NextRequest) { return NextResponse.json({ invitations: [] }) } - // Get all workspaceIds where the user is an owner + // Get all workspaceIds where the user is a member const workspaceIds = userWorkspaces.map((w) => w.id) // Find all invitations for those workspaces @@ -84,11 +83,8 @@ export async function POST(req: NextRequest) { ) .then((rows) => rows[0]) - if (!membership || membership.role !== 'owner') { - return NextResponse.json( - { error: 'You are not authorized to invite to this workspace' }, - { status: 403 } - ) + if (!membership) { + return NextResponse.json({ error: 'You are not a member of this workspace' }, { status: 403 }) } // Get the workspace details for the email diff --git a/apps/sim/app/w/components/sidebar/components/invite-modal/invite-modal.tsx b/apps/sim/app/w/components/sidebar/components/invite-modal/invite-modal.tsx index b1c331ebb7..4005030e06 100644 --- a/apps/sim/app/w/components/sidebar/components/invite-modal/invite-modal.tsx +++ b/apps/sim/app/w/components/sidebar/components/invite-modal/invite-modal.tsx @@ -1,14 +1,12 @@ 'use client' -import { KeyboardEvent, useEffect, useState } from 'react' -import { Check, Loader2, X, XCircle } from 'lucide-react' -import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert' +import { KeyboardEvent, useState } from 'react' +import { Loader2, X } from 'lucide-react' import { Button } from '@/components/ui/button' import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog' import { Input } from '@/components/ui/input' import { cn } from '@/lib/utils' import { useWorkflowRegistry } from '@/stores/workflows/registry/store' -import { InvitesSent } from './invites-sent/invites-sent' interface InviteModalProps { open: boolean diff --git a/apps/sim/app/w/components/sidebar/components/invite-modal/invites-sent/invites-sent.tsx b/apps/sim/app/w/components/sidebar/components/invite-modal/invites-sent/invites-sent.tsx index 0618f79296..b7b570bc0e 100644 --- a/apps/sim/app/w/components/sidebar/components/invite-modal/invites-sent/invites-sent.tsx +++ b/apps/sim/app/w/components/sidebar/components/invite-modal/invites-sent/invites-sent.tsx @@ -1,7 +1,6 @@ 'use client' import { useEffect, useState } from 'react' -import { Badge } from '@/components/ui/badge' import { Skeleton } from '@/components/ui/skeleton' import { Table, diff --git a/apps/sim/app/w/components/sidebar/sidebar.tsx b/apps/sim/app/w/components/sidebar/sidebar.tsx index 08470d1715..494340e87e 100644 --- a/apps/sim/app/w/components/sidebar/sidebar.tsx +++ b/apps/sim/app/w/components/sidebar/sidebar.tsx @@ -22,7 +22,6 @@ import { WorkspaceHeader } from './components/workspace-header/workspace-header' export function Sidebar() { useRegistryLoading() - // Initialize global keyboard shortcuts useGlobalShortcuts() const { @@ -38,6 +37,7 @@ export function Sidebar() { const [showSettings, setShowSettings] = useState(false) const [showHelp, setShowHelp] = useState(false) const [showInviteMembers, setShowInviteMembers] = useState(false) + const [isDevEnvironment, setIsDevEnvironment] = useState(false) const { mode, isExpanded, @@ -51,6 +51,10 @@ export function Sidebar() { const [isHovered, setIsHovered] = useState(false) const [explicitMouseEnter, setExplicitMouseEnter] = useState(false) + useEffect(() => { + setIsDevEnvironment(process.env.NODE_ENV === 'development') + }, []) + // Track when active workspace changes to ensure we refresh the UI useEffect(() => { if (activeWorkspaceId) { @@ -272,17 +276,19 @@ export function Sidebar() {