37 lines
953 B
TypeScript
37 lines
953 B
TypeScript
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 group = await prisma.group.findUnique({
|
|
where: { id },
|
|
include: {
|
|
members: {
|
|
include: {
|
|
user: {
|
|
select: {
|
|
id: true,
|
|
username: true,
|
|
email: true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
if (!group) {
|
|
throw createError({ statusCode: 404, message: 'Group not found' })
|
|
}
|
|
|
|
// Проверяем, имеет ли пользователь право видеть детали группы
|
|
const isMember = group.members.some(m => m.userId === user.id)
|
|
if (!group.isPublic && !isMember && user.role !== 'admin') {
|
|
throw createError({ statusCode: 403, message: 'Access denied' })
|
|
}
|
|
|
|
return { group }
|
|
})
|