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.
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: 'bia@exemplo.com', 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(', ')}`));Convites
Seção intitulada “Convites”createMembershipcomemailcria a participação e manda o convite na hora; ela fica pendente até a pessoa aceitar na página dourl, comupdateMembershipStatus. Se ela ainda não tem conta, uma é criada junto com o convite.- Pelo servidor (
@owbase/node, escopoteams.write),createMembershipcomuserIdadiciona direto, sem convite. Comemail, o servidor também adiciona direto, sem esperar o aceite.
Permissões por time
Seção intitulada “Permissões por time”| 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.