feat: prisma schema, groups API, deploy workflow
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import { requireAuth } from '~/server/utils/auth'
|
||||
import { canvases, userGroups } from '~/server/utils/db'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const user = requireAuth(event)
|
||||
|
||||
// Get all canvases the user can access
|
||||
const userGroupIds = Array.from(userGroups.values())
|
||||
.filter(membership => membership.userId === user.id)
|
||||
.map(membership => membership.groupId)
|
||||
|
||||
const accessibleCanvases = Array.from(canvases.values()).filter(canvas => {
|
||||
// User can see their own canvases
|
||||
if (canvas.ownerId === user.id) return true
|
||||
// User can see public canvases
|
||||
if (canvas.isPublic) return true
|
||||
// User can see group canvases they're a member of
|
||||
if (canvas.groupId && userGroupIds.includes(canvas.groupId)) return true
|
||||
return false
|
||||
})
|
||||
|
||||
const canvasList = accessibleCanvases.map(canvas => ({
|
||||
id: canvas.id,
|
||||
name: canvas.name,
|
||||
ownerId: canvas.ownerId,
|
||||
createdAt: canvas.createdAt,
|
||||
updatedAt: canvas.updatedAt,
|
||||
isPublic: canvas.isPublic,
|
||||
groupId: canvas.groupId,
|
||||
nodeCount: canvas.nodes.length
|
||||
}))
|
||||
|
||||
return { canvases: canvasList }
|
||||
})
|
||||
Reference in New Issue
Block a user