feat: user search, group members management, and fixed canvases filtering
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
import { requireAuth } from '~/server/utils/auth'
|
||||
import { prisma } from '~/server/utils/prisma'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const user = requireAuth(event)
|
||||
const id = getRouterParam(event, 'id')
|
||||
const body = await readBody(event)
|
||||
|
||||
// Проверяем права: только владелец может менять настройки доступа
|
||||
const canvas = await prisma.canvas.findUnique({
|
||||
where: { id }
|
||||
})
|
||||
|
||||
if (!canvas) {
|
||||
throw createError({ statusCode: 404, message: 'Canvas not found' })
|
||||
}
|
||||
|
||||
if (canvas.ownerId !== user.id && user.role !== 'admin') {
|
||||
throw createError({ statusCode: 403, message: 'Only owner can change settings' })
|
||||
}
|
||||
|
||||
// Обновляем поля
|
||||
const updatedCanvas = await prisma.canvas.update({
|
||||
where: { id },
|
||||
data: {
|
||||
name: body.name !== undefined ? body.name : undefined,
|
||||
isPublic: body.isPublic !== undefined ? body.isPublic : undefined,
|
||||
groupId: body.groupId !== undefined ? body.groupId : undefined,
|
||||
}
|
||||
})
|
||||
|
||||
return { success: true, canvas: updatedCanvas }
|
||||
})
|
||||
@@ -0,0 +1,28 @@
|
||||
import { requireAuth } from '~/server/utils/auth'
|
||||
import { prisma } from '~/server/utils/prisma'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
requireAuth(event)
|
||||
const query = getQuery(event).q as string
|
||||
|
||||
if (!query || query.length < 2) {
|
||||
return { users: [] }
|
||||
}
|
||||
|
||||
const users = await prisma.user.findMany({
|
||||
where: {
|
||||
OR: [
|
||||
{ username: { contains: query, mode: 'insensitive' } },
|
||||
{ email: { contains: query, mode: 'insensitive' } }
|
||||
]
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
username: true,
|
||||
email: true
|
||||
},
|
||||
take: 10
|
||||
})
|
||||
|
||||
return { users }
|
||||
})
|
||||
Reference in New Issue
Block a user