// app/workspace/[slug]/page.tsx import { redirect } from "next/navigation" import { getServerSession } from "next-auth" import { authOptions } from "@/lib/auth/config" import { prisma } from "@/lib/prisma" import Link from "next/link" import { CopyButton } from "@/components/CopyButton" interface WorkspacePageProps { params: { slug: string } } export default async function WorkspacePage({ params }: WorkspacePageProps) { const session = await getServerSession(authOptions) if (!session) { redirect("/login") } const workspace = await prisma.workspace.findUnique({ where: { slug: params.slug }, include: { employee: { select: { id: true, name: true, email: true, avatar: true } }, manager: { select: { id: true, name: true, email: true, avatar: true } }, hr: { select: { id: true, name: true, email: true, avatar: true } } } }) if (!workspace) { redirect("/workspaces") } // Verificar se o usuário tem acesso const hasAccess = workspace.employeeId === session.user.id || workspace.managerId === session.user.id || workspace.hrId === session.user.id if (!hasAccess) { redirect("/unauthorized") } // Determinar o papel do usuário const userRole = workspace.employeeId === session.user.id ? "employee" : workspace.managerId === session.user.id ? "manager" : "hr" // Buscar código de convite ativo (se for gestor) let inviteCode = null if (userRole === "manager") { const activeInvite = await prisma.invite.findFirst({ where: { workspaceId: workspace.id, status: "PENDING", expiresAt: { gt: new Date() } }, select: { token: true } }) inviteCode = activeInvite?.token } return (
Gerencie sua área de colaboração
Compartilhe este código com seu mentor para que ele possa se juntar ao workspace:
{inviteCode}