( workspaceId: string, userId: string )
| 137 | * @returns WorkspaceAccess object with exists, hasAccess, canWrite, and workspace data |
| 138 | */ |
| 139 | export async function checkWorkspaceAccess( |
| 140 | workspaceId: string, |
| 141 | userId: string |
| 142 | ): Promise<WorkspaceAccess> { |
| 143 | const ws = await getWorkspaceWithOwner(workspaceId) |
| 144 | |
| 145 | if (!ws) { |
| 146 | return { exists: false, hasAccess: false, canWrite: false, canAdmin: false, workspace: null } |
| 147 | } |
| 148 | |
| 149 | const permission = await getEffectiveWorkspacePermission(userId, ws) |
| 150 | const hasAccess = permission !== null |
| 151 | const canWrite = permissionSatisfies(permission, 'write') |
| 152 | const canAdmin = permissionSatisfies(permission, 'admin') |
| 153 | |
| 154 | return { exists: true, hasAccess, canWrite, canAdmin, workspace: ws } |
| 155 | } |
| 156 | |
| 157 | /** |
| 158 | * Thrown when a user attempts to access a workspace they don't have access to, |
no test coverage detected