--- import DashboardLayout from '../../layouts/DashboardLayout.astro'; import Avatar from '../../components/Avatar.astro'; import Icon from '../../components/Icon.astro'; import { db } from '../../db'; import { members, users } from '../../db/schema'; import { eq } from 'drizzle-orm'; import { getCurrentTeam } from '../../lib/getCurrentTeam'; const user = Astro.locals.user; if (!user) return Astro.redirect('/login'); const userMembership = await getCurrentTeam(user, Astro.cookies.get('currentTeamId')?.value); if (!userMembership) return Astro.redirect('/dashboard'); const teamMembers = await db.select({ member: members, user: users, }) .from(members) .innerJoin(users, eq(members.userId, users.id)) .where(eq(members.organizationId, userMembership.organizationId)) .all(); const currentUserMember = teamMembers.find(m => m.user.id === user.id); const isAdmin = currentUserMember?.member.role === 'owner' || currentUserMember?.member.role === 'admin'; ---

Team Members

Manage your organization's team

{isAdmin && ( <> Settings Invite Member )}
{isAdmin && } {teamMembers.map(({ member, user: teamUser }) => ( {isAdmin && ( )} ))}
Name Email Role JoinedActions
{teamUser.name}
{teamUser.id === user.id && ( You )}
{teamUser.email} {member.role} {member.joinedAt?.toLocaleDateString() ?? 'N/A'} {teamUser.id !== user.id && member.role !== 'owner' && ( )}