import { cookies } from 'next/headers' import { getIronSession } from 'iron-session' import { SessionData, sessionOptions } from '@/lib/session' import { prisma } from '@/lib/prisma' import { RoleManager } from '@/components/settings/role-manager' import { LeaveProductButton } from '@/components/settings/leave-product-button' import { ProfileEditor } from '@/components/settings/profile-editor' import { ActivateProductButton } from '@/components/shared/activate-product-button' import Link from 'next/link' export default async function SettingsPage() { const session = await getIronSession(await cookies(), sessionOptions) const [user, userRoles, ownedProducts, memberships] = await Promise.all([ prisma.user.findUnique({ where: { id: session.userId }, select: { username: true, email: true, bio: true, bio_detail: true, avatar_data: true, updated_at: true, active_product_id: true }, }), prisma.userRole.findMany({ where: { user_id: session.userId } }), prisma.product.findMany({ where: { user_id: session.userId, archived: false }, select: { id: true, name: true }, orderBy: { name: 'asc' }, }), prisma.productMember.findMany({ where: { user_id: session.userId }, include: { product: { select: { id: true, name: true, user: { select: { username: true } } } } }, orderBy: { created_at: 'asc' }, }), ]) const currentRoles = userRoles.map(r => r.role as string) type PbEntry = | { kind: 'owner'; id: string; name: string } | { kind: 'member'; id: string; name: string; ownerUsername: string } const activeProductId = user?.active_product_id ?? null const allBacklogs: PbEntry[] = [ ...ownedProducts.map(p => ({ kind: 'owner' as const, id: p.id, name: p.name })), ...memberships.map(m => ({ kind: 'member' as const, id: m.product.id, name: m.product.name, ownerUsername: m.product.user.username, })), ] // Active product floats to the top const productBacklogs = [ ...allBacklogs.filter(pb => pb.id === activeProductId), ...allBacklogs.filter(pb => pb.id !== activeProductId), ] return (

Instellingen

Profiel

Zichtbaar voor teamleden die je toevoegen aan een product backlog.

{session.isDemo ? (

Niet beschikbaar in demo-modus.

) : ( )}

Account

Ingelogd als {user?.username ?? session.userId} {session.isDemo && (demo)}

Product Backlogs

Alle product backlogs waarbij je betrokken bent.

{!session.isDemo && ( + Nieuw product )}
{productBacklogs.length === 0 ? (

Je bent nog niet gekoppeld aan een product backlog.{' '} Maak een product aan.

) : (
    {productBacklogs.map(pb => { const isActive = pb.id === activeProductId return (
  • {pb.name} {pb.kind === 'owner' ? 'Eigenaar' : 'Developer'} {isActive && ( Actief )}
    {pb.kind === 'member' && (

    Eigenaar: {pb.ownerUsername}

    )}
    {!isActive && ( )} {pb.kind === 'member' && !session.isDemo && ( )}
  • ) })}
)}

API Tokens

Beheren →

Gebruik API tokens om Scrum4Me te koppelen aan Claude Code.

) }