Permissões — canta-igreja
Gerado pelo Detective (Reversa) em 2026-05-11
Papéis
O sistema não possui RBAC formal. Existem dois perfis de acesso implícitos no código:
| Papel |
Descrição |
Como é identificado |
| Anônimo |
Usuário sem conta Google autenticada |
UsuarioLogadoRepository.getUsuarioLogado() retorna undefined |
| Autenticado |
Usuário com Google OAuth concluído |
UsuarioLogadoRepository.getUsuarioLogado() retorna UsuarioLogado com slug |
Não há papéis administrativos, moderadores ou permissões diferenciadas entre usuários autenticados. Toda a gestão de conteúdo (catálogo de músicas, sugestões, obras) é feita fora do app, pela equipe do canta.app.
Matriz de Permissões
| Funcionalidade |
Anônimo |
Autenticado |
Observações |
| Buscar músicas |
✅ |
✅ |
|
| Visualizar letra |
✅ |
✅ |
Keep Awake ativo |
| Favoritar música |
✅ |
✅ |
Persiste apenas localmente (SQLite) |
| Marcar como visualizada |
✅ |
✅ |
Persiste em "Visto recentemente" |
| Criar repertório |
✅ |
✅ |
Persiste apenas localmente |
| Editar repertório |
✅ |
✅ |
|
| Excluir repertório |
✅ |
✅ |
Soft-delete local |
| Duplicar repertório |
✅ |
✅ |
|
| Reordenar itens |
⛔ |
⛔ |
Desabilitado temporariamente |
| Filtrar por rótulo |
✅ |
✅ |
|
| Filtrar por livro |
✅ |
✅ |
|
| Baixar obra da Biblioteca |
✅ |
✅ |
Não requer login |
| Ver sugestões de repertório |
✅ |
✅ |
|
| Converter sugestão em repertório |
✅ |
✅ |
|
| Sincronizar sugestões |
✅ |
✅ |
|
| Ver liturgia do dia |
✅ |
✅ |
|
| Abrir player YouTube |
✅ |
✅ |
|
| Alterar configurações |
✅ |
✅ |
|
| Relatar erro em música |
✅ |
✅ |
Abre Airtable form |
| Compartilhar repertório (API) |
❌ |
✅ |
Requer Bearer token |
| Gerar folheto com slug |
❌ |
✅ |
Requer Bearer token |
| Gerar folheto Base64 |
✅ |
✅ |
Não requer login |
| Compartilhar letra por texto |
✅ |
✅ |
Compartilhamento nativo do SO |
| Importar repertório por slug URL |
✅ |
✅ |
Leitura pública |
Restrições de Dados
| Recurso |
Restrição |
Origem |
| Repertórios padrão (id=1, id=2) |
Não podem ser excluídos — tipo_repertorio = 1 |
Migration v8 |
| Catálogo de músicas |
Somente-leitura para o usuário — só atualizado via obras da Biblioteca |
Arquitetura |
| Sugestões de repertório |
Somente-leitura — o usuário converte em repertório próprio, não edita a sugestão |
SugestaoRepertorio |
| Credenciais OAuth |
Armazenadas em Keychain (nativo) ou localStorage (web) — nunca em SQLite |
CredentialsService |
Observações de Segurança
| Área |
Implementação |
Nível |
| OAuth |
PKCE (sem client_secret no app) |
🟢 Adequado |
| Token storage (nativo) |
Keychain / Android Keystore |
🟢 Seguro |
| Token storage (web) |
localStorage + fallback memória |
🟡 Aceitável (sem HttpOnly) |
| ATTACH DATABASE (web) |
Alias validado por regex ^[A-Za-z_][A-Za-z0-9_]*$ + filename ^[A-Za-z0-9._-]+$ |
🟢 Seguro |
| Strings SQL |
Parâmetros via ? (parametrized queries) |
🟢 Seguro |
| CRC32 |
Apenas para verificação de atualização, não para integridade criptográfica |
🟡 Adequado para o uso |