Usuários, casinos e papéis
O modelo de associação
Usuários e casinos são muitos-para-muitos. Um operador pode ter acesso a vários casinos com um papel diferente em cada.
O papel vive no vínculo, não no usuário, então alguém pode ser owner de um casino e viewer
de outro.
Os três papéis
| Papel | Pode |
|---|---|
owner | Tudo, inclusive associação e chaves de API |
admin | Operar o casino, mas não mudar associação |
viewer | Só leitura |
Permissões
Papéis são uma tabela, com papéis, permissões e as concessões entre eles, então o conjunto de permissões de um papel é editável. O catálogo:
| Leitura | Escrita |
|---|---|
battles.read | battles.write |
games.read | games.write |
users.read | users.write |
tenants.read | tenants.write |
roles.read | roles.write |
settings.read | settings.write |
apikeys.read | apikeys.write · menu.write |
apikeys.* é um par próprio em vez de parte de tenants.*: renomear um casino e emitir a
credencial com que o backend dele se autentica não são o mesmo ato. Admin fica com a metade de
leitura; owner fica com as duas.
Nem o nome, nem a chave.
tenant_users.role guarda a chave do papel, então renomear a chave de um papel de sistema
desautorizaria toda associação que a segura. Todo mundo com aquele papel deixaria de casar, e
nada reportaria erro. Recusar a chave torna isso irrepresentável.
Super-usuário
Um super-usuário tem toda permissão em todo casino, e é o único ator que alcança recursos com escopo de plataforma: a chave de assinatura de viewer e as janelas de lobby.
O console não ramifica por super-usuário em rotas comuns. O papel de um super-usuário é
reportado como owner, e owner tem tudo, então uma segunda ramificação por handler seria
lógica duplicada que poderia divergir.
Adicionando um operador
Pelo console, Usuários → Adicionar. O convidado ganha uma conta vinculada ao casino ativo com
o papel que você escolher.
O primeiro operador do seu casino não pode ser criado assim, porque não existe rota de registro. Essa conta é criada para você pela plataforma no onboarding, e todo operador depois dela é convidado pelo console.
Suspendendo
Suspender um usuário bloqueia o login dele.
Suspender um casino faz toda requisição S2S dele responder 403 tenant suspended, uma
resposta específica em vez de uma negativa genérica, porque o chamador é legítimo e precisa
saber que deve parar de retentar.
Ids de casino são permanentes na prática
O id aparece em eventos, webhooks, registros de auditoria e nos logs de cada casino. É um slug estável que você não vai querer renomear, então escolha na criação com isso em mente.