Zusammenarbeit im Team
Verwalten Sie Teammitglieder, Rollen und Berechtigungen in Ihrer Anwendung.
Hinweis: Dies sind Beispiel- bzw. Platzhalterinhalte zu Demonstrationszwecken.
Ermöglichen Sie Teams mit integrierten Funktionen zur Teamverwaltung eine effektive Zusammenarbeit.
Team-Konten
Die Anwendung unterstützt mandantenfähige Team-Konten, in denen mehrere Nutzer zusammenarbeiten können.
Ein Team erstellen
Nutzer können neue Team-Konten erstellen:
import { createTeamAccount } from '~/lib/teams/create-team';
const team = await createTeamAccount({
name: 'Acme Corp',
slug: 'acme-corp',
ownerId: currentUser.id,
});
Team-Workspace
Jedes Team verfügt über einen eigenen Workspace mit isolierten Daten:
- Projekte und Ressourcen
- Teamspezifische Einstellungen
- Abrechnung und Abonnement
- Aktivitätsprotokolle
Mitglieder einladen
Einladungen versenden
Laden Sie neue Mitglieder in Ihr Team ein:
import { inviteTeamMember } from '~/lib/teams/invitations';
await inviteTeamMember({
teamId: team.id,
email: 'member@example.com',
role: 'member',
});
Ablauf der Einladung
- Der Inhaber versendet eine Einladung per E-Mail
- Der Empfänger erhält eine E-Mail mit einem Einladungslink
- Der Empfänger nimmt die Einladung an
- Das Mitglied erhält Zugriff auf den Team-Workspace
Einladungen verwalten
import { PendingInvitations } from '~/components/teams/pending-invitations';
<PendingInvitations teamId={team.id} />
Rollen und Berechtigungen
Standardrollen
Inhaber
- Vollzugriff auf das Team und die Einstellungen
- Abrechnung und Abonnements verwalten
- Mitglieder einladen und entfernen
- Team löschen
Admin
- Teammitglieder verwalten
- Team-Ressourcen verwalten
- Kein Zugriff auf die Abrechnung
- Kann das Team nicht löschen
Mitglied
- Team-Ressourcen ansehen
- Eigene Inhalte erstellen und bearbeiten
- Eingeschränkter Zugriff auf die Teameinstellungen
Benutzerdefinierte Rollen
Definieren Sie benutzerdefinierte Rollen mit bestimmten Berechtigungen:
const customRole = {
name: 'Editor',
permissions: [
'read:projects',
'write:projects',
'read:members',
],
};
Berechtigungen prüfen
import { checkPermission } from '~/lib/teams/permissions';
const canEdit = await checkPermission(userId, teamId, 'write:projects');
if (!canEdit) {
throw new Error('Insufficient permissions');
}
Mitgliederverwaltung
Mitglieder auflisten
import { getTeamMembers } from '~/lib/teams/members';
const members = await getTeamMembers(teamId);
Rolle eines Mitglieds ändern
import { updateMemberRole } from '~/lib/teams/members';
await updateMemberRole({
memberId: member.id,
role: 'admin',
});
Mitglieder entfernen
import { removeMember } from '~/lib/teams/members';
await removeMember(memberId);
Teameinstellungen
Teaminformationen aktualisieren
'use client';
import { useForm } from 'react-hook-form';
import { updateTeamAction } from '../_lib/server/actions';
export function TeamSettingsForm({ team }) {
const { register, handleSubmit } = useForm({
defaultValues: {
name: team.name,
description: team.description,
},
});
const onSubmit = async (data) => {
await updateTeamAction({ teamId: team.id, ...data });
};
return (
<form onSubmit={handleSubmit(onSubmit)}>
<input {...register('name')} placeholder="Team name" />
<textarea {...register('description')} placeholder="Description" />
<button type="submit">Save Changes</button>
</form>
);
}
Team-Avatar
import { uploadTeamAvatar } from '~/lib/teams/avatar';
const avatarUrl = await uploadTeamAvatar({
teamId: team.id,
file: avatarFile,
});
Aktivitätsprotokoll
Protokollieren Sie Teamaktivitäten für mehr Transparenz:
import { logActivity } from '~/lib/teams/activity';
await logActivity({
teamId: team.id,
userId: user.id,
action: 'member_invited',
metadata: {
invitedEmail: 'new@example.com',
},
});
Aktivitäten anzeigen
import { getTeamActivity } from '~/lib/teams/activity';
const activities = await getTeamActivity(teamId, {
limit: 50,
offset: 0,
});
Teamwechsel
Ermöglichen Sie Nutzern, zwischen ihren Teams zu wechseln:
'use client';
import { useTeamAccountWorkspace } from '@kit/team-accounts/hooks/use-team-account-workspace';
export function TeamSwitcher() {
const { accounts, account } = useTeamAccountWorkspace();
return (
<select
value={account.id}
onChange={(e) => switchTeam(e.target.value)}
>
{accounts.map((team) => (
<option key={team.id} value={team.id}>
{team.name}
</option>
))}
</select>
);
}
Benachrichtigungen
Mitglied beigetreten
await createNotification({
teamId: team.id,
title: 'New Member',
message: `${user.name} joined the team`,
type: 'info',
});
Rolle geändert
await createNotification({
userId: member.userId,
title: 'Role Updated',
message: `Your role was changed to ${newRole}`,
type: 'info',
});
Best Practices
- Klare Rollenhierarchie – Definieren Sie Rollen, die für Ihren Anwendungsfall sinnvoll sind
- Prinzip der minimalen Rechte – Vergeben Sie nur die mindestens erforderlichen Berechtigungen
- Audit-Trail – Protokollieren Sie wichtige Teamaktionen
- Einfaches Onboarding – Unkomplizierter Einladungsprozess
- Self-Service – Lassen Sie Mitglieder ihre eigenen Einstellungen verwalten
- Transparente Abrechnung – Zeigen Sie Nutzung und Kosten klar an