Pular para o conteúdo

Times

Um time junta usuários que compartilham acesso: uma empresa cliente, uma turma, uma equipe de moderação. Cada membro tem papéis dentro do time (texto livre, como editor ou financeiro), e as permissões podem apontar para o time inteiro ou só para um papel.

times.ts
import { ID, Teams } from '@owbase/web';
import { client } from './client';
const teams = new Teams(client);
// Quem cria o time vira dono (papel "owner").
const time = await teams.create({ teamId: ID.unique(), name: 'Moderação' });
// Convida por e-mail; o link do convite leva para esta página do seu app.
await teams.createMembership({ teamId: time.$id, roles: ['editor'], email: '[email protected]', url: 'https://app.exemplo.com/convite' });
// Na página /convite: o link chega com ?teamId=…&membershipId=…&userId=…&secret=…
const p = new URLSearchParams(window.location.search);
await teams.updateMembershipStatus({
teamId: p.get('teamId') ?? '',
membershipId: p.get('membershipId') ?? '',
userId: p.get('userId') ?? '',
secret: p.get('secret') ?? '',
});
const { memberships } = await teams.listMemberships({ teamId: time.$id });
console.log(memberships.map((m) => `${m.userName}: ${m.roles.join(', ')}`));
  • createMembership com email cria a participação e manda o convite na hora; ela fica pendente até a pessoa aceitar na página do url, com updateMembershipStatus. Se ela ainda não tem conta, uma é criada junto com o convite.
  • Pelo servidor (@owbase/node, escopo teams.write), createMembership com userId adiciona direto, sem convite. Com email, o servidor também adiciona direto, sem esperar o aceite.
Permissão Quem
Permission.read(Role.team('t1')) todos os membros do time t1
Permission.update(Role.team('t1', 'editor')) só os membros com o papel editor

No console, os times ficam em Autenticação → Times.